aboutsummaryrefslogtreecommitdiffstats
path: root/menu.c
diff options
context:
space:
mode:
authorokan2011-03-22 13:50:40 +0000
committerokan2011-03-22 13:50:40 +0000
commit5863e7ed29e7d2d719f4c2119e8b1edb0eef1a01 (patch)
treedb4dd66b25041410f1c6ef9f5df8a32743478073 /menu.c
parentadaa4de0e92ee3b42c3fd00f4a4b21da1557a20e (diff)
downloadcwm-5863e7ed29e7d2d719f4c2119e8b1edb0eef1a01.tar.gz
warp the pointer back, iff we don't move the mouse, once we are done
with the menu; idea and initial from Sviatoslav Chagaev. discussion with and ok oga@
Diffstat (limited to 'menu.c')
-rw-r--r--menu.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/menu.c b/menu.c
index 1771cc0..e757665 100644
--- a/menu.c
+++ b/menu.c
@@ -97,6 +97,7 @@ menu_filter(struct screen_ctx *sc, struct menu_q *menuq, char *prompt,
XEvent e;
Window focuswin;
int evmask, focusrevert;
+ int xsave, ysave, xcur, ycur;
TAILQ_INIT(&resultq);
@@ -104,6 +105,9 @@ menu_filter(struct screen_ctx *sc, struct menu_q *menuq, char *prompt,
xu_ptr_getpos(sc->rootwin, &mc.x, &mc.y);
+ xsave = mc.x;
+ ysave = mc.y;
+
if (prompt == NULL) {
evmask = MenuMask;
mc.promptstr[0] = '\0';
@@ -177,6 +181,10 @@ out:
}
XSetInputFocus(X_Dpy, focuswin, focusrevert, CurrentTime);
+ /* restore if user didn't move */
+ xu_ptr_getpos(sc->rootwin, &xcur, &ycur);
+ if (xcur == mc.x && ycur == mc.y)
+ xu_ptr_setpos(sc->rootwin, xsave, ysave);
xu_ptr_ungrab();
XUnmapWindow(X_Dpy, sc->menuwin);