[Xfce4-commits] r25818 - xfwm4/trunk/src
Olivier Fourdan
olivier at xfce.org
Sun Jun 17 01:15:15 CEST 2007
Author: olivier
Date: 2007-06-16 23:15:15 +0000 (Sat, 16 Jun 2007)
New Revision: 25818
Modified:
xfwm4/trunk/src/client.c
xfwm4/trunk/src/display.h
xfwm4/trunk/src/frame.c
xfwm4/trunk/src/frame.h
xfwm4/trunk/src/settings.c
Log:
Plug a pixmap leak in the new button prelight code, and a grab that was leaking since 4.2.
Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c 2007-06-16 19:15:12 UTC (rev 25817)
+++ xfwm4/trunk/src/client.c 2007-06-16 23:15:15 UTC (rev 25818)
@@ -258,26 +258,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/trunk/src/display.h
===================================================================
--- xfwm4/trunk/src/display.h 2007-06-16 19:15:12 UTC (rev 25817)
+++ xfwm4/trunk/src/display.h 2007-06-16 23:15:15 UTC (rev 25818)
@@ -87,10 +87,10 @@
enum
{
- CORNER_TOP_LEFT = 0,
+ CORNER_BOTTOM_LEFT = 0,
+ CORNER_BOTTOM_RIGHT,
+ CORNER_TOP_LEFT,
CORNER_TOP_RIGHT,
- CORNER_BOTTOM_LEFT,
- CORNER_BOTTOM_RIGHT,
CORNER_COUNT
};
@@ -128,7 +128,7 @@
T_PRESSED,
STATE_COUNT
};
-#define STATE_TOGGLED (STATE_COUNT >> 1)
+#define STATE_TOGGLED (STATE_COUNT / 2)
enum
{
Modified: xfwm4/trunk/src/frame.c
===================================================================
--- xfwm4/trunk/src/frame.c 2007-06-16 19:15:12 UTC (rev 25817)
+++ xfwm4/trunk/src/frame.c 2007-06-16 23:15:15 UTC (rev 25818)
@@ -41,6 +41,13 @@
#define ShapeInput 2
#endif
+typedef struct
+{
+ xfwmPixmap pm_title;
+ xfwmPixmap pm_sides[SIDE_COUNT];
+} FramePixmap;
+
+
int
frameDecorationLeft (ScreenInfo *screen_info)
{
@@ -1144,6 +1151,7 @@
requires_clearing);
}
frameSetShape (c, state, &frame_pix, button_x);
+
xfwmPixmapFree (&frame_pix.pm_title);
xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]);
xfwmPixmapFree (&frame_pix.pm_sides[SIDE_LEFT]);
Modified: xfwm4/trunk/src/frame.h
===================================================================
--- xfwm4/trunk/src/frame.h 2007-06-16 19:15:12 UTC (rev 25817)
+++ xfwm4/trunk/src/frame.h 2007-06-16 23:15:15 UTC (rev 25818)
@@ -30,14 +30,6 @@
#include "mypixmap.h"
#include "client.h"
-struct _FramePixmap
-{
- xfwmPixmap pm_title;
- xfwmPixmap pm_sides[SIDE_COUNT];
-};
-
-typedef struct _FramePixmap FramePixmap;
-
int frameDecorationLeft (ScreenInfo *);
int frameDecorationRight (ScreenInfo *);
int frameDecorationTop (ScreenInfo *);
Modified: xfwm4/trunk/src/settings.c
===================================================================
--- xfwm4/trunk/src/settings.c 2007-06-16 19:15:12 UTC (rev 25817)
+++ xfwm4/trunk/src/settings.c 2007-06-16 23:15:15 UTC (rev 25818)
@@ -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
@@ -224,7 +221,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"))
{
@@ -245,7 +242,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"))
{
@@ -474,12 +471,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"))
{
@@ -623,7 +619,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,
@@ -654,7 +649,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,
@@ -812,10 +806,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,
@@ -900,14 +891,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,
@@ -1520,6 +1509,7 @@
loadRcData (screen_info, rc);
loadMcsData (screen_info, rc);
loadTheme (screen_info, rc);
+ update_grabs (screen_info);
if (!loadKeyBindings (screen_info, rc))
{
@@ -1656,7 +1646,7 @@
static void
unloadTheme (ScreenInfo *screen_info)
{
- int i;
+ int i, j;
TRACE ("entering unloadTheme");
@@ -1672,17 +1662,17 @@
}
for (i = 0; i < BUTTON_COUNT; i++)
{
- xfwmPixmapFree (&screen_info->buttons[i][ACTIVE]);
- xfwmPixmapFree (&screen_info->buttons[i][INACTIVE]);
- xfwmPixmapFree (&screen_info->buttons[i][PRESSED]);
- xfwmPixmapFree (&screen_info->buttons[i][T_ACTIVE]);
- xfwmPixmapFree (&screen_info->buttons[i][T_INACTIVE]);
- xfwmPixmapFree (&screen_info->buttons[i][T_PRESSED]);
+ for (j = 0; j < STATE_COUNT; j++)
+ {
+ xfwmPixmapFree (&screen_info->buttons[i][j]);
+ }
}
for (i = 0; i < TITLE_COUNT; i++)
{
xfwmPixmapFree (&screen_info->title[i][ACTIVE]);
xfwmPixmapFree (&screen_info->title[i][INACTIVE]);
+ xfwmPixmapFree (&screen_info->top[i][ACTIVE]);
+ xfwmPixmapFree (&screen_info->top[i][INACTIVE]);
}
if (screen_info->box_gc != None)
{
More information about the Xfce4-commits
mailing list