applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility
This commit is contained in:
		
							parent
							
								
									5376947571
								
							
						
					
					
						commit
						e63bf22948
					
				
							
								
								
									
										16
									
								
								dwm.c
								
								
								
								
							
							
						
						
									
										16
									
								
								dwm.c
								
								
								
								
							| 
						 | 
					@ -61,7 +61,7 @@
 | 
				
			||||||
/* enums */
 | 
					/* enums */
 | 
				
			||||||
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
 | 
					enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
 | 
				
			||||||
enum { SchemeNorm, SchemeSel }; /* color schemes */
 | 
					enum { SchemeNorm, SchemeSel }; /* color schemes */
 | 
				
			||||||
enum { NetSupported, NetWMName, NetWMState,
 | 
					enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
 | 
				
			||||||
       NetWMFullscreen, NetActiveWindow, NetWMWindowType,
 | 
					       NetWMFullscreen, NetActiveWindow, NetWMWindowType,
 | 
				
			||||||
       NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */
 | 
					       NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */
 | 
				
			||||||
enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */
 | 
					enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */
 | 
				
			||||||
| 
						 | 
					@ -267,7 +267,7 @@ static Scm *scheme;
 | 
				
			||||||
static Display *dpy;
 | 
					static Display *dpy;
 | 
				
			||||||
static Drw *drw;
 | 
					static Drw *drw;
 | 
				
			||||||
static Monitor *mons, *selmon;
 | 
					static Monitor *mons, *selmon;
 | 
				
			||||||
static Window root;
 | 
					static Window root, wmcheckwin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* configuration, allows nested code to access above variables */
 | 
					/* configuration, allows nested code to access above variables */
 | 
				
			||||||
#include "config.h"
 | 
					#include "config.h"
 | 
				
			||||||
| 
						 | 
					@ -485,6 +485,7 @@ cleanup(void)
 | 
				
			||||||
		drw_cur_free(drw, cursor[i]);
 | 
							drw_cur_free(drw, cursor[i]);
 | 
				
			||||||
	for (i = 0; i < LENGTH(colors); i++)
 | 
						for (i = 0; i < LENGTH(colors); i++)
 | 
				
			||||||
		free(scheme[i]);
 | 
							free(scheme[i]);
 | 
				
			||||||
 | 
						XDestroyWindow(dpy, wmcheckwin);
 | 
				
			||||||
	drw_free(drw);
 | 
						drw_free(drw);
 | 
				
			||||||
	XSync(dpy, False);
 | 
						XSync(dpy, False);
 | 
				
			||||||
	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
 | 
						XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
 | 
				
			||||||
| 
						 | 
					@ -1551,6 +1552,7 @@ setup(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	XSetWindowAttributes wa;
 | 
						XSetWindowAttributes wa;
 | 
				
			||||||
 | 
						Atom utf8string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* clean up any zombies immediately */
 | 
						/* clean up any zombies immediately */
 | 
				
			||||||
	sigchld(0);
 | 
						sigchld(0);
 | 
				
			||||||
| 
						 | 
					@ -1567,6 +1569,7 @@ setup(void)
 | 
				
			||||||
	bh = drw->fonts->h + 2;
 | 
						bh = drw->fonts->h + 2;
 | 
				
			||||||
	updategeom();
 | 
						updategeom();
 | 
				
			||||||
	/* init atoms */
 | 
						/* init atoms */
 | 
				
			||||||
 | 
						utf8string = XInternAtom(dpy, "UTF8_STRING", False);
 | 
				
			||||||
	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
 | 
						wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
 | 
				
			||||||
	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
 | 
						wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
 | 
				
			||||||
	wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
 | 
						wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
 | 
				
			||||||
| 
						 | 
					@ -1575,6 +1578,7 @@ setup(void)
 | 
				
			||||||
	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
 | 
						netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
 | 
				
			||||||
	netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
 | 
						netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
 | 
				
			||||||
	netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
 | 
						netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
 | 
				
			||||||
 | 
						netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False);
 | 
				
			||||||
	netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
 | 
						netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
 | 
				
			||||||
	netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
 | 
						netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
 | 
				
			||||||
	netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
 | 
						netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
 | 
				
			||||||
| 
						 | 
					@ -1590,6 +1594,14 @@ setup(void)
 | 
				
			||||||
	/* init bars */
 | 
						/* init bars */
 | 
				
			||||||
	updatebars();
 | 
						updatebars();
 | 
				
			||||||
	updatestatus();
 | 
						updatestatus();
 | 
				
			||||||
 | 
						/* supporting window for NetWMCheck */
 | 
				
			||||||
 | 
						wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
 | 
				
			||||||
 | 
						XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32,
 | 
				
			||||||
 | 
							PropModeReplace, (unsigned char *) &wmcheckwin, 1);
 | 
				
			||||||
 | 
						XChangeProperty(dpy, wmcheckwin, netatom[NetWMName], utf8string, 8,
 | 
				
			||||||
 | 
							PropModeReplace, (unsigned char *) "dwm", 4);
 | 
				
			||||||
 | 
						XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32,
 | 
				
			||||||
 | 
							PropModeReplace, (unsigned char *) &wmcheckwin, 1);
 | 
				
			||||||
	/* EWMH support per view */
 | 
						/* EWMH support per view */
 | 
				
			||||||
	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
 | 
						XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
 | 
				
			||||||
			PropModeReplace, (unsigned char *) netatom, NetLast);
 | 
								PropModeReplace, (unsigned char *) netatom, NetLast);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue