tabbed-drag-20230128-41e2b8f.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
tabbed-drag-20230128-41e2b8f.diff (1981B) | |
--- | |
1 From caf61ed5c47b32938bea4a0577f4f6953ddd1578 Mon Sep 17 00:00:00 2001 | |
2 From: Casey Fitzpatrick <[email protected]> | |
3 Date: Fri, 27 Jan 2023 19:46:05 -0500 | |
4 Subject: [PATCH] Support draggable tabs | |
5 | |
6 --- | |
7 tabbed.c | 39 ++++++++++++++++++++++++++++++++++++++- | |
8 1 file changed, 38 insertions(+), 1 deletion(-) | |
9 | |
10 diff --git a/tabbed.c b/tabbed.c | |
11 index eafe28a..2e3b61a 100644 | |
12 --- a/tabbed.c | |
13 +++ b/tabbed.c | |
14 @@ -88,6 +88,7 @@ typedef struct { | |
15 | |
16 /* function declarations */ | |
17 static void buttonpress(const XEvent *e); | |
18 +static void motionnotify(const XEvent *e); | |
19 static void cleanup(void); | |
20 static void clientmessage(const XEvent *e); | |
21 static void configurenotify(const XEvent *e); | |
22 @@ -151,6 +152,7 @@ static void (*handler[LASTEvent]) (const XEvent *) =… | |
23 [KeyPress] = keypress, | |
24 [MapRequest] = maprequest, | |
25 [PropertyNotify] = propertynotify, | |
26 + [MotionNotify] = motionnotify, | |
27 }; | |
28 static int bh, obh, wx, wy, ww, wh; | |
29 static unsigned int numlockmask; | |
30 @@ -209,6 +211,41 @@ buttonpress(const XEvent *e) | |
31 } | |
32 } | |
33 | |
34 +void | |
35 +motionnotify(const XEvent *e) | |
36 +{ | |
37 + const XMotionEvent *ev = &e->xmotion; | |
38 + int i, fc; | |
39 + Arg arg; | |
40 + | |
41 + if (ev->y < 0 || ev->y > bh) | |
42 + return; | |
43 + | |
44 + if (! (ev->state & Button1Mask)) { | |
45 + return; | |
46 + } | |
47 + | |
48 + if (((fc = getfirsttab()) > 0 && ev->x < TEXTW(before)) || ev->… | |
49 + return; | |
50 + | |
51 + if (sel < 0) | |
52 + return; | |
53 + | |
54 + for (i = fc; i < nclients; i++) { | |
55 + if (clients[i]->tabx > ev->x) { | |
56 + if (i == sel+1) { | |
57 + arg.i = 1; | |
58 + movetab(&arg); | |
59 + } | |
60 + if (i == sel-1) { | |
61 + arg.i = -1; | |
62 + movetab(&arg); | |
63 + } | |
64 + break; | |
65 + } | |
66 + } | |
67 +} | |
68 + | |
69 void | |
70 cleanup(void) | |
71 { | |
72 @@ -1046,7 +1083,7 @@ setup(void) | |
73 XSelectInput(dpy, win, SubstructureNotifyMask | FocusChangeMask… | |
74 ButtonPressMask | ExposureMask | KeyPressMask | | |
75 PropertyChangeMask | StructureNotifyMask | | |
76 - SubstructureRedirectMask); | |
77 + SubstructureRedirectMask | ButtonMotionMask); | |
78 xerrorxlib = XSetErrorHandler(xerror); | |
79 | |
80 class_hint.res_name = wmname; | |
81 -- | |
82 2.25.1 | |
83 |