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);
framerender_frame(self);
}
-void frame_adjust_focus(Frame *self)
+void frame_adjust_focus(Frame *self, gboolean hilite)
{
+ self->focused = hilite;
framerender_frame(self);
}
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)
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 */
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);
}