From b09e1399c0932246181b71bc45c98562ca9aee50 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 1 Feb 2014 19:03:33 -0500 Subject: [PATCH] window: Centralize WM_STATE management --- src/core/window.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/core/window.c b/src/core/window.c index 22a8c67fc..74a3e199d 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -98,8 +98,7 @@ static void invalidate_work_areas (MetaWindow *window); static void set_wm_state_on_xwindow (MetaDisplay *display, Window xwindow, int state); -static void set_wm_state (MetaWindow *window, - int state); +static void set_wm_state (MetaWindow *window); static void set_net_wm_state (MetaWindow *window); static void meta_window_set_above (MetaWindow *window, gboolean new_value); @@ -1310,7 +1309,7 @@ meta_window_new_shared (MetaDisplay *display, /* FIXME we have a tendency to set this then immediately * change it again. */ - set_wm_state (window, window->iconic ? IconicState : NormalState); + set_wm_state (window); set_net_wm_state (window); } @@ -1950,7 +1949,7 @@ meta_window_unmanage (MetaWindow *window, XDeleteProperty (window->display->xdisplay, window->xwindow, window->display->atom__NET_WM_FULLSCREEN_MONITORS); - set_wm_state (window, WithdrawnState); + set_wm_state (window); meta_error_trap_pop (window->display); } else @@ -1961,7 +1960,7 @@ meta_window_unmanage (MetaWindow *window, if (!window->minimized) { meta_error_trap_push (window->display); - set_wm_state (window, NormalState); + set_wm_state (window); meta_error_trap_pop (window->display); } @@ -2117,11 +2116,16 @@ set_wm_state_on_xwindow (MetaDisplay *display, } static void -set_wm_state (MetaWindow *window, - int state) +set_wm_state (MetaWindow *window) { - meta_verbose ("Setting wm state %s on %s\n", - wm_state_to_string (state), window->desc); + int state; + + if (window->withdrawn) + state = WithdrawnState; + else if (window->iconic) + state = IconicState; + else + state = NormalState; set_wm_state_on_xwindow (window->display, window->xwindow, state); } @@ -3130,7 +3134,7 @@ meta_window_show (MetaWindow *window) if (!window->iconic) { window->iconic = TRUE; - set_wm_state (window, IconicState); + set_wm_state (window); } } else @@ -3149,7 +3153,7 @@ meta_window_show (MetaWindow *window) if (window->iconic) { window->iconic = FALSE; - set_wm_state (window, NormalState); + set_wm_state (window); } } @@ -3302,7 +3306,7 @@ meta_window_hide (MetaWindow *window) if (!window->iconic) { window->iconic = TRUE; - set_wm_state (window, IconicState); + set_wm_state (window); } toplevel_now_mapped = meta_window_toplevel_is_mapped (window);