diff --git a/src/client.c b/src/client.c
index 47bd13cd8b94114faf02323f5f09513dc24058a8..d6521ed453a7124c23c2087be9c8e5e655bf2899 100644
--- a/src/client.c
+++ b/src/client.c
@@ -1741,21 +1741,15 @@ void clientHideAll(Client * c)
 
     for(c2 = c->next, i = 0; i < client_count; c2 = c2->next, i++)
     {
-        if ((c2 != c) && (c2->type == WINDOW_NORMAL))
+        if ((c2 != c) && (c2->transient_for == None) && (c2->visible) && (c2->type == WINDOW_NORMAL) && (c2->has_border) && !(c2->skip_taskbar))
 	{
-            if (c)
+	    if ((c) && (c->transient_for != c2->window))
 	    {
-	        if ((c->transient_for != c2->window) && (c2->transient_for != c->window) && (c2->win_workspace == c->win_workspace))
-		{
-		    clientHide(c2, True);
-		}
+		clientHide(c2, True);
 	    }
-	    else
+	    else if (!c)
 	    {
-	        if ((c2->transient_for == None) && (c2->win_workspace == workspace))
-		{
-		    clientHide(c2, True);
-		}
+		clientHide(c2, True);
 	    }
 	}
     }