On Tue, Jul 26, 2016 at 02:15:36PM +0200, [email protected] wrote:
> From: Sören Tempel <[email protected]>
> 
> If your current window is in fullscreen mode than you are able to
> trigger a few cases where the current window focus is lost. For instance
> when your current window is in fullscreen mode and you spawn a new
> window (e.g. using dmenu) the new window will be focused but you can't
> see it because the previous window is still in fullscreen mode.
> 
> For instance if you run mpv --fullscreen somevideo.mkv, invoke dmenu
> afterwards using Alt+P and start a terminal emulator than you can't see
> your terminal emulator window even though it is now the current window.
> 
> This patch attempts to fix these edge cases by either not allowing
> certain actions when the current window is fullscreen or by
> deactivating the fullscreen mode before performing certain operations.

Hey,

Nice find. I have tested your patch but think we should do it differently.

I don't think we should reset fullscreen on the current client, but instead
keep the focus on it and don't change focus to a new client while a fullscreen
one is running. Below is my suggested patch, lemme know what you think and if
it works correctly as I described:


diff --git a/dwm.c b/dwm.c
index b2bc9bd..600c9b5 100644
--- a/dwm.c
+++ b/dwm.c
@@ -1085,6 +1085,10 @@ manage(Window w, XWindowAttributes *wa)
                        (unsigned char *) &(c->win), 1);
        XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* 
some windows require this */
        setclientstate(c, NormalState);
+       if (c->mon->sel && c->mon->sel->isfullscreen) {
+               XMapWindow(dpy, c->win);
+               return;
+       }
        if (c->mon == selmon)
                unfocus(selmon->sel, 0);
        c->mon->sel = c;


-- 
Kind regards,
Hiltjo

Reply via email to