]> Dogcows Code - chaz/openbox/commitdiff
ignore crossing events while an interactive grab is going on.
authorDana Jansens <danakj@orodu.net>
Sun, 22 Apr 2007 02:12:32 +0000 (02:12 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 22 Apr 2007 02:12:32 +0000 (02:12 +0000)
when a menu is open, use the crossing events for the menu only.

openbox/event.c
openbox/grab.c

index 7c85e8429d8c5f7c94f5251fa44f7c9e0df20c80..1f5bae13287b6427cc29cc0b2e17dcc1fc33db89 100644 (file)
@@ -387,9 +387,7 @@ static gboolean event_ignore(XEvent *e, ObClient *client)
     switch(e->type) {
     case EnterNotify:
     case LeaveNotify:
-        if (e->xcrossing.detail == NotifyInferior)
-            return TRUE;
-        break;
+        return keyboard_interactively_grabbed();
     case FocusIn:
     case FocusOut:
         /* I don't think this should ever happen with our event masks, but
@@ -473,7 +471,13 @@ static void event_process(const XEvent *ec, gpointer data)
             ed->ignored = FALSE;
 
     /* deal with it in the kernel */
-    if (group)
+
+    if (menu_frame_visible &&
+        (e->type == EnterNotify || e->type == LeaveNotify))
+    {
+        /* crossing events for menu */
+        event_handle_menu(e);
+    } else if (group)
         event_handle_group(group, e);
     else if (client)
         event_handle_client(client, e);
@@ -506,11 +510,6 @@ static void event_process(const XEvent *ec, gpointer data)
         xerror_set_ignore(FALSE);
     }
 
-    /* crossing events for menu */
-    if (e->type == EnterNotify || e->type == LeaveNotify)
-        if (menu_frame_visible)
-            event_handle_menu(e);
-
     /* user input (action-bound) events */
     if (e->type == ButtonPress || e->type == ButtonRelease ||
         e->type == MotionNotify || e->type == KeyPress ||
index a8a6200efa246b62e12bce1192ac90427789b37d..9b19906a340b7289a20f7a0256a38dbb8dec02e7 100644 (file)
@@ -72,7 +72,7 @@ gboolean grab_keyboard(gboolean grab)
     if (grab) {
         if (kgrabs++ == 0) {
             ret = XGrabKeyboard(ob_display, RootWindow(ob_display, ob_screen),
-                                FALSE, GrabModeAsync, GrabModeAsync,
+                                False, GrabModeAsync, GrabModeAsync,
                                 event_curtime) == Success;
             if (!ret)
                 --kgrabs;
This page took 0.026309 seconds and 4 git commands to generate.