summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--kbfunc.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/kbfunc.c b/kbfunc.c
index 2f8d95d..f805360 100644
--- a/kbfunc.c
+++ b/kbfunc.c
@@ -450,7 +450,16 @@ kbfunc_client_cycle(void *ctx, struct cargs *cargs)
 		newcc->ptr.x = newcc->geom.w / 2;
 		newcc->ptr.y = newcc->geom.h / 2;
 	}
-	client_ptr_warp(newcc);
+
+	/* When no client is active, warp pointer to last active. */
+	if (oldcc->flags & (CLIENT_ACTIVE))
+		client_ptr_warp(newcc);
+	else if (oldcc->flags & (CLIENT_SKIP_CYCLE))
+		client_ptr_warp(newcc);
+	else {
+		client_raise(oldcc);
+		client_ptr_warp(oldcc);
+	}
 }
 
 void