about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--calmwm.h2
-rw-r--r--client.c13
-rw-r--r--conf.c4
-rw-r--r--kbfunc.c8
4 files changed, 18 insertions, 9 deletions
diff --git a/calmwm.h b/calmwm.h
index be8ff72..d8158ea 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -320,7 +320,7 @@ u_long             client_bg_pixel(struct client_ctx *);
 Pixmap             client_bg_pixmap(struct client_ctx *);
 void               client_map(struct client_ctx *cc);
 void               client_mtf(struct client_ctx *cc);
-struct client_ctx *client_cyclenext(struct client_ctx *cc, int reverse);
+struct client_ctx *client_cyclenext(int reverse);
 void               client_cycleinfo(struct client_ctx *cc);
 void               client_altrelease();
 struct client_ctx *client_mrunext(struct client_ctx *cc);
diff --git a/client.c b/client.c
index efaa925..54c8172 100644
--- a/client.c
+++ b/client.c
@@ -604,14 +604,23 @@ match:
  */
 
 struct client_ctx *
-client_cyclenext(struct client_ctx *cc, int reverse)
+client_cyclenext(int reverse)
 {
-	struct screen_ctx *sc = CCTOSC(cc);
+	struct screen_ctx *sc;
+	struct client_ctx *cc;
 	struct client_ctx *(*iter)(struct client_ctx *) =
 	    reverse ? &client_mruprev : &client_mrunext;
 
 	/* TODO: maybe this should just be a CIRCLEQ. */
 
+	if (!(cc = _curcc)) {
+		if (TAILQ_EMPTY(&Clientq))
+			return(NULL);
+		cc = TAILQ_FIRST(&Clientq);
+	}
+
+	sc = CCTOSC(cc);
+
 	/* if altheld; then reset the iterator to the beginning */
 	if (!sc->altpersist || sc->cycle_client == NULL)
 		sc->cycle_client = TAILQ_FIRST(&sc->mruq);
diff --git a/conf.c b/conf.c
index 48c44df..011ed80 100644
--- a/conf.c
+++ b/conf.c
@@ -199,9 +199,9 @@ conf_setup(struct conf *c)
 		conf_bindkey(c, kbfunc_menu_search,
 		    XK_slash, ControlMask, 0, 0);
 		conf_bindkey(c, kbfunc_client_cycle,
-		    XK_Tab, Mod1Mask, KBFLAG_NEEDCLIENT, 0);
+		    XK_Tab, Mod1Mask, 0, 0);
 		conf_bindkey(c, kbfunc_client_rcycle,
-		    XK_Tab, Mod1Mask|ShiftMask, KBFLAG_NEEDCLIENT, 0);
+		    XK_Tab, Mod1Mask|ShiftMask, 0, 0);
 		conf_bindkey(c, kbfunc_client_label, XK_l,
 		    ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT, 0);
 		conf_bindkey(c, kbfunc_client_delete, XK_x,
diff --git a/kbfunc.c b/kbfunc.c
index 7996442..99a7ee2 100644
--- a/kbfunc.c
+++ b/kbfunc.c
@@ -85,15 +85,15 @@ kbfunc_menu_search(struct client_ctx *scratch, void *arg)
 }
 
 void
-kbfunc_client_cycle(struct client_ctx *cc, void *arg)
+kbfunc_client_cycle(struct client_ctx *scratch, void *arg)
 {
-	client_cyclenext(cc, 0);
+	client_cyclenext(0);
 }
 
 void
-kbfunc_client_rcycle(struct client_ctx *cc, void *arg)
+kbfunc_client_rcycle(struct client_ctx *scratch, void *arg)
 {
-	client_cyclenext(cc, 1);
+	client_cyclenext(1);
 }
 
 void