From 20e74f62e87bcb3e28ca184c3f506c00871cba26 Mon Sep 17 00:00:00 2001 From: David Delassus Date: Tue, 2 Dec 2008 18:27:07 +0100 Subject: [PATCH] tag: Add tag round Signed-off-by: David Delassus --- src/config.c | 2 ++ src/structs.h | 1 + src/tag.c | 31 ++++++++++++++++++++++--------- wmfsrc | 2 ++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/config.c b/src/config.c index e3255fa..a3e1bcb 100644 --- a/src/config.c +++ b/src/config.c @@ -126,6 +126,7 @@ static cfg_opt_t tag_opts[] = static cfg_opt_t tags_opts[] = { + CFG_BOOL("tag_round", cfg_false, CFGF_NONE), CFG_STR("occupied_bg", "#003366", CFGF_NONE), CFG_STR("sel_fg", "#FFFFFF", CFGF_NONE), CFG_STR("sel_bg", "#354B5C", CFGF_NONE), @@ -455,6 +456,7 @@ init_conf(void) * If there is no tag in the conf or more than * MAXTAG (32) print an error and create only one. */ + conf.tag_round = cfg_getbool(cfg_tags, "tag_round"); conf.colors.tagselfg = strdup(var_to_str(cfg_getstr(cfg_tags, "sel_fg"))); conf.colors.tagselbg = getcolor(var_to_str(cfg_getstr(cfg_tags, "sel_bg"))); conf.colors.tag_occupied_bg = getcolor(var_to_str(cfg_getstr(cfg_tags, "occupied_bg"))); diff --git a/src/structs.h b/src/structs.h index a5bab53..a2906a7 100644 --- a/src/structs.h +++ b/src/structs.h @@ -205,6 +205,7 @@ typedef struct Tag tag[MAXTAG]; Layout layout[NUM_OF_LAYOUT]; int *ntag; + bool tag_round; int nkeybind; int nbutton; int nlayout; diff --git a/src/tag.c b/src/tag.c index 3fbbad6..45b6d6e 100644 --- a/src/tag.c +++ b/src/tag.c @@ -45,20 +45,33 @@ uicb_tag(uicb_t cmd) if(!tmp) tmp = 1; - if(cmd[0] == '+' || cmd[0] == '-') + if(conf.tag_round) { - if(tmp + seltag[selscreen] < 1 - || tmp + seltag[selscreen] > conf.ntag[selscreen]) - return; - seltag[selscreen] += tmp; + if(tmp + seltag[selscreen] < 1) + seltag[selscreen] = conf.ntag[selscreen]; + else if (tmp + seltag[selscreen] > conf.ntag[selscreen]) + seltag[selscreen] = 1; + else + seltag[selscreen] += tmp; } else { - if(tmp == seltag[selscreen] - || tmp > conf.ntag[selscreen]) - return; - seltag[selscreen] = tmp; + if(cmd[0] == '+' || cmd[0] == '-') + { + if(tmp + seltag[selscreen] < 1 + || tmp + seltag[selscreen] > conf.ntag[selscreen]) + return; + seltag[selscreen] += tmp; + } + else + { + if(tmp == seltag[selscreen] + || tmp > conf.ntag[selscreen]) + return; + seltag[selscreen] = tmp; + } } + arrange(); return; diff --git a/wmfsrc b/wmfsrc index a65d260..c0c5374 100644 --- a/wmfsrc +++ b/wmfsrc @@ -38,6 +38,8 @@ layouts tags { + tag_round = false + occupied_tag = "#003366" sel_fg = "#191919" sel_bg = "#7E89A2" border = "#3F485E"