Create fake enter events in fewer situations - avoiding times that you don't actually...
authorDana Jansens <danakj@orodu.net>
Fri, 25 Jan 2008 15:20:21 +0000 (10:20 -0500)
committerDana Jansens <danakj@orodu.net>
Fri, 25 Jan 2008 15:21:24 +0000 (10:21 -0500)
openbox/actions.c
openbox/event.c

index 0c84489..b7f5dc2 100644 (file)
@@ -339,9 +339,7 @@ void actions_client_move(ObActionsData *data, gboolean start)
     else if (config_focus_follow &&
              data->context != OB_FRAME_CONTEXT_CLIENT)
     {
-        if (!data->button && data->client && !config_focus_under_mouse)
-            event_end_ignore_all_enters(ignore_start);
-        else {
+        if (data->button && config_focus_under_mouse) {
             struct _ObClient *c;
 
             /* usually this is sorta redundant, but with a press action
@@ -355,6 +353,7 @@ void actions_client_move(ObActionsData *data, gboolean start)
                               "mouse-event action");
                 event_enter_client(c);
             }
-        }
+        } else
+            event_end_ignore_all_enters(ignore_start);
     }
 }
index fba5e86..7d24640 100644 (file)
@@ -1928,8 +1928,7 @@ void event_halt_focus_delay(void)
 
 gulong event_start_ignore_all_enters(void)
 {
-    XSync(ob_display, FALSE);
-    return LastKnownRequestProcessed(ob_display);
+    return NextRequest(ob_display);
 }
 
 static void event_ignore_enter_range(gulong start, gulong end)
@@ -1948,13 +1947,12 @@ static void event_ignore_enter_range(gulong start, gulong end)
                   r->start, r->end);
 
     /* increment the serial so we don't ignore events we weren't meant to */
-    XSync(ob_display, FALSE);
+    PROP_ERASE(screen_support_win, motif_wm_hints);
 }
 
 void event_end_ignore_all_enters(gulong start)
 {
-    XSync(ob_display, FALSE);
-    event_ignore_enter_range(start, LastKnownRequestProcessed(ob_display));
+    event_ignore_enter_range(start, NextRequest(ob_display));
 }
 
 static gboolean is_enter_focus_event_ignored(XEvent *e)