mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
stash WMProtocols in flags
This commit is contained in:
parent
c1bc6d37b3
commit
3bb928a1c2
8
calmwm.h
8
calmwm.h
@ -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)
|
||||||
|
10
client.c
10
client.c
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user