diff options
| author | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-11-11 23:27:58 -0600 | 
|---|---|---|
| committer | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-12-02 10:09:50 -0600 | 
| commit | eaf8a216037e6eb60170a24fe7c02b615a20aa72 (patch) | |
| tree | e9cf3f53fcf22e1b56ef86b14db6d3d39104b0b4 /dwl.c | |
| parent | f929eaef1e15c2624de20cdcb0e348e6cab21152 (diff) | |
unset fullscreen when mapping a client in the same monitor
Fixes: https://github.com/djpohly/dwl/issues/327
Diffstat (limited to '')
| -rw-r--r-- | dwl.c | 15 | 
1 files changed, 9 insertions, 6 deletions
| @@ -1329,7 +1329,8 @@ void  mapnotify(struct wl_listener *listener, void *data)  {  	/* Called when the surface is mapped, or ready to display on-screen. */ -	Client *p, *c = wl_container_of(listener, c, map); +	Client *p, *w, *c = wl_container_of(listener, c, map); +	Monitor *m;  	int i;  	/* Create scene tree for this client and its border */ @@ -1357,7 +1358,7 @@ mapnotify(struct wl_listener *listener, void *data)  			focusclient(c, 1);  			exclusive_focus = c;  		} -		return; +		goto unset_fullscreen;  	}  #endif @@ -1392,6 +1393,12 @@ mapnotify(struct wl_listener *listener, void *data)  	printstatus();  	c->mon->un_map = 1; + +unset_fullscreen: +	m = c->mon ? c->mon : xytomon(c->geom.x, c->geom.y); +	wl_list_for_each(w, &clients, link) +		if (w != c && w->isfullscreen && VISIBLEON(w, m)) +			setfullscreen(w, 0);  }  void @@ -2501,10 +2508,6 @@ createnotifyx11(struct wl_listener *listener, void *data)  {  	struct wlr_xwayland_surface *xsurface = data;  	Client *c; -	/* TODO: why we unset fullscreen when a xwayland client is created? */ -	wl_list_for_each(c, &clients, link) -		if (c->isfullscreen && VISIBLEON(c, c->mon)) -			setfullscreen(c, 0);  	/* Allocate a Client for this surface */  	c = xsurface->data = ecalloc(1, sizeof(*c)); | 
