itDo not select any entry when moving outside the window - xmenu - drop-down menu for X11 Err z3bra.org 70 hgit clone git://git.z3bra.org/xmenu.git URL:git://git.z3bra.org/xmenu.git z3bra.org 70 1Log /scm/xmenu/log.gph z3bra.org 70 1Files /scm/xmenu/files.gph z3bra.org 70 1Refs /scm/xmenu/refs.gph z3bra.org 70 i--- Err z3bra.org 70 1commit 72ba8a895a8f50ca3cd6ce21688683d3e421114c /scm/xmenu/commit/72ba8a895a8f50ca3cd6ce21688683d3e421114c.gph z3bra.org 70 1parent 3d49be3451b8f2caa0e1df5ad23af9791fb5a5b3 /scm/xmenu/commit/3d49be3451b8f2caa0e1df5ad23af9791fb5a5b3.gph z3bra.org 70 hAuthor: Willy Goiffon URL:mailto:dev@z3bra.org z3bra.org 70 iDate: Wed, 20 Nov 2019 08:37:03 +0100 Err z3bra.org 70 i Err z3bra.org 70 iDo not select any entry when moving outside the window Err z3bra.org 70 i Err z3bra.org 70 iDiffstat: Err z3bra.org 70 i M xmenu.c | 16 +++++++++++++++- Err z3bra.org 70 i Err z3bra.org 70 i1 file changed, 15 insertions(+), 1 deletion(-) Err z3bra.org 70 i--- Err z3bra.org 70 1diff --git a/xmenu.c b/xmenu.c /scm/xmenu/file/xmenu.c.gph z3bra.org 70 it@@ -111,10 +111,10 @@ main(int argc, char *argv[]) Err z3bra.org 70 i val[0] = background; Err z3bra.org 70 i val[1] = XCB_EVENT_MASK_EXPOSURE Err z3bra.org 70 i | XCB_EVENT_MASK_KEY_PRESS Err z3bra.org 70 i+ | XCB_EVENT_MASK_ENTER_WINDOW Err z3bra.org 70 i | XCB_EVENT_MASK_LEAVE_WINDOW Err z3bra.org 70 i | XCB_EVENT_MASK_BUTTON_PRESS Err z3bra.org 70 i | XCB_EVENT_MASK_BUTTON_RELEASE Err z3bra.org 70 i- | XCB_EVENT_MASK_BUTTON_MOTION Err z3bra.org 70 i | XCB_EVENT_MASK_POINTER_MOTION Err z3bra.org 70 i | XCB_EVENT_MASK_STRUCTURE_NOTIFY; Err z3bra.org 70 i Err z3bra.org 70 it@@ -166,6 +166,20 @@ main(int argc, char *argv[]) Err z3bra.org 70 i current = last = -1; Err z3bra.org 70 i break; Err z3bra.org 70 i case XCB_MOTION_NOTIFY: Err z3bra.org 70 i+ /* Err z3bra.org 70 i+ * in some special cases, MOTION events can be Err z3bra.org 70 i+ * reported in the window when the pointer is Err z3bra.org 70 i+ * actually outside. For example when pressing Err z3bra.org 70 i+ * mouse button inside the window and the moving Err z3bra.org 70 i+ * out while holding it. Err z3bra.org 70 i+ * When don't want to select an entry in such Err z3bra.org 70 i+ * cases, so we must check first that the pointer Err z3bra.org 70 i+ * is actually inside the window Err z3bra.org 70 i+ */ Err z3bra.org 70 i+ if (((xcb_motion_notify_event_t *)ev)->event_x > width Err z3bra.org 70 i+ || ((xcb_motion_notify_event_t *)ev)->event_y > height) Err z3bra.org 70 i+ break; Err z3bra.org 70 i+ Err z3bra.org 70 i current = nent * (((xcb_motion_notify_event_t *)ev)->event_y * 1.0 / height); Err z3bra.org 70 i hilight(wid, 0, (height/nent) * last, width, height/nent); Err z3bra.org 70 i hilight(wid, 0, (height/nent) * current, width, height/nent); Err z3bra.org 70 .