From 627b5a790f8e5fb0cdc4f82cf500b51a40fdabb0 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <fourdan.olivier@wanadoo.fr>
Date: Tue, 9 Jul 2002 11:08:37 +0000
Subject: [PATCH] transient windows/workspace switch stuff

(Old svn revision: 10438)
---
 src/hints.c      | 2 +-
 src/workspaces.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/hints.c b/src/hints.c
index f82f9f7ba..e05c9d10a 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 3bb4f2f50..49a577d01 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)
-- 
GitLab