diff --git a/src/config.c b/src/config.c index d0ef085..cd7aeba 100644 --- a/src/config.c +++ b/src/config.c @@ -55,6 +55,8 @@ func_name_list_t tmp_func_list[] = {"tag_prev", uicb_tag_prev }, {"tag_prev_sel", uicb_tag_prev_sel }, {"tag_transfert", uicb_tagtransfert }, + {"tag_transfert_next", uicb_tagtransfert_next }, + {"tag_transfert_prev", uicb_tagtransfert_prev }, {"set_mwfact", uicb_set_mwfact }, {"set_nmaster", uicb_set_nmaster }, {"quit", uicb_quit }, diff --git a/src/tag.c b/src/tag.c index c6b9132..ade87fd 100644 --- a/src/tag.c +++ b/src/tag.c @@ -184,3 +184,42 @@ uicb_tag_prev_sel(uicb_t cmd) return; } +/** Transfert the selected client to the next tag + * \param cmd uicb_t type unused +*/ +void +uicb_tagtransfert_next(uicb_t cmd) +{ + CHECK(sel); + int tag = seltag[selscreen] + 1; + + if(tag > conf.ntag[selscreen]) + { + if(!conf.tag_round) + return; + tag = 1; + } + tag_transfert(sel, tag); + + return; +} + +/** Transfert the selected client to the prev tag + * \param cmd uicb_t type unused +*/ +void +uicb_tagtransfert_prev(uicb_t cmd) +{ + CHECK(sel); + int tag = seltag[selscreen] - 1; + + if(tag <= 0) + { + if(!conf.tag_round) + return; + tag = conf.ntag[selscreen]; + } + tag_transfert(sel, tag); + + return; +} diff --git a/src/viwmfs.c b/src/viwmfs.c index 4be3b7d..dd83410 100644 --- a/src/viwmfs.c +++ b/src/viwmfs.c @@ -49,6 +49,8 @@ vicmd_to_uicb vicmd[] = {"sp", "screen_prev"}, {"cc", "client_kill"}, {"ct", "tag_transfert"}, + {"ctn", "tag_transfert_next"}, + {"ctp", "tag_transfert_prev"}, {"cn", "client_next"}, {"cp", "client_prev"}, {"csn", "client_swap_next"}, diff --git a/src/wmfs.h b/src/wmfs.h index 507f786..5c8f65f 100644 --- a/src/wmfs.h +++ b/src/wmfs.h @@ -268,7 +268,9 @@ void uicb_tag(uicb_t); void uicb_tag_next(uicb_t); void uicb_tag_prev(uicb_t); void uicb_tagtransfert(uicb_t); -void uicb_tag_prev_sel(uicb_t cmd); +void uicb_tag_prev_sel(uicb_t); +void uicb_tagtransfert_next(uicb_t); +void uicb_tagtransfert_prev(uicb_t); /* screen.c */ int screen_count(void);