better more obvious code
authorDana Jansens <danakj@orodu.net>
Mon, 28 May 2007 04:18:54 +0000 (04:18 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 28 May 2007 04:18:54 +0000 (04:18 +0000)
openbox/client.c
openbox/client.h
openbox/event.c

index a801597..e953a61 100644 (file)
@@ -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 */
     }
 }
index 55b684f..f1b8c88 100644 (file)
@@ -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);
index ff2d560..096e0d5 100644 (file)
@@ -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);