From d6afd65f6f7bda5dbe6a5cf0b6ce967a5c85f9e3 Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Wed, 15 Feb 2012 18:52:05 +0100 Subject: [PATCH] Fix urgent flag of tag when hint appears on current tag & try a new way to handle unmap event --- src/event.c | 23 +++++++++++++---------- src/tag.c | 3 +-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/event.c b/src/event.c index fe165e9..3fded6f 100644 --- a/src/event.c +++ b/src/event.c @@ -316,18 +316,21 @@ event_unmapnotify(XEvent *e) struct client *c; struct _systray *s; - if((c = client_gb_win(ev->window)) - && ev->send_event - && ev->event == W->root) + if((c = client_gb_win(ev->window))) { - int d; - unsigned char *ret = NULL; + if(!ev->send_event) + { + int d; + unsigned char *ret = NULL; - if(XGetWindowProperty(EVDPY(e), c->win, W->net_atom[wm_state], 0, 2, - False, W->net_atom[wm_state], (Atom*)&d, &d, - (long unsigned int*)&d, (long unsigned int*)&d, &ret) == Success) - if(*ret == NormalState) - client_remove(c); + if(XGetWindowProperty(EVDPY(e), c->win, W->net_atom[wm_state], 0, 2, + False, W->net_atom[wm_state], (Atom*)&d, &d, + (long unsigned int*)&d, (long unsigned int*)&d, &ret) == Success) + if(*ret == NormalState) + client_remove(c); + } + else + client_unmap(c); } else if((s = systray_find(ev->window))) { diff --git a/src/tag.c b/src/tag.c index a1a0fa4..a9c9d06 100644 --- a/src/tag.c +++ b/src/tag.c @@ -60,8 +60,7 @@ tag_screen(struct screen *s, struct tag *t) if(!SLIST_EMPTY(&t->clients) && !(W->flags & WMFS_SCAN)) client_focus( client_tab_next(t->sel)); - if(t->flags & TAG_URGENT) - t->flags ^= TAG_URGENT; + t->flags &= ~TAG_URGENT; infobar_elem_screen_update(s, ElemTag);