]> Dogcows Code - chaz/openbox/blobdiff - openbox/frame.c
save the dock's class/name for future evil purposes!
[chaz/openbox] / openbox / frame.c
index 3b9009360b02a6441498b67d6cfe6e77dd309dd2..211a275c75024bbd002aab55c8da3d0f1ad037e6 100644 (file)
@@ -124,6 +124,8 @@ Frame *frame_new()
     attrib.cursor = ob_cursors.br;
     self->rgrip = createWindow(self->handle, mask, &attrib);
 
+    self->focused = FALSE;
+
     /* the other stuff is shown based on decor settings */
     XMapWindow(ob_display, self->plate);
     XMapWindow(ob_display, self->lgrip);
@@ -386,8 +388,9 @@ void frame_adjust_state(Frame *self)
     framerender_frame(self);
 }
 
-void frame_adjust_focus(Frame *self)
+void frame_adjust_focus(Frame *self, gboolean hilite)
 {
+    self->focused = hilite;
     framerender_frame(self);
 }
 
@@ -427,20 +430,20 @@ void frame_grab_client(Frame *self, Client *client)
 
     frame_adjust_area(self, TRUE, TRUE);
 
-    /* set all the windows for the frame in the client_map */
-    g_hash_table_insert(client_map, &self->window, client);
-    g_hash_table_insert(client_map, &self->plate, client);
-    g_hash_table_insert(client_map, &self->title, client);
-    g_hash_table_insert(client_map, &self->label, client);
-    g_hash_table_insert(client_map, &self->max, client);
-    g_hash_table_insert(client_map, &self->close, client);
-    g_hash_table_insert(client_map, &self->desk, client);
-    g_hash_table_insert(client_map, &self->shade, client);
-    g_hash_table_insert(client_map, &self->icon, client);
-    g_hash_table_insert(client_map, &self->iconify, client);
-    g_hash_table_insert(client_map, &self->handle, client);
-    g_hash_table_insert(client_map, &self->lgrip, client);
-    g_hash_table_insert(client_map, &self->rgrip, client);
+    /* set all the windows for the frame in the window_map */
+    g_hash_table_insert(window_map, &self->window, client);
+    g_hash_table_insert(window_map, &self->plate, client);
+    g_hash_table_insert(window_map, &self->title, client);
+    g_hash_table_insert(window_map, &self->label, client);
+    g_hash_table_insert(window_map, &self->max, client);
+    g_hash_table_insert(window_map, &self->close, client);
+    g_hash_table_insert(window_map, &self->desk, client);
+    g_hash_table_insert(window_map, &self->shade, client);
+    g_hash_table_insert(window_map, &self->icon, client);
+    g_hash_table_insert(window_map, &self->iconify, client);
+    g_hash_table_insert(window_map, &self->handle, client);
+    g_hash_table_insert(window_map, &self->lgrip, client);
+    g_hash_table_insert(window_map, &self->rgrip, client);
 }
 
 void frame_release_client(Frame *self, Client *client)
@@ -453,8 +456,12 @@ void frame_release_client(Frame *self, Client *client)
     if (XCheckTypedWindowEvent(ob_display, client->window,
                               ReparentNotify, &ev)) {
        XPutBackEvent(ob_display, &ev);
+
        /* re-map the window since the unmanaging process unmaps it */
-       XMapWindow(ob_display, client->window);
+
+        /* XXX ... um no it doesnt it unmaps its parent, the window itself
+           retains its mapped state, no?! XXX
+           XMapWindow(ob_display, client->window); */
     } else {
        /* according to the ICCCM - if the client doesn't reparent itself,
           then we will reparent the window to root for them */
@@ -463,20 +470,20 @@ void frame_release_client(Frame *self, Client *client)
                        client->area.y);
     }
 
-    /* remove all the windows for the frame from the client_map */
-    g_hash_table_remove(client_map, &self->window);
-    g_hash_table_remove(client_map, &self->plate);
-    g_hash_table_remove(client_map, &self->title);
-    g_hash_table_remove(client_map, &self->label);
-    g_hash_table_remove(client_map, &self->max);
-    g_hash_table_remove(client_map, &self->close);
-    g_hash_table_remove(client_map, &self->desk);
-    g_hash_table_remove(client_map, &self->shade);
-    g_hash_table_remove(client_map, &self->icon);
-    g_hash_table_remove(client_map, &self->iconify);
-    g_hash_table_remove(client_map, &self->handle);
-    g_hash_table_remove(client_map, &self->lgrip);
-    g_hash_table_remove(client_map, &self->rgrip);
+    /* remove all the windows for the frame from the window_map */
+    g_hash_table_remove(window_map, &self->window);
+    g_hash_table_remove(window_map, &self->plate);
+    g_hash_table_remove(window_map, &self->title);
+    g_hash_table_remove(window_map, &self->label);
+    g_hash_table_remove(window_map, &self->max);
+    g_hash_table_remove(window_map, &self->close);
+    g_hash_table_remove(window_map, &self->desk);
+    g_hash_table_remove(window_map, &self->shade);
+    g_hash_table_remove(window_map, &self->icon);
+    g_hash_table_remove(window_map, &self->iconify);
+    g_hash_table_remove(window_map, &self->handle);
+    g_hash_table_remove(window_map, &self->lgrip);
+    g_hash_table_remove(window_map, &self->rgrip);
 
     frame_free(self);
 }
This page took 0.024138 seconds and 4 git commands to generate.