]> Dogcows Code - chaz/openbox/commitdiff
only pass thru events when the menu is open, don't for other stuff
authorDana Jansens <danakj@orodu.net>
Sun, 22 Apr 2007 14:07:29 +0000 (14:07 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 22 Apr 2007 14:07:29 +0000 (14:07 +0000)
openbox/action.c
openbox/event.c
openbox/grab.c
openbox/grab.h
openbox/keyboard.c
openbox/menuframe.c
openbox/moveresize.c

index 5456c80e06acccfcd1cca16f59ba9ae88ec2f19c..fc6f5a78292b2d9dffa8b1df44171079a271277d 100644 (file)
@@ -41,7 +41,7 @@ inline void client_action_start(union ActionData *data)
 {
     if (config_focus_follow)
         if (data->any.context != OB_FRAME_CONTEXT_CLIENT && !data->any.button)
-            grab_pointer(TRUE, OB_CURSOR_NONE);
+            grab_pointer(TRUE, FALSE, OB_CURSOR_NONE);
 }
 
 inline void client_action_end(union ActionData *data)
@@ -49,7 +49,7 @@ inline void client_action_end(union ActionData *data)
     if (config_focus_follow)
         if (data->any.context != OB_FRAME_CONTEXT_CLIENT) {
             if (!data->any.button) {
-                grab_pointer(FALSE, OB_CURSOR_NONE);
+                grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
             } else {
                 ObClient *c;
 
index 4d74284b41d85a7c4a3da482acc3360b48555a7f..871b158a491591210b716ff09eec73404725de67 100644 (file)
@@ -393,9 +393,6 @@ static Bool look_for_focusin(Display *d, XEvent *e, XPointer arg)
 static gboolean event_ignore(XEvent *e, ObClient *client)
 {
     switch(e->type) {
-    case EnterNotify:
-    case LeaveNotify:
-        return keyboard_interactively_grabbed();
     case FocusIn:
     case FocusOut:
         if (!wanted_focusevent(e)) {
index 9b19906a340b7289a20f7a0256a38dbb8dec02e7..dfff9570e3c6dab1aa8a9e4e2590f7236fca58a9 100644 (file)
@@ -26,8 +26,7 @@
 #include <glib.h>
 #include <X11/Xlib.h>
 
-#define GRAB_PTR_MASK (ButtonPressMask | ButtonReleaseMask | \
-                       PointerMotionMask | EnterWindowMask | LeaveWindowMask)
+#define GRAB_PTR_MASK (ButtonPressMask | ButtonReleaseMask | PointerMotionMask)
 #define GRAB_KEY_MASK (KeyPressMask | KeyReleaseMask)
 
 #define MASK_LIST_SIZE 8
@@ -90,15 +89,15 @@ gboolean grab_keyboard(gboolean grab)
     return ret;
 }
 
-gboolean grab_pointer(gboolean grab, ObCursor cur)
+gboolean grab_pointer(gboolean grab, gboolean owner_events, ObCursor cur)
 {
     gboolean ret = FALSE;
 
     if (grab) {
         if (pgrabs++ == 0) {
-            ret = XGrabPointer(ob_display, screen_support_win,
-                               True, GRAB_PTR_MASK, GrabModeAsync,
-                               GrabModeAsync, None,
+            ret = XGrabPointer(ob_display, screen_support_win, owner_events,
+                               GRAB_PTR_MASK,
+                               GrabModeAsync, GrabModeAsync, None,
                                ob_cursor(cur), event_curtime) == Success;
             if (!ret)
                 --pgrabs;
@@ -115,13 +114,15 @@ gboolean grab_pointer(gboolean grab, ObCursor cur)
     return ret;
 }
 
-gboolean grab_pointer_window(gboolean grab, ObCursor cur, Window win)
+gboolean grab_pointer_window(gboolean grab, gboolean owner_events,
+                             ObCursor cur, Window win)
 {
     gboolean ret = FALSE;
 
     if (grab) {
         if (pgrabs++ == 0) {
-            ret = XGrabPointer(ob_display, win, True, GRAB_PTR_MASK,
+            ret = XGrabPointer(ob_display, win, owner_events,
+                               GRAB_PTR_MASK,
                                GrabModeAsync, GrabModeAsync, None,
                                ob_cursor(cur),
                                event_curtime) == Success;
@@ -179,8 +180,8 @@ void grab_shutdown(gboolean reconfig)
     if (reconfig) return;
 
     while (grab_keyboard(FALSE));
-    while (grab_pointer(FALSE, OB_CURSOR_NONE));
-    while (grab_pointer_window(FALSE, OB_CURSOR_NONE, None));
+    while (grab_pointer(FALSE, FALSE, OB_CURSOR_NONE));
+    while (grab_pointer_window(FALSE, FALSE, OB_CURSOR_NONE, None));
     while (grab_server(FALSE));
 }
 
index ca645cae489580f88ed9e3a3aaa0f8fe6957e4a2..9f2cf562f09353575000fc5eb8b08671666372e8 100644 (file)
@@ -28,8 +28,9 @@ void grab_startup(gboolean reconfig);
 void grab_shutdown(gboolean reconfig);
 
 gboolean grab_keyboard(gboolean grab);
-gboolean grab_pointer(gboolean grab, ObCursor cur);
-gboolean grab_pointer_window(gboolean grab, ObCursor cur, Window win);
+gboolean grab_pointer(gboolean grab, gboolean owner_events, ObCursor cur);
+gboolean grab_pointer_window(gboolean grab, gboolean owner_events,
+                             ObCursor cur, Window win);
 gint grab_server(gboolean grab);
 
 gboolean grab_on_keyboard();
index 01b54b4c10a9325d602bf87767e4ab8f3c185368..248fd1ce0dd4bdf682152a371476fe92b2e95b8e 100644 (file)
@@ -166,7 +166,7 @@ gboolean keyboard_interactive_grab(guint state, ObClient *client,
     if (!interactive_states) {
         if (!grab_keyboard(TRUE))
             return FALSE;
-        if (!grab_pointer(TRUE, OB_CURSOR_NONE)) {
+        if (!grab_pointer(TRUE, FALSE, OB_CURSOR_NONE)) {
             grab_keyboard(FALSE);
             return FALSE;
         }
@@ -195,7 +195,7 @@ void keyboard_interactive_end(ObInteractiveState *s,
 
     if (!interactive_states) {
         grab_keyboard(FALSE);
-        grab_pointer(FALSE, OB_CURSOR_NONE);
+        grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
         keyboard_reset_chains();
     }
 }
index f359c9852ee091b0c14e2793de5584fbc427b124..2e54ef88cde6dd167e8a82ad9b53948c3b951357 100644 (file)
@@ -681,10 +681,10 @@ static gboolean menu_frame_show(ObMenuFrame *self)
 
     if (menu_frame_visible == NULL) {
         /* no menus shown yet */
-        if (!grab_pointer(TRUE, OB_CURSOR_POINTER))
+        if (!grab_pointer(TRUE, TRUE, OB_CURSOR_POINTER))
             return FALSE;
         if (!grab_keyboard(TRUE)) {
-            grab_pointer(FALSE, OB_CURSOR_POINTER);
+            grab_pointer(FALSE, TRUE, OB_CURSOR_POINTER);
             return FALSE;
         }
     }
@@ -809,7 +809,7 @@ void menu_frame_hide(ObMenuFrame *self)
 
     if (menu_frame_visible == NULL) {
         /* last menu shown */
-        grab_pointer(FALSE, OB_CURSOR_NONE);
+        grab_pointer(FALSE, TRUE, OB_CURSOR_NONE);
         grab_keyboard(FALSE);
     }
 
index d078f52a389d26327dd33fa86fc5ef0e9e795f6a..6cab52262dcea9737332d42b88d523bf952a1336 100644 (file)
@@ -164,14 +164,14 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr)
     else
         g_assert_not_reached();
 
-    grab_pointer(TRUE, cur);
+    grab_pointer(TRUE, FALSE, cur);
     grab_keyboard(TRUE);
 }
 
 void moveresize_end(gboolean cancel)
 {
     grab_keyboard(FALSE);
-    grab_pointer(FALSE, OB_CURSOR_NONE);
+    grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
 
     popup_hide(popup);
 
This page took 0.037829 seconds and 4 git commands to generate.