about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAcid Bong <acid-bong@cock.lt>2022-10-19 13:30:04 +0300
committerAcid Bong <acid-bong@cock.lt>2022-10-19 13:30:04 +0300
commitd106e4c852402c25c6fa9f81b286dfa747886f3b (patch)
tree06067b0be0f2878c2f7e440a7c2d461bb7c7270d
parentf44fcd4f15932c08ca0d2e1b995a4707c476a564 (diff)
downloaddwm-d106e4c852402c25c6fa9f81b286dfa747886f3b.tar.gz
personal focusonclick patch
-rw-r--r--patches/8-focusonclick-20200110-61bb8b2.diff130
1 files changed, 130 insertions, 0 deletions
diff --git a/patches/8-focusonclick-20200110-61bb8b2.diff b/patches/8-focusonclick-20200110-61bb8b2.diff
new file mode 100644
index 0000000..b6ba2bb
--- /dev/null
+++ b/patches/8-focusonclick-20200110-61bb8b2.diff
@@ -0,0 +1,130 @@
+From f44fcd4f15932c08ca0d2e1b995a4707c476a564 Mon Sep 17 00:00:00 2001
+From: Acid Bong <acid-bong@cock.lt>
+Date: Wed, 19 Oct 2022 13:28:19 +0300
+Subject: [PATCH] patch: focusonclick (my fav)
+
+---
+ config.def.h |  1 +
+ dwm.c        | 47 ++++-------------------------------------------
+ 2 files changed, 5 insertions(+), 43 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 1de3c06..eddbc03 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -9,6 +9,7 @@ static const unsigned int systrayonleft = 0;   	/* 0: systray in the right corne
+ static const unsigned int systrayspacing = 2;   /* systray spacing */
+ static const int systraypinningfailfirst = 1;   /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
+ static const int showsystray        = 1;     /* 0 means no systray */
++static const int focusonwheel       = 0;
+ static const int showbar            = 1;     /* 0 means no bar */
+ static const int topbar             = 1;     /* 0 means bottom bar */
+ static const char *fonts[]          = { "monospace:size=10" };
+diff --git a/dwm.c b/dwm.c
+index 40ac0df..412f04f 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -186,7 +186,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);
+@@ -206,7 +205,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 *c);
+@@ -284,13 +282,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,
+     [ResizeRequest] = resizerequest,
+ 	[UnmapNotify] = unmapnotify
+@@ -462,7 +458,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);
+@@ -482,8 +479,8 @@ buttonpress(XEvent *e)
+ 		else
+ 			click = ClkWinTitle;
+ 	} else if ((c = wintoclient(ev->window))) {
+-		focus(c);
+-		restack(selmon);
++		if (focusonwheel || (ev->button != Button4 && ev->button != Button5))
++			focus(c);
+ 		XAllowEvents(dpy, ReplayPointer, CurrentTime);
+ 		click = ClkClientWin;
+ 	}
+@@ -859,25 +856,6 @@ drawbars(void)
+ 		drawbar(m);
+ }
+ 
+-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)
+ {
+@@ -1257,23 +1235,6 @@ monocle(Monitor *m)
+ 		resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0);
+ }
+ 
+-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)
+ {
+-- 
+2.38.0
+