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