From e33c20f1bbe419dc3a18b463aabb1c93651e4ff4 Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Sun, 14 Dec 2008 16:00:20 +0100 Subject: [PATCH] ewmh: Regulate net_current_desktop in client message event --- src/event.c | 12 +++++++++--- src/ewmh.c | 5 ++++- src/init.c | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/event.c b/src/event.c index f53464f..fa55993 100644 --- a/src/event.c +++ b/src/event.c @@ -109,6 +109,7 @@ void clientmessageevent(XClientMessageEvent *ev) { Client *c; + char tmp[3]; int i, mess_t = 0; if(ev->format != 32) @@ -120,8 +121,13 @@ clientmessageevent(XClientMessageEvent *ev) if(ev->window == ROOT) { /* Manage _NET_CURRENT_DESKTOP */ - if(mess_t == net_current_desktop) - ewmh_get_current_desktop(); + if(mess_t == net_current_desktop + && ev->data.l[0] >= 1 + && ev->data.l[0] < conf.ntag[selscreen]) + { + ITOA(tmp, (int)(ev->data.l[0] + 1)); + uicb_tag(tmp); + } /* Manage _NET_ACTIVE_WINDOW */ if(mess_t == net_active_window) if((c = client_gb_win(ev->data.l[0]))) @@ -373,7 +379,7 @@ propertynotify(XPropertyEvent *ev) break; } if(ev->atom == XA_WM_NAME - || ev->atom == ATOM("_NET_WM_NAME")) + || ev->atom == net_atom[net_wm_name]) client_get_name(c); } diff --git a/src/ewmh.c b/src/ewmh.c index 0fabfa5..9671547 100644 --- a/src/ewmh.c +++ b/src/ewmh.c @@ -89,11 +89,14 @@ ewmh_get_number_of_desktop(void) void ewmh_get_current_desktop(void) { + int t; + screen_get_sel(); + t = seltag[selscreen] - 1; /* Get current desktop (tag) */ XChangeProperty(dpy, ROOT, net_atom[net_current_desktop], XA_CARDINAL, 32, - PropModeReplace, (uchar*)&seltag[selscreen], 1); + PropModeReplace, (uchar*)&t, 1); return; } diff --git a/src/init.c b/src/init.c index 651096a..f7b7582 100644 --- a/src/init.c +++ b/src/init.c @@ -46,6 +46,7 @@ init(void) screen_init_geo(); ewmh_init_hints(); infobar_init(); + ewmh_get_current_desktop(); grabkeys(); /* Warning about font */