mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
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:
parent
3e309894c1
commit
3c60d854db
3
calmwm.h
3
calmwm.h
@ -526,7 +526,8 @@ extern struct conf Conf;
|
||||
#define _NET_SUPPORTED cwm_atoms[7]
|
||||
#define _NET_SUPPORTING_WM_CHECK cwm_atoms[8]
|
||||
#define _NET_WM_NAME cwm_atoms[9]
|
||||
#define CWM_NO_ATOMS 10
|
||||
#define _NET_ACTIVE_WINDOW cwm_atoms[10]
|
||||
#define CWM_NO_ATOMS 11
|
||||
#define CWM_NETWM_START 7
|
||||
|
||||
extern Atom cwm_atoms[CWM_NO_ATOMS];
|
||||
|
21
client.c
21
client.c
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user