From 1af4a1e1a94c17fc3de958b74d03bc586248c8b5 Mon Sep 17 00:00:00 2001 From: c Date: Fri, 12 Jan 2024 09:14:30 -0500 Subject: Oh, were those not in there the whole time? --- patches/dwm-dragmfact-6.2.diff | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 patches/dwm-dragmfact-6.2.diff (limited to 'patches/dwm-dragmfact-6.2.diff') diff --git a/patches/dwm-dragmfact-6.2.diff b/patches/dwm-dragmfact-6.2.diff new file mode 100644 index 0000000..5ceb723 --- /dev/null +++ b/patches/dwm-dragmfact-6.2.diff @@ -0,0 +1,68 @@ +From 17df87822b379ce47d0aba3c36c5ef0adf4a7c3e Mon Sep 17 00:00:00 2001 +From: Miles Alan +Date: Sun, 8 Dec 2019 18:15:13 -0600 +Subject: [PATCH] Mod + Right click / drag in tiling mode to resize mfact. + Works with multiple monitors. + +--- + dwm.c | 32 +++++++++++++++++++++++--------- + 1 file changed, 23 insertions(+), 9 deletions(-) + +diff --git a/dwm.c b/dwm.c +index c15f679..e273803 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -1911,7 +1911,16 @@ resizemouse(const Arg *arg) + if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, + None, cursor[CurResize]->cursor, CurrentTime) != GrabSuccess) + return; +- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); ++ ++ if (c->isfloating || NULL == c->mon->lt[c->mon->sellt]->arrange) { ++ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); ++ } else { ++ XWarpPointer(dpy, None, root, 0, 0, 0, 0, ++ selmon->mx + (selmon->ww * selmon->mfact), ++ selmon->my + (selmon->wh / 2) ++ ); ++ } ++ + do { + XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); + switch(ev.type) { +@@ -1927,19 +1936,24 @@ resizemouse(const Arg *arg) + + nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1); + nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1); +- if (c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww +- && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh) +- { +- if (!c->isfloating && selmon->lt[selmon->sellt]->arrange +- && (abs(nw - c->w) > snap || abs(nh - c->h) > snap)) +- togglefloating(NULL); +- } ++ + if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) + resize(c, c->x, c->y, nw, nh, 1); + break; + } + } while (ev.type != ButtonRelease); +- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); ++ ++ if (c->isfloating || NULL == c->mon->lt[c->mon->sellt]->arrange) { ++ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); ++ } else { ++ selmon->mfact = (double) (ev.xmotion.x_root - selmon->mx) / (double) selmon->ww; ++ arrange(selmon); ++ XWarpPointer(dpy, None, root, 0, 0, 0, 0, ++ selmon->mx + (selmon->ww * selmon->mfact), ++ selmon->my + (selmon->wh / 2) ++ ); ++ } ++ + XUngrabPointer(dpy, CurrentTime); + while (XCheckMaskEvent(dpy, EnterWindowMask, &ev)); + if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) { +-- +2.23.0 + -- cgit v1.2.3