Implement _NET_ACTIVE_WINDOW. for now just the informational hint is

supported, the client message to change this will be supported when all
informational hints are working.

ok okan@
This commit is contained in:
oga
2009-12-07 22:21:59 +00:00
parent 3e309894c1
commit 3c60d854db
3 changed files with 22 additions and 3 deletions

View File

@@ -23,6 +23,7 @@
static struct client_ctx *client_mrunext(struct client_ctx *);
static struct client_ctx *client_mruprev(struct client_ctx *);
static void client_none(struct screen_ctx *);
static void client_placecalc(struct client_ctx *);
static void client_update(struct client_ctx *);
static void client_gethints(struct client_ctx *);
@@ -142,7 +143,7 @@ client_delete(struct client_ctx *cc)
TAILQ_REMOVE(&Clientq, cc, entry);
if (_curcc == cc)
_curcc = NULL;
client_none(sc);
XFree(cc->size);
@@ -202,12 +203,28 @@ client_setactive(struct client_ctx *cc, int fg)
if (fg && _curcc != cc) {
client_setactive(NULL, 0);
_curcc = cc;
XChangeProperty(X_Dpy, sc->rootwin, _NET_ACTIVE_WINDOW,
XA_WINDOW, 32, PropModeReplace,
(unsigned char *)&cc->win, 1);
}
cc->active = fg;
client_draw_border(cc);
}
/*
* set when there is no active client
*/
static void
client_none(struct screen_ctx *sc)
{
Window none = None;
XChangeProperty(X_Dpy, sc->rootwin, _NET_ACTIVE_WINDOW,
XA_WINDOW, 32, PropModeReplace, (unsigned char *)&none, 1);
_curcc = NULL;
}
struct client_ctx *
client_current(void)
{
@@ -399,7 +416,7 @@ client_hide(struct client_ctx *cc)
xu_setstate(cc, IconicState);
if (cc == _curcc)
_curcc = NULL;
client_none(cc->sc);
}
void