handling WM_STATE seems to make DnD in gtk/qt apps working, well let's handle this in dwm as well
This commit is contained in:
		
							parent
							
								
									7e98db251e
								
							
						
					
					
						commit
						a5cb80b86c
					
				
							
								
								
									
										9
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								client.c
									
									
									
									
									
								
							@ -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);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							@ -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 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								main.c
									
									
									
									
									
								
							@ -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,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user