make it possible to cycle through the windows when non are selected.

(eg. when they're hidden, now you can cycle through them)

from aon@iki.fi
This commit is contained in:
jasper 2007-06-05 19:03:20 +00:00
parent 15fdb76df9
commit c025dc9089
4 changed files with 18 additions and 9 deletions

View File

@ -320,7 +320,7 @@ u_long client_bg_pixel(struct client_ctx *);
Pixmap client_bg_pixmap(struct client_ctx *); Pixmap client_bg_pixmap(struct client_ctx *);
void client_map(struct client_ctx *cc); void client_map(struct client_ctx *cc);
void client_mtf(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_cycleinfo(struct client_ctx *cc);
void client_altrelease(); void client_altrelease();
struct client_ctx *client_mrunext(struct client_ctx *cc); struct client_ctx *client_mrunext(struct client_ctx *cc);

View File

@ -604,14 +604,23 @@ match:
*/ */
struct client_ctx * 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 *) = struct client_ctx *(*iter)(struct client_ctx *) =
reverse ? &client_mruprev : &client_mrunext; reverse ? &client_mruprev : &client_mrunext;
/* TODO: maybe this should just be a CIRCLEQ. */ /* 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 altheld; then reset the iterator to the beginning */
if (!sc->altpersist || sc->cycle_client == NULL) if (!sc->altpersist || sc->cycle_client == NULL)
sc->cycle_client = TAILQ_FIRST(&sc->mruq); sc->cycle_client = TAILQ_FIRST(&sc->mruq);

4
conf.c
View File

@ -199,9 +199,9 @@ conf_setup(struct conf *c)
conf_bindkey(c, kbfunc_menu_search, conf_bindkey(c, kbfunc_menu_search,
XK_slash, ControlMask, 0, 0); XK_slash, ControlMask, 0, 0);
conf_bindkey(c, kbfunc_client_cycle, conf_bindkey(c, kbfunc_client_cycle,
XK_Tab, Mod1Mask, KBFLAG_NEEDCLIENT, 0); XK_Tab, Mod1Mask, 0, 0);
conf_bindkey(c, kbfunc_client_rcycle, 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, conf_bindkey(c, kbfunc_client_label, XK_l,
ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT, 0); ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT, 0);
conf_bindkey(c, kbfunc_client_delete, XK_x, conf_bindkey(c, kbfunc_client_delete, XK_x,

View File

@ -85,15 +85,15 @@ kbfunc_menu_search(struct client_ctx *scratch, void *arg)
} }
void 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 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 void