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

View File

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