- if (self->id == -1) {
- if (self->data.normal.data) /* it's set to NULL if its destroyed */
- client_activate(self->data.normal.data, FALSE, TRUE);
+ ObClient *t = self->data.normal.data;
+ if (t) { /* it's set to NULL if its destroyed */
+ gboolean here = state & ShiftMask;
+
+ client_activate(t, TRUE, here, TRUE, TRUE, TRUE);
+ /* if the window is omnipresent then we need to go to its
+ desktop */
+ if (!here && t->desktop == DESKTOP_ALL)
+ screen_set_desktop(self->id, FALSE);