diff --git a/defaults/defaults b/defaults/defaults
index 99e06fc103cfbe4d1ebb6f50c9470c57f3b07086..b4777714a1d054e1211fae329ea35460fcd6f0ed 100644
--- a/defaults/defaults
+++ b/defaults/defaults
@@ -35,6 +35,6 @@ workspace_count=4
 wrap_resistance=10
 wrap_windows=true
 wrap_workspaces=false
-wrap_layout=false
+wrap_layout=true
 wrap_cycle=true
 scroll_workspaces=true
diff --git a/src/client.c b/src/client.c
index 059f4b6d2e49270413af055a312f9eccf1671afd..cce862e52921972aff5ad4afa6c67ad3447a2f82 100644
--- a/src/client.c
+++ b/src/client.c
@@ -2132,10 +2132,8 @@ clientToggleShowDesktop (ScreenInfo *screen_info, gboolean show_desktop)
                 && FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER)
                 && !FLAG_TEST (c->flags, CLIENT_FLAG_ICONIFIED))
             {
-                {
-                    FLAG_SET (c->xfwm_flags, XFWM_FLAG_WAS_SHOWN);
-                    clientHide (c, c->win_workspace, TRUE);
-                }
+                FLAG_SET (c->xfwm_flags, XFWM_FLAG_WAS_SHOWN);
+                clientHide (c, c->win_workspace, TRUE);
             }
         }
         clientFocusTop (screen_info, WIN_LAYER_DESKTOP);
@@ -2147,9 +2145,7 @@ clientToggleShowDesktop (ScreenInfo *screen_info, gboolean show_desktop)
             Client *c = (Client *) index->data;
             if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_WAS_SHOWN))
             {
-                {
-                    clientShow (c, TRUE);
-                }
+                clientShow (c, TRUE);
             }
             FLAG_UNSET (c->xfwm_flags, XFWM_FLAG_WAS_SHOWN);
         }
diff --git a/src/workspaces.c b/src/workspaces.c
index ec8ba79b5b421d059da2245e7adb604bb5204db1..9ca2bed7e3b18659aefca3162fe867369bb4a02b 100644
--- a/src/workspaces.c
+++ b/src/workspaces.c
@@ -170,7 +170,7 @@ modify_with_wrap (int value, int by, int limit, gboolean wrap)
 gboolean
 workspaceMove (ScreenInfo *screen_info, int rowmod, int colmod, Client * c2)
 {
-    int row, col, newrow, newcol, n;
+    int row, col, newrow, newcol, previous_ws, n;
 
     workspaceGetPosition(screen_info, screen_info->current_ws, &row, &col);
     newrow = modify_with_wrap(row, rowmod, screen_info->desktop_layout.rows, screen_info->params->wrap_layout);
@@ -182,7 +182,8 @@ workspaceMove (ScreenInfo *screen_info, int rowmod, int colmod, Client * c2)
         return FALSE;
     }
 
-    if (n < screen_info->workspace_count)
+    previous_ws = screen_info->current_ws;
+    if ((n >= 0) && (n < screen_info->workspace_count))
     {
         workspaceSwitch(screen_info, n, c2);
     }
@@ -208,15 +209,15 @@ workspaceMove (ScreenInfo *screen_info, int rowmod, int colmod, Client * c2)
             }
             else 
             {
-                g_return_val_if_fail(FALSE, FALSE);
+                return FALSE;
             }
 
             n = workspaceGetNumber(screen_info, newrow, newcol);
         }
-        g_return_val_if_fail(n < screen_info->workspace_count, FALSE);
         workspaceSwitch(screen_info, n, c2);
     }
-    return TRUE;
+
+    return (screen_info->current_ws != previous_ws);
 }
 
 void