diff --git a/src/client.c b/src/client.c
index abe4c44a61ab0e82773416c5b2a2af8925a72a81..7fb42af2ea068dfaa30f35853c75b29661ea287f 100644
--- a/src/client.c
+++ b/src/client.c
@@ -4263,20 +4263,21 @@ clientCycle (Client * c, XEvent * ev)
 
         c = passdata.c;
         workspace = c->win_workspace;
+        focused = clientGetFocus ();
 
         if (workspace != screen_info->current_ws)
         {
             workspaceSwitch (screen_info, workspace, c, FALSE);
         }
 
-        clientShow (c, TRUE);
-        clientClearAllShowDesktop (screen_info);
-        clientSetFocus (screen_info, c, myDisplayGetCurrentTime (display_info), NO_FOCUS_FLAG);
-        focused = clientGetFocus ();
         if ((focused) && (passdata.c != focused))
         {
+            clientClearAllShowDesktop (screen_info);
             clientAdjustFullscreenLayer (focused, FALSE);
         }
+
+        clientShow (c, TRUE);
+        clientSetFocus (screen_info, c, myDisplayGetCurrentTime (display_info), NO_FOCUS_FLAG);
         clientRaise (c, None);
     }
 }