[wiki] [sites] Fix dwm warp patch and rewrite description || Winston Weinert

From: <git_AT_suckless.org>
Date: Wed, 16 Dec 2015 02:30:42 +0100

commit 8c48ad24c802e0449ad6cc374b97bbbbb35da233
Author: Winston Weinert <winston_AT_ml1.net>
Date: Tue Dec 15 19:28:28 2015 -0600

    Fix dwm warp patch and rewrite description
    
    Here are the improvements made:
    
    1. If mouse cursor is on focused window's border, it'll warp to window
    center anyway
    
    2. If topbar = 1 and mouse cursor is touching the screen's top edge,
    it'll warp to the window center anyway
    
    I additionally cleaned up a few lines of code.

diff --git a/dwm.suckless.org/patches/dwm-6.1-warp.diff b/dwm.suckless.org/patches/dwm-6.1-warp.diff
index dd758e4..c7f017c 100644
--- a/dwm.suckless.org/patches/dwm-6.1-warp.diff
+++ b/dwm.suckless.org/patches/dwm-6.1-warp.diff
_AT_@ -1,8 +1,7 @@
-diff --git a/dwm.c b/dwm.c
-index 0362114..d975c68 100644
---- a/dwm.c
-+++ b/dwm.c
-_AT_@ -227,6 +227,7 @@ static void updatewindowtype(Client *c);
+diff -ruN dwm-6.1-orig/dwm.c dwm-6.1/dwm.c
+--- dwm-6.1-orig/dwm.c 2015-11-08 16:39:37.000000000 -0600
++++ dwm-6.1/dwm.c 2015-12-14 19:17:19.656091228 -0600
+_AT_@ -227,6 +227,7 @@
  static void updatetitle(Client *c);
  static void updatewmhints(Client *c);
  static void view(const Arg *arg);
_AT_@ -10,7 +9,7 @@ index 0362114..d975c68 100644
  static Client *wintoclient(Window w);
  static Monitor *wintomon(Window w);
  static int xerror(Display *dpy, XErrorEvent *ee);
-_AT_@ -840,6 +841,7 @@ focusmon(const Arg *arg)
+_AT_@ -840,6 +841,7 @@
                                          in gedit and anjuta */
          selmon = m;
          focus(NULL);
_AT_@ -18,7 +17,7 @@ index 0362114..d975c68 100644
  }
  
  void
-_AT_@ -1384,6 +1386,8 @@ restack(Monitor *m)
+_AT_@ -1384,6 +1386,8 @@
          }
          XSync(dpy, False);
          while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
_AT_@ -27,26 +26,27 @@ index 0362114..d975c68 100644
  }
  
  void
-_AT_@ -2040,6 +2044,27 @@ view(const Arg *arg)
+_AT_@ -2040,6 +2044,28 @@
          arrange(selmon);
  }
  
 +void
 +warp(const Client *c)
 +{
-+ Window dummy;
-+ int x, y, di;
-+ unsigned int dui;
++ int x, y;
 +
 + if (!c) {
-+ XWarpPointer(dpy, None, root, 0, 0, 0, 0, selmon->wx + selmon->ww / 2, selmon->wy + selmon->wh/2);
++ XWarpPointer(dpy, None, root, 0, 0, 0, 0, selmon->wx + selmon->ww/2, selmon->wy + selmon->wh/2);
 + return;
 + }
 +
-+ XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui);
-+
-+ if ((x > c->x && y > c->y && x < c->x + c->w && y < c->y + c->h) ||
-+ (y > c->mon->by && y < c->mon->by + bh))
++ if (!getrootptr(&x, &y) ||
++ (x > c->x - c->bw &&
++ y > c->y - c->bw &&
++ x < c->x + c->w + c->bw*2 &&
++ y < c->y + c->h + c->bw*2) ||
++ (y > c->mon->by && y < c->mon->by + bh) ||
++ (c->mon->topbar && !y))
 + return;
 +
 + XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2);
diff --git a/dwm.suckless.org/patches/warp.md b/dwm.suckless.org/patches/warp.md
index c4f4d70..7167804 100644
--- a/dwm.suckless.org/patches/warp.md
+++ b/dwm.suckless.org/patches/warp.md
_AT_@ -4,14 +4,15 @@ warp
 Description
 -----------
 
-This patch warps the mouse cursor each time another window gets focused to the
-middle of the window.
+This patch warps the mouse cursor to the center of the currently focused window
+or screen when the mouse cursor is (a) on a different screen or (b) on top of a
+different window.
 
 Download
 --------
 
 * [dwm-5.9-warp.diff](dwm-5.9-warp.diff) (20111028)
-* [dwm-6.1-warp.diff](dwm-6.1-warp.diff) (20151109)
+* [dwm-6.1-warp.diff](dwm-6.1-warp.diff) (20151215)
 
 Author
 ------
_AT_@ -19,3 +20,4 @@ Author
 * Evan Gates (emg) <evan.gates_AT_gmail.com>
 * Enno Boland (Gottox)
 * Jochen Sprickerhof
+* Winston Weinert (winny) <winston_AT_ml1.net>
Received on Wed Dec 16 2015 - 02:30:42 CET

This archive was generated by hypermail 2.3.0 : Wed Dec 16 2015 - 02:36:17 CET