Introduction
Introduction Statistics Contact Development Disclaimer Help
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
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.