sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 61bee804319949311e98114433bd138bdf3641e1
parent d5698a6cd0d1c53b753486192e8d29cebccbdba6
Author: Markus Teich <markus.teich@stusta.mhn.de>
Date:   Wed,  4 Jan 2017 17:53:37 +0100

update focusonclick

Diffstat:
Adwm.suckless.org/patches/dwm-focusonclick-bb3bd6f.diff | 136+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdwm.suckless.org/patches/focusonclick.md | 2++
2 files changed, 138 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/dwm-focusonclick-bb3bd6f.diff b/dwm.suckless.org/patches/dwm-focusonclick-bb3bd6f.diff @@ -0,0 +1,136 @@ +commit da0e506c6bf3a01d240904f53ae5cbd7c424ebf5 +Author: Markus Teich <markus.teich@stusta.mhn.de> +Date: Thu Dec 22 03:16:35 2016 +0100 + + focusonclick + +diff --git a/config.def.h b/config.def.h +index ab00f4c..897e852 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -5,6 +5,7 @@ static const unsigned int borderpx = 1; /* border pixel of windows */ + static const unsigned int snap = 32; /* snap pixel */ + static const int showbar = 1; /* 0 means no bar */ + static const int topbar = 1; /* 0 means bottom bar */ ++static const int focusonwheel = 0; + static const char *fonts[] = { "monospace:size=10" }; + static const char dmenufont[] = "monospace:size=10"; + static const char col_gray1[] = "#222222"; +diff --git a/dwm.c b/dwm.c +index 7cd8d18..4697618 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -164,7 +164,6 @@ static void detachstack(Client *c); + static Monitor *dirtomon(int dir); + static void drawbar(Monitor *m); + static void drawbars(void); +-static void enternotify(XEvent *e); + static void expose(XEvent *e); + static void focus(Client *c); + static void focusin(XEvent *e); +@@ -182,7 +181,6 @@ static void manage(Window w, XWindowAttributes *wa); + static void mappingnotify(XEvent *e); + static void maprequest(XEvent *e); + static void monocle(Monitor *m); +-static void motionnotify(XEvent *e); + static void movemouse(const Arg *arg); + static Client *nexttiled(Client *c); + static void pop(Client *); +@@ -252,13 +250,11 @@ static void (*handler[LASTEvent]) (XEvent *) = { + [ConfigureRequest] = configurerequest, + [ConfigureNotify] = configurenotify, + [DestroyNotify] = destroynotify, +- [EnterNotify] = enternotify, + [Expose] = expose, + [FocusIn] = focusin, + [KeyPress] = keypress, + [MappingNotify] = mappingnotify, + [MapRequest] = maprequest, +- [MotionNotify] = motionnotify, + [PropertyNotify] = propertynotify, + [UnmapNotify] = unmapnotify + }; +@@ -427,7 +423,8 @@ buttonpress(XEvent *e) + + click = ClkRootWin; + /* focus monitor if necessary */ +- if ((m = wintomon(ev->window)) && m != selmon) { ++ if ((m = wintomon(ev->window)) && m != selmon ++ && (focusonwheel || (ev->button != Button4 && ev->button != Button5))) { + unfocus(selmon->sel, 1); + selmon = m; + focus(NULL); +@@ -447,7 +444,9 @@ buttonpress(XEvent *e) + else + click = ClkWinTitle; + } else if ((c = wintoclient(ev->window))) { +- focus(c); ++ if (focusonwheel || (ev->button != Button4 && ev->button != Button5)) ++ focus(c); ++ XAllowEvents(dpy, ReplayPointer, CurrentTime); + click = ClkClientWin; + } + for (i = 0; i < LENGTH(buttons); i++) +@@ -755,25 +754,6 @@ drawbars(void) + } + + void +-enternotify(XEvent *e) +-{ +- Client *c; +- Monitor *m; +- XCrossingEvent *ev = &e->xcrossing; +- +- if ((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) +- return; +- c = wintoclient(ev->window); +- m = c ? c->mon : wintomon(ev->window); +- if (m != selmon) { +- unfocus(selmon->sel, 1); +- selmon = m; +- } else if (!c || c == selmon->sel) +- return; +- focus(c); +-} +- +-void + expose(XEvent *e) + { + Monitor *m; +@@ -945,10 +925,10 @@ grabbuttons(Client *c, int focused) + XGrabButton(dpy, buttons[i].button, + buttons[i].mask | modifiers[j], + c->win, False, BUTTONMASK, +- GrabModeAsync, GrabModeSync, None, None); ++ GrabModeSync, GrabModeSync, None, None); + } else + XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, +- BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); ++ BUTTONMASK, GrabModeSync, GrabModeSync, None, None); + } + } + +@@ -1123,23 +1103,6 @@ monocle(Monitor *m) + } + + void +-motionnotify(XEvent *e) +-{ +- static Monitor *mon = NULL; +- Monitor *m; +- XMotionEvent *ev = &e->xmotion; +- +- if (ev->window != root) +- return; +- if ((m = recttomon(ev->x_root, ev->y_root, 1, 1)) != mon && mon) { +- unfocus(selmon->sel, 1); +- selmon = m; +- focus(NULL); +- } +- mon = m; +-} +- +-void + movemouse(const Arg *arg) + { + int x, y, ocx, ocy, nx, ny; diff --git a/dwm.suckless.org/patches/focusonclick.md b/dwm.suckless.org/patches/focusonclick.md @@ -6,6 +6,7 @@ ## Download + * [dwm-focusonclick-bb3bd6f.diff](dwm-focusonclick-bb3bd6f.diff) (2017-01-04) * [dwm-focusonclick-6.0.diff](dwm-focusonclick-6.0.diff) (2012-11-24) * [dwm-git-20100321-focusonclick.diff](historical/dwm-git-20100321-focusonclick.diff) @@ -15,5 +16,6 @@ * Wolfgang S. - ezzieyguywuf at gmail period com * Eric Pruitt - added option to disable focus changing with the scroll wheel * [Alessandro Di Martino][1] - Maintainer of the 6.0 version. + * Markus Teich - Update and fix [1]: http://www.alessandrodimartino.com