sn_app_started(self->class);
+ /* update the focus lists, do this before the call to change_state or
+ it can end up in the list twice! */
+ focus_order_add_new(self);
+
client_change_state(self);
/* remove the client's border (and adjust re gravity) */
client_apply_startup_state(self);
- /* update the focus lists */
- focus_order_add_new(self);
-
stacking_add(CLIENT_AS_WINDOW(self));
client_restore_session_stacking(self);
client_update_wmhints(self);
client_get_startup_id(self);
client_get_desktop(self);
- client_get_state(self);
client_get_shaped(self);
client_get_mwm_hints(self);
client_get_type(self);/* this can change the mwmhints for special cases */
+ client_get_state(self);
+
{
/* a couple type-based defaults for new windows */
/* this makes sure that these windows appear on all desktops */
if (self->type == OB_CLIENT_TYPE_DESKTOP)
self->desktop = DESKTOP_ALL;
-
- /* dock windows default to ABOVE */
- if (self->type == OB_CLIENT_TYPE_DOCK && !self->below)
- self->above = TRUE;
}
client_update_protocols(self);
for (it = self->group->members; it; it = g_slist_next(it)) {
ObClient *c = it->data;
if (c != self && !client_search_transient(self, c) &&
- client_normal(self) == client_normal(c))
+ client_normal(self) && client_normal(c))
{
layer = MAX(layer,
(c->above ? 1 : (c->below ? -1 : 0)));
else if (self->type == OB_CLIENT_TYPE_DOCK) {
if (self->above) l = OB_STACKING_LAYER_DOCK_ABOVE;
else if (self->below) l = OB_STACKING_LAYER_DOCK_BELOW;
- else l = OB_STACKING_LAYER_NORMAL;
+ else l = OB_STACKING_LAYER_DOCK_NORMAL;
}
else if (self->above) l = OB_STACKING_LAYER_ABOVE;
else if (self->below) l = OB_STACKING_LAYER_BELOW;
fullscreen = TRUE;
} else if (state == prop_atoms.net_wm_state_above) {
self->above = TRUE;
+ self->below = FALSE;
} else if (state == prop_atoms.net_wm_state_below) {
+ self->above = FALSE;
self->below = TRUE;
} else if (state == prop_atoms.ob_wm_state_undecorated) {
undecorated = TRUE;