aboutsummaryrefslogtreecommitdiff
path: root/patches/dwm-dragmfact-6.2.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/dwm-dragmfact-6.2.diff')
-rw-r--r--patches/dwm-dragmfact-6.2.diff68
1 files changed, 68 insertions, 0 deletions
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 <m@milesalan.com>
+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
+