summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/client.c12
-rw-r--r--openbox/client.h4
-rw-r--r--openbox/event.c9
3 files changed, 12 insertions, 13 deletions
diff --git a/openbox/client.c b/openbox/client.c
index a8015978..e953a613 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -321,7 +321,7 @@ void client_manage(Window window)
client_restore_session_state(self);
/* now we have all of the window's information so we can set this up */
- client_setup_decor_and_functions(self);
+ client_setup_decor_and_functions(self, FALSE);
{
Time t = sn_app_started(self->startup_id, self->class);
@@ -1595,9 +1595,7 @@ void client_update_normal_hints(ObClient *self)
}
}
-/*! This needs to be followed by a call to client_configure to make
- the changes show */
-void client_setup_decor_and_functions(ObClient *self)
+void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
{
/* start with everything (cept fullscreen) */
self->decorations =
@@ -1753,6 +1751,9 @@ void client_setup_decor_and_functions(ObClient *self)
}
client_change_allowed_actions(self);
+
+ if (reconfig)
+ client_reconfigure(self);
}
static void client_change_allowed_actions(ObClient *self)
@@ -3716,8 +3717,7 @@ void client_set_undecorated(ObClient *self, gboolean undecorated)
(self->functions & OB_CLIENT_FUNC_UNDECORATE || !undecorated))
{
self->undecorated = undecorated;
- client_setup_decor_and_functions(self);
- client_reconfigure(self); /* show the lack of decorations */
+ client_setup_decor_and_functions(self, TRUE);
client_change_state(self); /* reflect this in the state hints */
}
}
diff --git a/openbox/client.h b/openbox/client.h
index 55b684ff..f1b8c885 100644
--- a/openbox/client.h
+++ b/openbox/client.h
@@ -604,8 +604,10 @@ void client_update_icon_geometry(ObClient *self);
/*! Set up what decor should be shown on the window and what functions should
be allowed (ObClient::decorations and ObClient::functions).
This also updates the NET_WM_ALLOWED_ACTIONS hint.
+ @param reconfig When TRUE, the window will be reconfigured to show the
+ changes
*/
-void client_setup_decor_and_functions(ObClient *self);
+void client_setup_decor_and_functions(ObClient *self, gboolean reconfig);
/*! Sets the window's type and transient flag */
void client_get_type_and_transientness(ObClient *self);
diff --git a/openbox/event.c b/openbox/event.c
index ff2d560d..096e0d56 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -1430,8 +1430,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
if (msgtype == XA_WM_NORMAL_HINTS) {
client_update_normal_hints(client);
/* normal hints can make a window non-resizable */
- client_setup_decor_and_functions(client);
- client_reconfigure(client);
+ client_setup_decor_and_functions(client, TRUE);
} else if (msgtype == XA_WM_HINTS) {
client_update_wmhints(client);
} else if (msgtype == XA_WM_TRANSIENT_FOR) {
@@ -1439,8 +1438,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
client_get_type_and_transientness(client);
/* type may have changed, so update the layer */
client_calc_layer(client);
- client_setup_decor_and_functions(client);
- client_reconfigure(client);
+ client_setup_decor_and_functions(client, TRUE);
} else if (msgtype == prop_atoms.net_wm_name ||
msgtype == prop_atoms.wm_name ||
msgtype == prop_atoms.net_wm_icon_name ||
@@ -1448,8 +1446,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
client_update_title(client);
} else if (msgtype == prop_atoms.wm_protocols) {
client_update_protocols(client);
- client_setup_decor_and_functions(client);
- client_reconfigure(client);
+ client_setup_decor_and_functions(client, TRUE);
}
else if (msgtype == prop_atoms.net_wm_strut) {
client_update_strut(client);