Updating branch refs/heads/master
         to 7522f6b248341f0ce00973ed2d5198d9c8628ad3 (commit)
       from d7273d90a46c328cfdc26ff7f000cefb10000271 (commit)

commit 7522f6b248341f0ce00973ed2d5198d9c8628ad3
Author: Olivier Fourdan <four...@xfce.org>
Date:   Fri Nov 18 18:34:49 2011 +0100

    Restore the grab for double-click detection as it fails with "easy-click" 
and fix screen/monitor change signals.

 src/events.c |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/events.c b/src/events.c
index 5ddad9a..83de2a5 100644
--- a/src/events.c
+++ b/src/events.c
@@ -235,6 +235,16 @@ typeOfClick (ScreenInfo *screen_info, Window w, XEvent * 
ev, gboolean allow_doub
     g_return_val_if_fail (w != None, XFWM_BUTTON_UNDEFINED);
 
     display_info = screen_info->display_info;
+    g = myScreenGrabPointer (screen_info, DOUBLE_CLICK_GRAB, None, 
ev->xbutton.time);
+
+    if (!g)
+    {
+        TRACE ("grab failed in typeOfClick");
+        gdk_beep ();
+        myScreenUngrabPointer (screen_info, ev->xbutton.time);
+        return XFWM_BUTTON_UNDEFINED;
+    }
+
     passdata.display_info = display_info;
     passdata.button = ev->xbutton.button;
     passdata.w = w;
@@ -261,6 +271,8 @@ typeOfClick (ScreenInfo *screen_info, Window w, XEvent * 
ev, gboolean allow_doub
     eventFilterPop (display_info->xfilter);
     TRACE ("leaving typeOfClick loop");
 
+    myScreenUngrabPointer (screen_info, myDisplayGetCurrentTime 
(display_info));
+
     return (XfwmButtonClickType) passdata.clicks;
 }
 
@@ -2801,10 +2813,10 @@ size_changed_cb(GdkScreen *gscreen, gpointer data)
 
         placeSidewalks (screen_info, screen_info->params->wrap_workspaces);
 
-        clientScreenResize (screen_info, FALSE);
-
         compositorUpdateScreenSize (screen_info);
     }
+
+    clientScreenResize (screen_info, FALSE);
 }
 
 /*
@@ -2853,14 +2865,14 @@ monitors_changed_cb(GdkScreen *gscreen, gpointer data)
                         screen_info->width, screen_info->height, 
screen_info->margins);
 
         placeSidewalks (screen_info, screen_info->params->wrap_workspaces);
-
-        clientScreenResize (screen_info, (screen_info->num_monitors < 
previous_num_monitors));
     }
 
     if (size_changed)
     {
         compositorUpdateScreenSize (screen_info);
     }
+
+    clientScreenResize (screen_info, (screen_info->num_monitors < 
previous_num_monitors));
 }
 
 void
@@ -2874,9 +2886,9 @@ initPerScreenCallbacks (ScreenInfo *screen_info)
     g_signal_connect (G_OBJECT (myScreenGetGtkWidget (screen_info)), 
"client_event",
                       GTK_SIGNAL_FUNC (client_event_cb), NULL);
     g_object_connect (G_OBJECT(screen_info->gscr),
-                      "signal::notify::size-changed",
+                      "signal::size-changed",
                       G_CALLBACK(size_changed_cb), (gpointer) (screen_info),
-                      "signal::notify::monitors-changed",
+                      "signal::monitors-changed",
                       G_CALLBACK(monitors_changed_cb), (gpointer) 
(screen_info),
                       NULL);
 }
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to