From 16a50cd4d4ad4e14b0431182e16fa2643dfc670a Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <fourdan.olivier@wanadoo.fr>
Date: Sat, 26 Apr 2003 20:01:01 +0000
Subject: [PATCH] A few more fixes

(Old svn revision: 11080)
---
 src/client.c     | 24 +++++++++++++++---------
 src/workspaces.c |  2 +-
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/client.c b/src/client.c
index cad546761..d11a56cb0 100644
--- a/src/client.c
+++ b/src/client.c
@@ -3847,19 +3847,25 @@ static GtkToXEventFilterStatus clientMove_event_filter(XEvent * xevent, gpointer
             msx = xevent->xmotion.x_root;
             msy = xevent->xmotion.y_root;
 
-            if((msx == 0) && params.wrap_workspaces && !wrapped)
+            if((msx == 0) && params.workspace_count && !wrapped)
             {
-                XWarpPointer(dpy, None, root, 0, 0, 0, 0, XDisplayWidth(dpy, screen) - 11, msy);
-                msx = xevent->xmotion.x_root = XDisplayWidth(dpy, screen) - 11;
-                workspaceSwitch(workspace - 1, c);
-                wrapped = TRUE;
+                if (workspace > 0)
+                {
+                    XWarpPointer(dpy, None, root, 0, 0, 0, 0, XDisplayWidth(dpy, screen) - 11, msy);
+                    msx = xevent->xmotion.x_root = XDisplayWidth(dpy, screen) - 11;
+                    workspaceSwitch(workspace - 1, c);
+                    wrapped = TRUE;
+                }
             }
             else if((msx == XDisplayWidth(dpy, screen) - 1) && params.wrap_workspaces && !wrapped)
             {
-                XWarpPointer(dpy, None, root, 0, 0, 0, 0, 10, msy);
-                msx = xevent->xmotion.x_root = 10;
-                workspaceSwitch(workspace + 1, c);
-                wrapped = TRUE;
+                if (workspace < params.workspace_count - 1)
+                {
+                    XWarpPointer(dpy, None, root, 0, 0, 0, 0, 10, msy);
+                    msx = xevent->xmotion.x_root = 10;
+                    workspaceSwitch(workspace + 1, c);
+                    wrapped = TRUE;
+                }
             }
             else if (wrapped)
             {
diff --git a/src/workspaces.c b/src/workspaces.c
index af97ed19d..fd273f4e5 100644
--- a/src/workspaces.c
+++ b/src/workspaces.c
@@ -69,7 +69,7 @@ void workspaceSwitch(int new_ws, Client * c2)
     if(previous)
     {
         CLIENT_FLAG_SET(previous, CLIENT_FLAG_FOCUS);
-        if(CLIENT_FLAG_TEST(previous, CLIENT_FLAG_STICKY))
+        if(CLIENT_FLAG_TEST(previous, CLIENT_FLAG_STICKY) || (previous == c2))
         {
             f = previous;
         }
-- 
GitLab