diff --git a/dwm.c b/dwm.c index de10b78..e05387f 100644 --- a/dwm.c +++ b/dwm.c @@ -450,12 +450,8 @@ arrangemon(Monitor *m) if (ISVISIBLE(client)) ++visible_clients; } - const LayoutsSymbolFunc symbol_func = - m->lt[m->sellt]->symbol_func == NULL - ? layouts_symbol_unknown - : m->lt[m->sellt]->symbol_func; - - symbol_func( + layouts_symbol_func( + m->lt[m->sellt]->symbol_func, m->ltsymbol, sizeof(m->ltsymbol), m->nmaster, @@ -829,12 +825,13 @@ createmon(void) m->lt[0] = &layouts[0]; m->lt[1] = &layouts[1 % LENGTH(layouts)]; - const LayoutsSymbolFunc symbol_func = - layouts[0].symbol_func == NULL - ? layouts_symbol_unknown - : layouts[0].symbol_func; - - symbol_func(m->ltsymbol, sizeof(m->ltsymbol), 0, 0); + layouts_symbol_func( + layouts[0].symbol_func, + m->ltsymbol, + sizeof(m->ltsymbol), + 0, + 0 + ); m->pertag = ecalloc(1, sizeof(Pertag)); m->pertag->curtag = m->pertag->prevtag = 1; @@ -1956,12 +1953,8 @@ setlayout(const Arg *arg) if (ISVISIBLE(client)) ++visible_clients; } - const LayoutsSymbolFunc symbol_func = - selmon->lt[selmon->sellt]->symbol_func == NULL - ? layouts_symbol_unknown - : selmon->lt[selmon->sellt]->symbol_func; - - symbol_func( + layouts_symbol_func( + selmon->lt[selmon->sellt]->symbol_func, selmon->ltsymbol, sizeof(selmon->ltsymbol), selmon->nmaster, diff --git a/layouts.c b/layouts.c index a9b635e..c5e52b2 100644 --- a/layouts.c +++ b/layouts.c @@ -5,6 +5,25 @@ #define TMP_BUFFER_SIZE 128 +void layouts_symbol_func( + LayoutsSymbolFunc func, + char *const buffer, + const size_t buffer_size, + const unsigned int clients_in_master, + const unsigned int visible_clients +) { + if (func == NULL) { + func = layouts_symbol_unknown; + } + + func( + buffer, + buffer_size, + clients_in_master, + visible_clients + ); +} + void layouts_symbol_unknown( char *const buffer, const size_t buffer_size, diff --git a/layouts.h b/layouts.h index a60f19d..f4408a8 100644 --- a/layouts.h +++ b/layouts.h @@ -10,6 +10,14 @@ typedef void (*LayoutsSymbolFunc)( unsigned int visible_clients ); +void layouts_symbol_func( + LayoutsSymbolFunc func, + char *buffer, + size_t buffer_size, + unsigned int clients_in_master, + unsigned int visible_clients +); + void layouts_symbol_unknown( char *buffer, size_t buffer_size,