ewmh: Regulate net_current_desktop in client message event

This commit is contained in:
Martin Duquesnoy 2008-12-14 16:00:20 +01:00
parent f8d1049240
commit e33c20f1bb
3 changed files with 14 additions and 4 deletions

View File

@ -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);
}

View File

@ -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;
}

View File

@ -46,6 +46,7 @@ init(void)
screen_init_geo();
ewmh_init_hints();
infobar_init();
ewmh_get_current_desktop();
grabkeys();
/* Warning about font */