stash WMProtocols in flags

This commit is contained in:
okan 2013-11-08 17:35:12 +00:00
parent c1bc6d37b3
commit 3bb928a1c2
2 changed files with 7 additions and 11 deletions

View File

@ -126,11 +126,6 @@ struct winname {
};
TAILQ_HEAD(winname_q, winname);
enum wm_protocols {
_WM_DELETE_WINDOW = 0x0001,
_WM_TAKE_FOCUS = 0x0002,
};
struct client_ctx {
TAILQ_ENTRY(client_ctx) entry;
TAILQ_ENTRY(client_ctx) group_entry;
@ -157,7 +152,6 @@ struct client_ctx {
int x; /* x position */
int y; /* y position */
} ptr;
enum wm_protocols xproto;
#define CLIENT_HIDDEN 0x0001
#define CLIENT_IGNORE 0x0002
#define CLIENT_VMAXIMIZED 0x0004
@ -166,6 +160,8 @@ struct client_ctx {
#define CLIENT_GROUP 0x0020
#define CLIENT_UNGROUP 0x0040
#define CLIENT_INPUT 0x0080
#define CLIENT_WM_DELETE_WINDOW 0x0100
#define CLIENT_WM_TAKE_FOCUS 0x0200
#define CLIENT_HIGHLIGHT (CLIENT_GROUP | CLIENT_UNGROUP)
#define CLIENT_MAXFLAGS (CLIENT_VMAXIMIZED | CLIENT_HMAXIMIZED)

View File

@ -212,11 +212,11 @@ client_setactive(struct client_ctx *cc, int fg)
if (fg) {
XInstallColormap(X_Dpy, cc->colormap);
if ((cc->flags & CLIENT_INPUT) ||
((cc->xproto & _WM_TAKE_FOCUS) == 0)) {
((cc->flags & CLIENT_WM_TAKE_FOCUS) == 0)) {
XSetInputFocus(X_Dpy, cc->win,
RevertToPointerRoot, CurrentTime);
}
if (cc->xproto & _WM_TAKE_FOCUS)
if (cc->flags & CLIENT_WM_TAKE_FOCUS)
client_msg(cc, cwmh[WM_TAKE_FOCUS]);
conf_grab_mouse(cc->win);
/*
@ -532,9 +532,9 @@ client_wm_protocols(struct client_ctx *cc)
if (XGetWMProtocols(X_Dpy, cc->win, &p, &j)) {
for (i = 0; i < j; i++) {
if (p[i] == cwmh[WM_DELETE_WINDOW])
cc->xproto |= _WM_DELETE_WINDOW;
cc->flags |= CLIENT_WM_DELETE_WINDOW;
else if (p[i] == cwmh[WM_TAKE_FOCUS])
cc->xproto |= _WM_TAKE_FOCUS;
cc->flags |= CLIENT_WM_TAKE_FOCUS;
}
XFree(p);
}
@ -559,7 +559,7 @@ client_msg(struct client_ctx *cc, Atom proto)
void
client_send_delete(struct client_ctx *cc)
{
if (cc->xproto & _WM_DELETE_WINDOW)
if (cc->flags & CLIENT_WM_DELETE_WINDOW)
client_msg(cc, cwmh[WM_DELETE_WINDOW]);
else
XKillClient(X_Dpy, cc->win);