commit 31c7d39da49e904df37228ae11bd72216aae3431
parent 94e169cc3e93516cc39ffedc07d5ad478b1aeb8c
Author: Denis Grelich <denisg@suckless.org>
Date: Sun, 28 Jan 2007 13:26:01 +0100
applied Daniel Wäber's Xlib therapist patch: gtk drag'n'drop/xprop are working again!
Diffstat:
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/client.c b/client.c
@@ -114,6 +114,14 @@ create_client(Window w, XWindowAttributes *wa) {
}
void
+set_client_state(Client * c, int state)
+{
+ long data[] = { state, None };
+ XChangeProperty(blz.dpy, c->win, wm_atom[WMState], wm_atom[WMState], 32,
+ PropModeReplace, (unsigned char *) data, 2);
+}
+
+void
update_client_grab(Client *c, Bool is_sel) {
if(is_sel) {
ungrab_mouse(c->framewin, AnyModifier, AnyButton);
@@ -176,7 +184,8 @@ void
map_client(Client *c) {
XSelectInput(blz.dpy, c->win, CLIENT_MASK & ~StructureNotifyMask);
XMapWindow(blz.dpy, c->win);
- XSelectInput(blz.dpy, c->win, CLIENT_MASK);
+ XSelectInput(blz.dpy, c->win, CLIENT_MASK);
+ set_client_state(c, NormalState);
}
void
@@ -184,6 +193,7 @@ unmap_client(Client *c) {
XSelectInput(blz.dpy, c->win, CLIENT_MASK & ~StructureNotifyMask);
XUnmapWindow(blz.dpy, c->win);
XSelectInput(blz.dpy, c->win, CLIENT_MASK);
+ set_client_state(c, WithdrawnState);
}
void
diff --git a/main.c b/main.c
@@ -91,6 +91,7 @@ win_proto(Window w) {
static void
init_atoms() {
+ wm_atom[WMState] = XInternAtom(blz.dpy, "WM_STATE", False);
wm_atom[WMProtocols] = XInternAtom(blz.dpy, "WM_PROTOCOLS", False);
wm_atom[WMDelete] = XInternAtom(blz.dpy, "WM_DELETE_WINDOW", False);
net_atom[NetSupported] = XInternAtom(blz.dpy, "_NET_SUPPORTED", False);
diff --git a/wmii.h b/wmii.h
@@ -67,7 +67,7 @@ struct BlitzBrush {
};
/* WM atoms */
-enum { WMProtocols, WMDelete, WMLast };
+enum { WMState, WMProtocols, WMDelete, WMLast };
/* NET atoms */
enum { NetSupported, NetWMName, NetLast };