From 6f82c7340912cf382173757bf2b3433233c9c819 Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Tue, 6 Apr 2010 01:33:18 +0200 Subject: [PATCH] Tag: Add uicb_tag_urgent to go to urgent tag (Feature #37 request bien Erus) --- src/config.c | 1 + src/event.c | 6 +++--- src/tag.c | 27 +++++++++++++++++++++++++++ src/wmfs.h | 1 + 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index dc53cc2..deb4843 100644 --- a/src/config.c +++ b/src/config.c @@ -57,6 +57,7 @@ func_name_list_t tmp_func_list[] = {"tag_transfert", uicb_tagtransfert }, {"tag_transfert_next", uicb_tagtransfert_next }, {"tag_transfert_prev", uicb_tagtransfert_prev }, + {"tag_urgent", uicb_tag_urgent }, {"set_mwfact", uicb_set_mwfact }, {"set_nmaster", uicb_set_nmaster }, {"quit", uicb_quit }, diff --git a/src/event.c b/src/event.c index 5b92f81..cee116f 100644 --- a/src/event.c +++ b/src/event.c @@ -466,7 +466,7 @@ propertynotify(XPropertyEvent *ev) { switch(ev->atom) { - case XA_WM_TRANSIENT_FOR: + case XA_WM_TRANSIENT_FOR: XGetTransientForHint(dpy, c->win, &trans); if((c->flags & TileFlag || c->flags & MaxFlag)) if(((c->flags & HintFlag && (client_gb_win(trans) != NULL))) @@ -491,10 +491,10 @@ propertynotify(XPropertyEvent *ev) client_get_name(c); break; default: + if(ev->atom == net_atom[net_wm_name]) + client_get_name(c); break; } - if(ev->atom == net_atom[net_wm_name]) - client_get_name(c); } return; diff --git a/src/tag.c b/src/tag.c index 1505862..5fbfd5f 100644 --- a/src/tag.c +++ b/src/tag.c @@ -223,3 +223,30 @@ uicb_tagtransfert_prev(uicb_t cmd) return; } + +/** Go to the current urgent tag + *\param cmd uicb_t type unused + */ +void +uicb_tag_urgent(uicb_t cmd) +{ + Client *c; + Bool b = False; + + /* Check if there is a urgent client */ + for(c = clients; c; c = c->next) + if(c->flags & UrgentFlag) + { + b = True; + break; + } + + if(!b) + return; + + screen_set_sel(c->screen); + tag_set(c->tag); + client_focus(c); + + return; +} diff --git a/src/wmfs.h b/src/wmfs.h index 8311017..f9ba92e 100644 --- a/src/wmfs.h +++ b/src/wmfs.h @@ -288,6 +288,7 @@ void uicb_tagtransfert(uicb_t); void uicb_tag_prev_sel(uicb_t); void uicb_tagtransfert_next(uicb_t); void uicb_tagtransfert_prev(uicb_t); +void uicb_tag_urgent(uicb_t cmd); /* screen.c */ int screen_count(void);