diff options
| author | Anselm R. Garbe <arg@suckless.org> | 2007-01-28 20:29:41 +0100 | 
|---|---|---|
| committer | Anselm R. Garbe <arg@suckless.org> | 2007-01-28 20:29:41 +0100 | 
| commit | a5cb80b86cdedb8cd1f3a02de47f204bd174f649 (patch) | |
| tree | 95ae3939b6ab82281ea076c34ffff73c662eacf5 | |
| parent | 7e98db251e383674440d75dc42d98ab6eed79ac7 (diff) | |
| download | dwm-a5cb80b86cdedb8cd1f3a02de47f204bd174f649.tar.gz | |
handling WM_STATE seems to make DnD in gtk/qt apps working, well let's handle this in dwm as well
| -rw-r--r-- | client.c | 9 | ||||
| -rw-r--r-- | dwm.h | 2 | ||||
| -rw-r--r-- | main.c | 1 | 
3 files changed, 11 insertions, 1 deletions
@@ -53,6 +53,13 @@ grabbuttons(Client *c, Bool focused) {  				GrabModeAsync, GrabModeSync, None, None);  } +static void +setclientstate(Client *c, long state) { +	long data[] = {state, None}; +	XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, +			PropModeReplace, (unsigned char *)data, 2); +} +  static int  xerrordummy(Display *dsply, XErrorEvent *ee) {  	return 0; @@ -169,6 +176,7 @@ manage(Window w, XWindowAttributes *wa) {  	stack = clients = c;  	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);  	XMapWindow(dpy, c->win); +	setclientstate(c, NormalState);  	if(isvisible(c))  		focus(c);  	arrange(); @@ -293,6 +301,7 @@ unmanage(Client *c) {  		focus(nc);  	}  	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); +	setclientstate(c, WithdrawnState);  	free(c->tags);  	free(c);  	XSync(dpy, False); @@ -40,7 +40,7 @@  #define PROTODELWIN		1  enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ -enum { WMProtocols, WMDelete, WMLast };			/* default atoms */ +enum { WMProtocols, WMDelete, WMState, WMLast };	/* default atoms */  enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */  enum { ColBorder, ColFG, ColBG, ColLast };		/* color */ @@ -92,6 +92,7 @@ setup(void) {  	/* init atoms */  	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);  	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); +	wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);  	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);  	netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);  	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,  |