]> Dogcows Code - chaz/openbox/commitdiff
read in the stacking order on startup, and use it to restore windows back to the...
authorDana Jansens <danakj@orodu.net>
Tue, 25 Mar 2003 00:39:28 +0000 (00:39 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 25 Mar 2003 00:39:28 +0000 (00:39 +0000)
openbox/client.c

index e47742a64a2814f471ea1e684c589e3e8e6fcaea..6d32c407e99a7f724385df172b05d2cb2cfb51e8 100644 (file)
@@ -23,6 +23,9 @@
 GSList     *client_list      = NULL;
 GHashTable *client_map       = NULL;
 
+static Window *client_startup_stack_order = NULL;
+static gulong  client_startup_stack_size = 0;
+
 static void client_get_all(Client *self);
 static void client_toggle_border(Client *self, gboolean show);
 static void client_get_area(Client *self);
@@ -45,6 +48,13 @@ void client_startup()
 {
     client_map = g_hash_table_new((GHashFunc)map_hash,
                                  (GEqualFunc)map_key_comp);
+
+    /* save the stacking order on startup! */
+    if (!PROP_GET32U(ob_root, net_client_list_stacking, window,
+                     client_startup_stack_order, client_startup_stack_size))
+        g_message("failed");
+    g_message("%ld", client_startup_stack_size);
+
     client_set_list();
 }
 
@@ -112,6 +122,15 @@ void client_manage_all()
        }
     }
     XFree(children);
+
+    /* stack them as they were on startup! */
+    for (i = client_startup_stack_size; i > 0; --i) {
+        Client *c;
+
+        w = client_startup_stack_order[i-1];
+        c = g_hash_table_lookup(client_map, &w);
+        if (c) stacking_lower(c);
+    }
 }
 
 void client_manage(Window window)
This page took 0.027495 seconds and 4 git commands to generate.