X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fclient.c;h=6cd8454b062247b0186765e2b4e728e6e72be55e;hb=58cfbb7f8419e084af6b6b8b00c88ed270c29e88;hp=dd25e4d2d4a7861e3e5d0d16acfd33aca6b873f9;hpb=d5eacc5642ad8f5611f7c946d734863bc8898513;p=chaz%2Fopenbox diff --git a/openbox/client.c b/openbox/client.c index dd25e4d2..6cd8454b 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -1,4 +1,5 @@ #include "client.h" +#include "slit.h" #include "startup.h" #include "screen.h" #include "moveresize.h" @@ -157,7 +158,7 @@ void client_manage_all() w = startup_stack_order[i-1]; c = g_hash_table_lookup(client_map, &w); - if (c) stacking_lower(c); + if (c) stacking_lower(CLIENT_AS_WINDOW(c)); } g_free(startup_stack_order); startup_stack_order = NULL; @@ -176,7 +177,7 @@ void client_manage(Window window) XEvent e; XWindowAttributes attrib; XSetWindowAttributes attrib_set; -/* XWMHints *wmhint; */ + XWMHints *wmhint; grab_server(TRUE); @@ -197,18 +198,18 @@ void client_manage(Window window) return; /* don't manage it */ } -/* /\* is the window a docking app *\/ + /* is the window a docking app */ if ((wmhint = XGetWMHints(ob_display, window))) { if ((wmhint->flags & StateHint) && wmhint->initial_state == WithdrawnState) { - /\* XXX: make dock apps work! *\/ + slit_add(window, wmhint); grab_server(FALSE); XFree(wmhint); return; } XFree(wmhint); } -*/ + g_message("Managing window: %lx", window); /* choose the events we want to receive on the CLIENT window */ @@ -221,6 +222,7 @@ void client_manage(Window window) /* create the Client struct, and populate it from the hints on the window */ self = g_new(Client, 1); + self->obwin.type = Window_Client; self->window = window; client_get_all(self); @@ -241,14 +243,14 @@ void client_manage(Window window) grab_server(FALSE); client_list = g_list_append(client_list, self); - stacking_list = g_list_append(stacking_list, self); + stacking_add(self); g_assert(!g_hash_table_lookup(client_map, &self->window)); g_hash_table_insert(client_map, &self->window, self); /* update the focus lists */ focus_order_add_new(self); - stacking_raise(self); + stacking_raise(CLIENT_AS_WINDOW(self)); screen_update_struts(); @@ -335,7 +337,7 @@ void client_unmanage(Client *self) frame_hide(self->frame); client_list = g_list_remove(client_list, self); - stacking_list = g_list_remove(stacking_list, self); + stacking_remove(self); g_hash_table_remove(client_map, &self->window); /* update the focus lists */ @@ -1454,8 +1456,7 @@ static StackLayer calc_layer(Client *self) { StackLayer l; - if (self->iconic) l = Layer_Icon; - else if (self->fullscreen) l = Layer_Fullscreen; + if (self->fullscreen) l = Layer_Fullscreen; else if (self->type == Type_Desktop) l = Layer_Desktop; else if (self->type == Type_Dock) { if (!self->below) l = Layer_Top; @@ -1483,7 +1484,7 @@ static void calc_recursive(Client *self, Client *orig, StackLayer l, if (!raised && l != old) if (orig->frame) /* only restack if the original window is managed */ - stacking_raise(self); + stacking_raise(CLIENT_AS_WINDOW(self)); } void client_calc_layer(Client *self) @@ -2027,7 +2028,7 @@ void client_set_desktop(Client *self, guint target, gboolean donthide) client_showhide(self); /* raise if it was not already on the desktop */ if (old != DESKTOP_ALL) - stacking_raise(self); + stacking_raise(CLIENT_AS_WINDOW(self)); screen_update_struts(); /* add to the new desktop(s) */ @@ -2309,7 +2310,7 @@ void client_activate(Client *self) if (self->shaded) client_shade(self, FALSE); client_focus(self); - stacking_raise(self); + stacking_raise(CLIENT_AS_WINDOW(self)); } gboolean client_focused(Client *self)