]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
use the nwe theme's show_handle value
[chaz/openbox] / openbox / client.c
index e653ed19f58b2b0d7cebd7a15c90a64ee4b73d73..adbab7a74774e9e2b618910efdca192490e0961e 100644 (file)
@@ -32,7 +32,8 @@
 #define CLIENT_NOPROPAGATEMASK (ButtonPressMask | ButtonReleaseMask | \
                                ButtonMotionMask)
 
-GList      *client_list      = NULL;
+GList      *client_list        = NULL;
+GSList     *client_destructors = NULL;
 
 static void client_get_all(ObClient *self);
 static void client_toggle_border(ObClient *self, gboolean show);
@@ -58,6 +59,16 @@ void client_shutdown()
 {
 }
 
+void client_add_destructor(ObClientDestructorFunc func)
+{
+    client_destructors = g_slist_prepend(client_destructors, (gpointer)func);
+}
+
+void client_remove_destructor(ObClientDestructorFunc func)
+{
+    client_destructors = g_slist_remove(client_destructors, (gpointer)func);
+}
+
 void client_set_list()
 {
     Window *windows, *win_it;
@@ -414,13 +425,11 @@ void client_unmanage(ObClient *self)
         }
     }
 
-    if (moveresize_client == self)
-        moveresize_end(TRUE);
-
-    /* menus can be associated with a client, so close any that are since
-       we are disappearing now */
-    menu_frame_hide_all_client(self);
-    
+    for (it = client_destructors; it; it = g_slist_next(it)) {
+        ObClientDestructorFunc func = (ObClientDestructorFunc) it->data;
+        func(self);
+    }
+        
     if (focus_client == self) {
         XEvent e;
 
@@ -1024,20 +1033,22 @@ void client_update_normal_hints(ObClient *self)
 void client_setup_decor_and_functions(ObClient *self)
 {
     /* start with everything (cept fullscreen) */
-    self->decorations = (OB_FRAME_DECOR_TITLEBAR |
-                         OB_FRAME_DECOR_HANDLE |
-                         OB_FRAME_DECOR_GRIPS |
-                         OB_FRAME_DECOR_BORDER |
-                         OB_FRAME_DECOR_ICON |
-                         OB_FRAME_DECOR_ALLDESKTOPS |
-                         OB_FRAME_DECOR_ICONIFY |
-                         OB_FRAME_DECOR_MAXIMIZE |
-                         OB_FRAME_DECOR_SHADE);
-    self->functions = (OB_CLIENT_FUNC_RESIZE |
-                       OB_CLIENT_FUNC_MOVE |
-                       OB_CLIENT_FUNC_ICONIFY |
-                       OB_CLIENT_FUNC_MAXIMIZE |
-                       OB_CLIENT_FUNC_SHADE);
+    self->decorations =
+        (OB_FRAME_DECOR_TITLEBAR |
+         (ob_rr_theme->show_handle ? OB_FRAME_DECOR_HANDLE : 0) |
+         OB_FRAME_DECOR_GRIPS |
+         OB_FRAME_DECOR_BORDER |
+         OB_FRAME_DECOR_ICON |
+         OB_FRAME_DECOR_ALLDESKTOPS |
+         OB_FRAME_DECOR_ICONIFY |
+         OB_FRAME_DECOR_MAXIMIZE |
+         OB_FRAME_DECOR_SHADE);
+    self->functions =
+        (OB_CLIENT_FUNC_RESIZE |
+         OB_CLIENT_FUNC_MOVE |
+         OB_CLIENT_FUNC_ICONIFY |
+         OB_CLIENT_FUNC_MAXIMIZE |
+         OB_CLIENT_FUNC_SHADE);
     if (self->delete_window) {
        self->functions |= OB_CLIENT_FUNC_CLOSE;
         self->decorations |= OB_FRAME_DECOR_CLOSE;
This page took 0.021883 seconds and 4 git commands to generate.