/* non-zero defaults */
self->title_count = 1;
- self->wmstate = NormalState;
+ self->wmstate = WithdrawnState; /* make sure it gets updated first time */
self->layer = -1;
self->desktop = screen_num_desktops; /* always an invalid value */
self->user_time = ~0; /* maximum value, always newer than the real time */
GSList *it;
for (it = config_per_app_settings; it; it = g_slist_next(it)) {
- ObAppSettings *app;
+ ObAppSettings *app = it->data;
if ((app->name && !app->class && !strcmp(app->name, self->name))
|| (app->class && !app->name && !strcmp(app->class, self->class))
gulong netstate[11];
guint num;
- client_change_wm_state(self);
-
num = 0;
if (self->modal)
netstate[num++] = prop_atoms.net_wm_state_modal;
if (!self->frame->visible)
frame_show(self->frame);
}
- else if (self->frame->visible)
+ else if (self->frame->visible) {
frame_hide(self->frame);
+ /* Fall back focus since we're disappearing */
+ if (focus_client == self)
+ client_unfocus(self);
+ }
+
/* According to the ICCCM (sec 4.1.3.1) when a window is not visible, it
needs to be in IconicState. This includes when it is on another
desktop!
bottom'. */
focus_order_to_top(self);
- /* Fall back focus since we're disappearing */
- if (focus_client == self)
- client_unfocus(self);
-
changed = TRUE;
}
} else {
self->shaded = shade;
client_change_state(self);
+ client_change_wm_state(self); /* the window is being hidden/shown */
/* resize the frame to just the titlebar */
frame_adjust_area(self->frame, FALSE, FALSE, FALSE);
}