#include "client.h"
+#include "slit.h"
#include "startup.h"
#include "screen.h"
#include "moveresize.h"
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;
XEvent e;
XWindowAttributes attrib;
XSetWindowAttributes attrib_set;
-/* XWMHints *wmhint; */
+ XWMHints *wmhint;
grab_server(TRUE);
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 */
/* 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);
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();
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 */
{
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;
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)
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) */
if (self->shaded)
client_shade(self, FALSE);
client_focus(self);
- stacking_raise(self);
+ stacking_raise(CLIENT_AS_WINDOW(self));
}
gboolean client_focused(Client *self)