summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorbakkeby <[email protected]>2020-09-10 09:41:00 +0200
committerbakkeby <[email protected]>2020-09-10 09:41:00 +0200
commitc257e2e390e40f45a07686afe7676f5a32e691a8 (patch)
tree89fb0a3184e915dfaf4043524bb54ee956cd3d10
parent2e314578eda86bb7c29244b47038a7151b2805fa (diff)
downloaddwm-flexipatch-c257e2e390e40f45a07686afe7676f5a32e691a8.tar.gz
dwm-flexipatch-c257e2e390e40f45a07686afe7676f5a32e691a8.zip
fakefullscreen: prevent focus from drifting away from client when going from fullscreen to fake fullscreen
-rw-r--r--dwm.c15
-rw-r--r--patch/fakefullscreenclient.c52
2 files changed, 44 insertions, 23 deletions
diff --git a/dwm.c b/dwm.c
index 50c0703..907b190 100644
--- a/dwm.c
+++ b/dwm.c
@@ -2494,7 +2494,13 @@ resizeclient(Client *c, int x, int y, int w, int h)
#if MONOCLE_LAYOUT
|| &monocle == c->mon->lt[c->mon->sellt]->arrange
#endif // MONOCLE_LAYOUT
- ) && !c->isfullscreen && !c->isfloating
+ )
+ #if FAKEFULLSCREEN_CLIENT_PATCH
+ && (c->fakefullscreen == 1 || !c->isfullscreen) && c->fakefullscreen
+ #else
+ && !c->isfullscreen
+ #endif // FAKEFULLSCREEN_CLIENT_PATCH
+ && !c->isfloating
&& c->mon->lt[c->mon->sellt]->arrange) {
c->w = wc.width += c->bw * 2;
c->h = wc.height += c->bw * 2;
@@ -2503,7 +2509,14 @@ resizeclient(Client *c, int x, int y, int w, int h)
#endif // NOBORDER_PATCH
XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
configure(c);
+ #if FAKEFULLSCREEN_CLIENT_PATCH
+ if (c->fakefullscreen == 1)
+ XSync(dpy, True);
+ else
+ XSync(dpy, False);
+ #else
XSync(dpy, False);
+ #endif // FAKEFULLSCREEN_CLIENT_PATCH
}
void
diff --git a/patch/fakefullscreenclient.c b/patch/fakefullscreenclient.c
index 8805c4b..bb88665 100644
--- a/patch/fakefullscreenclient.c
+++ b/patch/fakefullscreenclient.c
@@ -1,27 +1,35 @@
void
togglefakefullscreen(const Arg *arg)
{
- Client *c = selmon->sel;
- if (!c)
- return;
+ Client *c = selmon->sel;
+ if (!c)
+ return;
- if (c->fakefullscreen) {
- if (c->isfullscreen)
- c->fakefullscreen = 0;
- else
- c->isfullscreen = 0;
- } else {
- if (c->isfullscreen) {
- c->isfloating = c->oldstate;
- c->bw = c->oldbw;
- c->x = c->oldx;
- c->y = c->oldy;
- c->w = c->oldw;
- c->h = c->oldh;
- resizeclient(c, c->x, c->y, c->w, c->h);
- }
- c->fakefullscreen = 1;
- c->isfullscreen = 0;
- }
- setfullscreen(c, !c->isfullscreen);
+ if (c->fakefullscreen) {
+ if (c->isfullscreen) {
+ if (c->isfloating && c->fakefullscreen == 1) {
+ c->oldstate = c->isfloating;
+ c->oldx = c->x;
+ c->oldy = c->y;
+ c->oldw = c->w;
+ c->oldh = c->h;
+ }
+ c->fakefullscreen = 0;
+ }
+ else
+ c->isfullscreen = 0;
+ } else {
+ c->fakefullscreen = 1;
+ if (c->isfullscreen) {
+ c->isfloating = c->oldstate;
+ c->bw = c->oldbw;
+ c->x = c->oldx;
+ c->y = c->oldy;
+ c->w = c->oldw;
+ c->h = c->oldh;
+ resizeclient(c, c->x, c->y, c->w, c->h);
+ }
+ c->isfullscreen = 0;
+ }
+ setfullscreen(c, !c->isfullscreen);
} \ No newline at end of file