sites

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

commit 3ea57b8d0e0a58ab2a76c58bf3f2f338b100bb88
parent b5e2d678b6e6be43433ad64061441b2f3bb12b26
Author: Casey Fitzpatrick <kcghost@gmail.com>
Date:   Sat, 28 Jan 2023 13:37:39 -0500

[tabbed][patch][drag] add new patch to support dragging tabs

Diffstat:
Atools.suckless.org/tabbed/patches/drag/index.md | 14++++++++++++++
Atools.suckless.org/tabbed/patches/drag/tabbed-drag-20230128-41e2b8f.diff | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 97 insertions(+), 0 deletions(-)

diff --git a/tools.suckless.org/tabbed/patches/drag/index.md b/tools.suckless.org/tabbed/patches/drag/index.md @@ -0,0 +1,14 @@ +drag +==== + +Description +----------- +Support dragging tabs left and right with the mouse. + +Download +-------- +* [tabbed-drag-20230128-41e2b8f.diff](tabbed-drag-20230128-41e2b8f.diff) + +Authors +------- +* 20230128 [Casey Fitzpatrick](https://github.com/kcghost/tabbed) diff --git a/tools.suckless.org/tabbed/patches/drag/tabbed-drag-20230128-41e2b8f.diff b/tools.suckless.org/tabbed/patches/drag/tabbed-drag-20230128-41e2b8f.diff @@ -0,0 +1,83 @@ +From caf61ed5c47b32938bea4a0577f4f6953ddd1578 Mon Sep 17 00:00:00 2001 +From: Casey Fitzpatrick <kcghost@gmail.com> +Date: Fri, 27 Jan 2023 19:46:05 -0500 +Subject: [PATCH] Support draggable tabs + +--- + tabbed.c | 39 ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 38 insertions(+), 1 deletion(-) + +diff --git a/tabbed.c b/tabbed.c +index eafe28a..2e3b61a 100644 +--- a/tabbed.c ++++ b/tabbed.c +@@ -88,6 +88,7 @@ typedef struct { + + /* function declarations */ + static void buttonpress(const XEvent *e); ++static void motionnotify(const XEvent *e); + static void cleanup(void); + static void clientmessage(const XEvent *e); + static void configurenotify(const XEvent *e); +@@ -151,6 +152,7 @@ static void (*handler[LASTEvent]) (const XEvent *) = { + [KeyPress] = keypress, + [MapRequest] = maprequest, + [PropertyNotify] = propertynotify, ++ [MotionNotify] = motionnotify, + }; + static int bh, obh, wx, wy, ww, wh; + static unsigned int numlockmask; +@@ -209,6 +211,41 @@ buttonpress(const XEvent *e) + } + } + ++void ++motionnotify(const XEvent *e) ++{ ++ const XMotionEvent *ev = &e->xmotion; ++ int i, fc; ++ Arg arg; ++ ++ if (ev->y < 0 || ev->y > bh) ++ return; ++ ++ if (! (ev->state & Button1Mask)) { ++ return; ++ } ++ ++ if (((fc = getfirsttab()) > 0 && ev->x < TEXTW(before)) || ev->x < 0) ++ return; ++ ++ if (sel < 0) ++ return; ++ ++ for (i = fc; i < nclients; i++) { ++ if (clients[i]->tabx > ev->x) { ++ if (i == sel+1) { ++ arg.i = 1; ++ movetab(&arg); ++ } ++ if (i == sel-1) { ++ arg.i = -1; ++ movetab(&arg); ++ } ++ break; ++ } ++ } ++} ++ + void + cleanup(void) + { +@@ -1046,7 +1083,7 @@ setup(void) + XSelectInput(dpy, win, SubstructureNotifyMask | FocusChangeMask | + ButtonPressMask | ExposureMask | KeyPressMask | + PropertyChangeMask | StructureNotifyMask | +- SubstructureRedirectMask); ++ SubstructureRedirectMask | ButtonMotionMask); + xerrorxlib = XSetErrorHandler(xerror); + + class_hint.res_name = wmname; +-- +2.25.1 +