dont need to swallow enter events on ungrab cuz we just ignore them all now
This commit is contained in:
parent
d5f9df0845
commit
a43303bdcb
1 changed files with 2 additions and 30 deletions
|
@ -80,35 +80,6 @@ gboolean grab_pointer(gboolean grab, ObCursor cur)
|
||||||
} else if (pgrabs > 0) {
|
} else if (pgrabs > 0) {
|
||||||
if (--pgrabs == 0) {
|
if (--pgrabs == 0) {
|
||||||
XUngrabPointer(ob_display, event_lasttime);
|
XUngrabPointer(ob_display, event_lasttime);
|
||||||
|
|
||||||
/* ignore all enter events caused by ungrabbing the pointer */
|
|
||||||
{
|
|
||||||
GSList *saved = NULL, *it;
|
|
||||||
XEvent *e;
|
|
||||||
guint n = 0;
|
|
||||||
|
|
||||||
XSync(ob_display, FALSE);
|
|
||||||
|
|
||||||
/* count the events */
|
|
||||||
while (TRUE) {
|
|
||||||
e = g_new(XEvent, 1);
|
|
||||||
if (XCheckTypedEvent(ob_display, EnterNotify, e)) {
|
|
||||||
saved = g_slist_append(saved, e);
|
|
||||||
++n;
|
|
||||||
} else {
|
|
||||||
g_free(e);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* put the events back */
|
|
||||||
for (it = saved; it; it = g_slist_next(it)) {
|
|
||||||
XPutBackEvent(ob_display, it->data);
|
|
||||||
g_free(it->data);
|
|
||||||
}
|
|
||||||
g_slist_free(saved);
|
|
||||||
/* ignore the events */
|
|
||||||
event_ignore_enter_focus(n);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -128,8 +99,9 @@ gboolean grab_pointer_window(gboolean grab, ObCursor cur, Window win)
|
||||||
else
|
else
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
} else if (pgrabs > 0) {
|
} else if (pgrabs > 0) {
|
||||||
if (--pgrabs == 0)
|
if (--pgrabs == 0) {
|
||||||
XUngrabPointer(ob_display, event_lasttime);
|
XUngrabPointer(ob_display, event_lasttime);
|
||||||
|
}
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue