diff options
Diffstat (limited to '')
| -rw-r--r-- | dwl.c | 11 | 
1 files changed, 11 insertions, 0 deletions
@@ -96,6 +96,7 @@ typedef struct {  	struct wl_listener map;  	struct wl_listener unmap;  	struct wl_listener destroy; +	struct wl_listener fullscreen;  	struct wlr_box geom;  /* layout-relative, includes border */  	Monitor *mon;  #ifdef XWAYLAND @@ -192,6 +193,7 @@ static void createxdeco(struct wl_listener *listener, void *data);  static void cursorframe(struct wl_listener *listener, void *data);  static void destroynotify(struct wl_listener *listener, void *data);  static void destroyxdeco(struct wl_listener *listener, void *data); +static void fullscreenotify(struct wl_listener *listener, void *data);  static Monitor *dirtomon(int dir);  static void focusclient(Client *old, Client *c, int lift);  static void focusmon(const Arg *arg); @@ -598,6 +600,9 @@ createnotify(struct wl_listener *listener, void *data)  	wl_signal_add(&xdg_surface->events.unmap, &c->unmap);  	c->destroy.notify = destroynotify;  	wl_signal_add(&xdg_surface->events.destroy, &c->destroy); + +	wl_signal_add(&xdg_surface->toplevel->events.request_fullscreen, &c->fullscreen); +	c->fullscreen.notify = fullscreenotify;  }  void @@ -664,6 +669,12 @@ destroyxdeco(struct wl_listener *listener, void *data)  	free(d);  } +void +fullscreenotify(struct wl_listener *listener, void *data) { +	Client *c = wl_container_of(listener, c, fullscreen); +	wlr_xdg_toplevel_set_fullscreen(c->surface.xdg, true); +} +  Monitor *  dirtomon(int dir)  {  | 
