diff options
| author | bakkeby <[email protected]> | 2020-08-20 15:31:09 +0200 |
|---|---|---|
| committer | bakkeby <[email protected]> | 2020-08-20 15:31:09 +0200 |
| commit | ef287c46cdceac27614a1b117f80a140ecafc40d (patch) | |
| tree | 591eac39b4a144fb505da07ab683bdd3e03bf2a6 | |
| parent | a085c788e313db693d35feefe1f6dfa1e5daf440 (diff) | |
| download | dwm-flexipatch-ef287c46cdceac27614a1b117f80a140ecafc40d.tar.gz dwm-flexipatch-ef287c46cdceac27614a1b117f80a140ecafc40d.zip | |
losefullscreen: minor improvements to keep fullscreen while moving focus to another monitor
| -rw-r--r-- | dwm.c | 31 |
1 files changed, 29 insertions, 2 deletions
@@ -1647,6 +1647,9 @@ void enternotify(XEvent *e) { Client *c; + #if LOSEFULLSCREEN_PATCH + Client *sel; + #endif // LOSEFULLSCREEN_PATCH Monitor *m; XCrossingEvent *ev = &e->xcrossing; @@ -1655,8 +1658,14 @@ enternotify(XEvent *e) c = wintoclient(ev->window); m = c ? c->mon : wintomon(ev->window); if (m != selmon) { + #if LOSEFULLSCREEN_PATCH + sel = selmon->sel; + selmon = m; + unfocus(sel, 1); + #else unfocus(selmon->sel, 1); selmon = m; + #endif // LOSEFULLSCREEN_PATCH } else if (!c || c == selmon->sel) return; focus(c); @@ -1719,13 +1728,22 @@ void focusmon(const Arg *arg) { Monitor *m; + #if LOSEFULLSCREEN_PATCH + Client *sel; + #endif // LOSEFULLSCREEN_PATCH if (!mons->next) return; if ((m = dirtomon(arg->i)) == selmon) return; + #if LOSEFULLSCREEN_PATCH + sel = selmon->sel; + selmon = m; + unfocus(sel, 0); + #else unfocus(selmon->sel, 0); selmon = m; + #endif // LOSEFULLSCREEN_PATCH focus(NULL); #if WARP_PATCH warp(selmon->sel); @@ -2173,13 +2191,22 @@ motionnotify(XEvent *e) { static Monitor *mon = NULL; Monitor *m; + #if LOSEFULLSCREEN_PATCH + Client *sel; + #endif // LOSEFULLSCREEN_PATCH XMotionEvent *ev = &e->xmotion; if (ev->window != root) return; if ((m = recttomon(ev->x_root, ev->y_root, 1, 1)) != mon && mon) { + #if LOSEFULLSCREEN_PATCH + sel = selmon->sel; + selmon = m; + unfocus(sel, 1); + #else unfocus(selmon->sel, 1); selmon = m; + #endif // LOSEFULLSCREEN_PATCH focus(NULL); } mon = m; @@ -3462,10 +3489,10 @@ unfocus(Client *c, int setfocus) #endif // SWAPFOCUS_PATCH #if LOSEFULLSCREEN_PATCH #if !FAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH - if (c->isfullscreen && !c->fakefullscreen && ISVISIBLE(c)) + if (c->isfullscreen && !c->fakefullscreen && ISVISIBLE(c) && c->mon == selmon) setfullscreen(c, 0); #else - if (c->isfullscreen && ISVISIBLE(c)) + if (c->isfullscreen && ISVISIBLE(c) && c->mon == selmon) setfullscreen(c, 0); #endif // FAKEFULLSCREEN_CLIENT_PATCH #endif // LOSEFULLSCREEN_PATCH |
