Add uicb screen move client next/prev
This commit is contained in:
parent
3e684a5916
commit
4da3889b86
@ -82,6 +82,8 @@ static const struct { char *name; void (*func)(Uicb cmd); } uicb_list[] =
|
||||
/* Screen */
|
||||
{ "screen_next", uicb_screen_next },
|
||||
{ "screen_prev", uicb_screen_prev },
|
||||
{ "screen_move_client_next", uicb_screen_move_client_next },
|
||||
{ "screen_move_client_prev", uicb_screen_move_client_prev },
|
||||
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
37
src/screen.c
37
src/screen.c
@ -126,6 +126,43 @@ uicb_screen_prev(Uicb cmd)
|
||||
screen_select(SLIST_FIRST(&W->h.screen));
|
||||
}
|
||||
|
||||
static void
|
||||
screen_move_client(struct client *c, struct screen *s)
|
||||
{
|
||||
if (c && s) {
|
||||
c->screen = s;
|
||||
tag_client(s->seltag, c);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
uicb_screen_move_client_next(Uicb cmd)
|
||||
{
|
||||
struct screen *s;
|
||||
(void)cmd;
|
||||
|
||||
if(!(s = SLIST_NEXT(W->screen, next)))
|
||||
s = SLIST_FIRST(&W->h.screen);
|
||||
|
||||
screen_move_client(W->client, s);
|
||||
}
|
||||
|
||||
void
|
||||
uicb_screen_move_client_prev(Uicb cmd)
|
||||
{
|
||||
struct screen *s;
|
||||
(void)cmd;
|
||||
|
||||
SLIST_FOREACH(s, &W->h.screen, next)
|
||||
if(SLIST_NEXT(W->screen, next) == s)
|
||||
{
|
||||
screen_move_client(W->client, s);
|
||||
return;
|
||||
}
|
||||
|
||||
screen_move_client(W->client, SLIST_FIRST(&W->h.screen));
|
||||
}
|
||||
|
||||
void
|
||||
screen_free(void)
|
||||
{
|
||||
|
||||
@ -45,6 +45,8 @@ struct screen* screen_update_sel(void);
|
||||
void screen_free(void);
|
||||
void uicb_screen_next(Uicb cmd);
|
||||
void uicb_screen_prev(Uicb cmd);
|
||||
void uicb_screen_move_client_next(Uicb cmd);
|
||||
void uicb_screen_move_client_prev(Uicb cmd);
|
||||
|
||||
|
||||
#endif /* SCREEN_H */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user