diff --git a/src/client.c b/src/client.c index ed5e9f52b7428b0945ffcd1ba5eb8d11e8a41dd8..f6d4375fb43af1b32b1dccf448b4fe0453c87069 100644 --- a/src/client.c +++ b/src/client.c @@ -258,26 +258,26 @@ clientUpdateAllFrames (ScreenInfo *screen_info, int mask) /* 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) { diff --git a/src/display.h b/src/display.h index 463ebe172b517e507acb3bba6ba812c5f1e5131c..38876d2fa74c313668c9844ff19fa9174d004b09 100644 --- a/src/display.h +++ b/src/display.h @@ -87,10 +87,10 @@ enum enum { - CORNER_TOP_LEFT = 0, - CORNER_TOP_RIGHT, - CORNER_BOTTOM_LEFT, + CORNER_BOTTOM_LEFT = 0, CORNER_BOTTOM_RIGHT, + CORNER_TOP_LEFT, + CORNER_TOP_RIGHT, CORNER_COUNT }; @@ -128,7 +128,7 @@ enum T_PRESSED, STATE_COUNT }; -#define STATE_TOGGLED (STATE_COUNT >> 1) +#define STATE_TOGGLED (STATE_COUNT / 2) enum { diff --git a/src/frame.c b/src/frame.c index 09f8c76b4128878bd22a3205f18b0a483ce2d676..cac3921c1f1ef8aa1a4d9755e09330ca5224420c 100644 --- a/src/frame.c +++ b/src/frame.c @@ -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 @@ frameDraw (Client * c, gboolean clear_all) 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]); diff --git a/src/frame.h b/src/frame.h index f95b583371dc059384f33b59eec932070b3535a3..e158f317e8012e447bd95f2aad493238ea02e0e2 100644 --- a/src/frame.h +++ b/src/frame.h @@ -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 *); diff --git a/src/settings.c b/src/settings.c index d5ebed999d7118bfe9f993ccc9780aaceec3d931..3685532f02e5486934aa9cadc09ab479ac9877d8 100644 --- a/src/settings.c +++ b/src/settings.c @@ -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 @@ static gboolean reloadScreenSettings (ScreenInfo *, 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 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett 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 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett 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 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett 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 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc) &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 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc) &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 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc) 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 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc) &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 @@ loadSettings (ScreenInfo *screen_info) 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 @@ loadSettings (ScreenInfo *screen_info) static void unloadTheme (ScreenInfo *screen_info) { - int i; + int i, j; TRACE ("entering unloadTheme"); @@ -1672,17 +1662,17 @@ unloadTheme (ScreenInfo *screen_info) } 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) {