diff --git a/src/hints.c b/src/hints.c index f82f9f7bae6635085c27b011ade2852b03562dc1..e05c9d10adf4b14d1b42a9ea7f431eb6610213b1 100644 --- a/src/hints.c +++ b/src/hints.c @@ -564,7 +564,7 @@ void getTransientFor(Display * dpy, Window w, Window * transient_for) { DBG("entering getTransientFor\n"); - if(!XGetTransientForHint(dpy, w, transient_for)) + if(!XGetTransientForHint(dpy, w, transient_for) || (*transient_for == w)) { *transient_for = None; } diff --git a/src/workspaces.c b/src/workspaces.c index 3bb4f2f507a55227ba96c3bee13c3fb7fd228339..49a577d013ff1548fcc419e8aec43b4c1341a15d 100644 --- a/src/workspaces.c +++ b/src/workspaces.c @@ -89,7 +89,7 @@ void workspaceSwitch(int new_ws, Client * c2) for(last = clients, i = 0; i < client_count; last = last->next, i++); for(c = last, i = 0; i < client_count; c = c->prev, i++) { - if((c->visible) && !(c->sticky) && ((c->win_workspace != new_ws))) + if((c->visible) && !(c->sticky) && !(c->transient_for) && ((c->win_workspace != new_ws))) { clientHide(c, False); } @@ -103,7 +103,7 @@ void workspaceSwitch(int new_ws, Client * c2) } else { - if((c->win_workspace == new_ws) && !(c->hidden)) + if((c->win_workspace == new_ws) && !(c->transient_for) && !(c->hidden)) { clientShow(c, False); if(c->focus)