[Xfce4-commits] r25819 - in xfwm4/branches/xfce_4_4: . src

Olivier Fourdan olivier at xfce.org
Sun Jun 17 01:17:23 CEST 2007


Author: olivier
Date: 2007-06-16 23:17:22 +0000 (Sat, 16 Jun 2007)
New Revision: 25819

Modified:
   xfwm4/branches/xfce_4_4/NEWS
   xfwm4/branches/xfce_4_4/src/client.c
   xfwm4/branches/xfce_4_4/src/settings.c
Log:
Plug a leak in mouse button grab when changing theme

Modified: xfwm4/branches/xfce_4_4/NEWS
===================================================================
--- xfwm4/branches/xfce_4_4/NEWS	2007-06-16 23:15:15 UTC (rev 25818)
+++ xfwm4/branches/xfce_4_4/NEWS	2007-06-16 23:17:22 UTC (rev 25819)
@@ -12,6 +12,7 @@
 - Transients for group shouldn't apply to other transients, or it breaks 
   stacking for some apps, noticeably mozilla "save as" dialog...
 - Fix typo breaking compilation on systems without XShape 1.1 support
+- Plug a leak in mouse button grab when changing theme
 
 4.4.1
 =====

Modified: xfwm4/branches/xfce_4_4/src/client.c
===================================================================
--- xfwm4/branches/xfce_4_4/src/client.c	2007-06-16 23:15:15 UTC (rev 25818)
+++ xfwm4/branches/xfce_4_4/src/client.c	2007-06-16 23:17:22 UTC (rev 25819)
@@ -254,26 +254,26 @@
             /* Recompute size and position of maximized windows */
             if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT))
             {
-                 maximization_flags |= FLAG_TEST (c->flags,
-                     CLIENT_FLAG_MAXIMIZED_HORIZ) ? WIN_STATE_MAXIMIZED_HORIZ : 0;
-                 maximization_flags |= FLAG_TEST (c->flags,
-                     CLIENT_FLAG_MAXIMIZED_VERT) ? WIN_STATE_MAXIMIZED_VERT : 0;
+                maximization_flags |= FLAG_TEST (c->flags,
+                    CLIENT_FLAG_MAXIMIZED_HORIZ) ? WIN_STATE_MAXIMIZED_HORIZ : 0;
+                maximization_flags |= FLAG_TEST (c->flags,
+                    CLIENT_FLAG_MAXIMIZED_VERT) ? WIN_STATE_MAXIMIZED_VERT : 0;
 
-                 /* Force an update by clearing the internal flags */
-                 FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT);
-                 clientToggleMaximized (c, maximization_flags, FALSE);
+                /* Force an update by clearing the internal flags */
+                FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT);
+                clientToggleMaximized (c, maximization_flags, FALSE);
 
-                 configure_flags |= CFG_FORCE_REDRAW;
-                 mask &= ~UPDATE_FRAME;
+                configure_flags |= CFG_FORCE_REDRAW;
+                mask &= ~UPDATE_FRAME;
             }
         }
         if (configure_flags != 0L)
         {
-             wc.x = c->x;
-             wc.y = c->y;
-             wc.width = c->width;
-             wc.height = c->height;
-             clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, configure_flags);
+            wc.x = c->x;
+            wc.y = c->y;
+            wc.width = c->width;
+            wc.height = c->height;
+            clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, configure_flags);
         }
         if (mask & UPDATE_FRAME)
         {

Modified: xfwm4/branches/xfce_4_4/src/settings.c
===================================================================
--- xfwm4/branches/xfce_4_4/src/settings.c	2007-06-16 23:15:15 UTC (rev 25818)
+++ xfwm4/branches/xfce_4_4/src/settings.c	2007-06-16 23:17:22 UTC (rev 25819)
@@ -54,7 +54,7 @@
 
 /* Forward static decls. */
 
-static void              check_for_grabs      (ScreenInfo *);
+static void              update_grabs      (ScreenInfo *);
 static void              set_settings_margin  (ScreenInfo *,
                                                int ,
                                                int);
@@ -84,16 +84,13 @@
                                                int);
 
 static void
-check_for_grabs (ScreenInfo *screen_info)
+update_grabs (ScreenInfo *screen_info)
 {
+    clientUngrabMouseButtonForAll (screen_info);
     if ((screen_info->params->raise_on_click) || (screen_info->params->click_to_focus))
     {
         clientGrabMouseButtonForAll (screen_info);
     }
-    else if (!(screen_info->params->raise_on_click) && !(screen_info->params->click_to_focus))
-    {
-        clientUngrabMouseButtonForAll (screen_info);
-    }
 }
 
 static void
@@ -208,7 +205,7 @@
                     else if (!strcmp (name, "Xfwm/ClickToFocus"))
                     {
                         screen_info->params->click_to_focus = setting->data.v_int;
-                        check_for_grabs (screen_info);
+                        update_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/FocusNewWindow"))
                     {
@@ -225,7 +222,7 @@
                     else if (!strcmp (name, "Xfwm/RaiseOnClick"))
                     {
                         screen_info->params->raise_on_click = setting->data.v_int;
-                        check_for_grabs (screen_info);
+                        update_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/SnapToBorder"))
                     {
@@ -449,12 +446,11 @@
                     else if (!strcmp (name, "Xfwm/RaiseWithAnyButton"))
                     {
                         screen_info->params->raise_with_any_button = setting->data.v_int;
-                        check_for_grabs (screen_info);
+                        update_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/RestoreOnMove"))
                     {
                         screen_info->params->restore_on_move = setting->data.v_int;
-                        check_for_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/ScrollWorkspaces"))
                     {
@@ -594,7 +590,6 @@
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("click_to_focus", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusNewWindow", CHANNEL1,
@@ -619,7 +614,6 @@
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("raise_on_click", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToBorder", CHANNEL1,
@@ -777,10 +771,7 @@
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/EasyClick", CHANNEL5,
                 &setting) == MCS_SUCCESS)
         {
-            if (setting->type == MCS_TYPE_STRING)
-            {
-                setValue ("easy_click", setting->data.v_string, rc);
-            }
+            setValue ("easy_click", setting->data.v_string, rc);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusHint", CHANNEL5,
@@ -853,14 +844,12 @@
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("raise_with_any_button", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RestoreOnMove", CHANNEL5,
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("restore_on_move", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ScrollWorkspaces", CHANNEL5,
@@ -1454,6 +1443,7 @@
     loadRcData (screen_info, rc);
     loadMcsData (screen_info, rc);
     loadTheme (screen_info, rc);
+    update_grabs (screen_info);
 
     if (!loadKeyBindings (screen_info, rc))
     {



More information about the Xfce4-commits mailing list