summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/client.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 0ee50434..4bad7d82 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -237,9 +237,6 @@ void client_manage(Window window)
client_get_all(self);
client_restore_session_state(self);
- /* set the desktop hint, to make sure that it always exists */
- PROP_SET32(self->window, net_wm_desktop, cardinal, self->desktop);
-
client_change_state(self);
/* remove the client's border (and adjust re gravity) */
@@ -472,10 +469,13 @@ static void client_restore_session_state(ObClient *self)
if (!(s)) return;
RECT_SET(self->area, s->x, s->y, s->w, s->h);
- XResizeWindow(ob_display, self->window, s->w, s->h);
self->positioned = TRUE;
+ XResizeWindow(ob_display, self->window, s->w, s->h);
+
self->desktop = s->desktop == DESKTOP_ALL ? s->desktop :
MIN(screen_num_desktops - 1, s->desktop);
+ PROP_SET32(self->window, net_wm_desktop, cardinal, self->desktop);
+
self->shaded = s->shaded;
self->iconic = s->iconic;
self->skip_pager = s->skip_pager;
@@ -704,6 +704,10 @@ static void client_get_desktop(ObClient *self)
/* defaults to the current desktop */
self->desktop = screen_desktop;
}
+ if (self->desktop != d) {
+ /* set the desktop hint, to make sure that it always exists */
+ PROP_SET32(self->window, net_wm_desktop, cardinal, self->desktop);
+ }
}
static void client_get_state(ObClient *self)