dwm-dragmfact-6.2.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-dragmfact-6.2.diff (2421B)
       ---
            1 From 17df87822b379ce47d0aba3c36c5ef0adf4a7c3e Mon Sep 17 00:00:00 2001
            2 From: Miles Alan <m@milesalan.com>
            3 Date: Sun, 8 Dec 2019 18:15:13 -0600
            4 Subject: [PATCH] Mod + Right click / drag in tiling mode to resize mfact.
            5  Works with multiple monitors.
            6 
            7 ---
            8  dwm.c | 32 +++++++++++++++++++++++---------
            9  1 file changed, 23 insertions(+), 9 deletions(-)
           10 
           11 diff --git a/dwm.c b/dwm.c
           12 index c15f679..e273803 100644
           13 --- a/dwm.c
           14 +++ b/dwm.c
           15 @@ -1911,7 +1911,16 @@ resizemouse(const Arg *arg)
           16          if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
           17                  None, cursor[CurResize]->cursor, CurrentTime) != GrabSuccess)
           18                  return;
           19 -        XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
           20 +
           21 +        if (c->isfloating || NULL == c->mon->lt[c->mon->sellt]->arrange) {
           22 +                XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
           23 +        } else {
           24 +                XWarpPointer(dpy, None, root, 0, 0, 0, 0,
           25 +                        selmon->mx + (selmon->ww * selmon->mfact),
           26 +                        selmon->my + (selmon->wh / 2)
           27 +                );
           28 +        }
           29 +
           30          do {
           31                  XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
           32                  switch(ev.type) {
           33 @@ -1927,19 +1936,24 @@ resizemouse(const Arg *arg)
           34  
           35                          nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
           36                          nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
           37 -                        if (c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww
           38 -                        && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh)
           39 -                        {
           40 -                                if (!c->isfloating && selmon->lt[selmon->sellt]->arrange
           41 -                                && (abs(nw - c->w) > snap || abs(nh - c->h) > snap))
           42 -                                        togglefloating(NULL);
           43 -                        }
           44 +
           45                          if (!selmon->lt[selmon->sellt]->arrange || c->isfloating)
           46                                  resize(c, c->x, c->y, nw, nh, 1);
           47                          break;
           48                  }
           49          } while (ev.type != ButtonRelease);
           50 -        XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
           51 +
           52 +        if (c->isfloating || NULL == c->mon->lt[c->mon->sellt]->arrange) {
           53 +                XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
           54 +        } else {
           55 +                selmon->mfact = (double) (ev.xmotion.x_root - selmon->mx) / (double) selmon->ww;
           56 +                arrange(selmon);
           57 +                XWarpPointer(dpy, None, root, 0, 0, 0, 0,
           58 +                        selmon->mx + (selmon->ww * selmon->mfact),
           59 +                        selmon->my + (selmon->wh / 2)
           60 +                );
           61 +        }
           62 +
           63          XUngrabPointer(dpy, CurrentTime);
           64          while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
           65          if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
           66 -- 
           67 2.23.0
           68