dmenu-mousesupport-motion-5.2.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dmenu-mousesupport-motion-5.2.diff (1380B)
---
1 diff --git a/dmenu.c b/dmenu.c
2 index 48d4980..7677401 100644
3 --- a/dmenu.c
4 +++ b/dmenu.c
5 @@ -641,6 +641,29 @@ buttonpress(XEvent *e)
6 }
7 }
8
9 +static void
10 +motionevent(XButtonEvent *ev)
11 +{
12 + struct item *it;
13 + int xy, ev_xy;
14 +
15 + if (ev->window != win || matches == 0)
16 + return;
17 +
18 + xy = lines > 0 ? bh : inputw + promptw + TEXTW("<");
19 + ev_xy = lines > 0 ? ev->y : ev->x;
20 + for (it = curr; it && it != next; it = it->right) {
21 + int wh = lines > 0 ? bh : textw_clamp(it->text, mw - xy - TEXTW(">"));
22 + if (ev_xy >= xy && ev_xy < (xy + wh)) {
23 + sel = it;
24 + calcoffsets();
25 + drawmenu();
26 + break;
27 + }
28 + xy += wh;
29 + }
30 +}
31 +
32 static void
33 paste(void)
34 {
35 @@ -702,6 +725,9 @@ run(void)
36 case ButtonPress:
37 buttonpress(&ev);
38 break;
39 + case MotionNotify:
40 + motionevent(&ev.xbutton);
41 + break;
42 case Expose:
43 if (ev.xexpose.count == 0)
44 drw_map(drw, win, 0, 0, mw, mh);
45 @@ -800,7 +826,7 @@ setup(void)
46 swa.override_redirect = True;
47 swa.background_pixel = scheme[SchemeNorm][ColBg].pixel;
48 swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask |
49 - ButtonPressMask;
50 + ButtonPressMask | PointerMotionMask;
51 win = XCreateWindow(dpy, parentwin, x, y, mw, mh, 0,
52 CopyFromParent, CopyFromParent, CopyFromParent,
53 CWOverrideRedirect | CWBackPixel | CWEventMask, &swa);