implemented NET_ACTIVE_WINDOW support
This commit is contained in:
		
							parent
							
								
									c86f131681
								
							
						
					
					
						commit
						92e55c7c53
					
				
							
								
								
									
										5
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								client.c
									
									
									
									
									
								
							| @ -58,6 +58,8 @@ focus(Client *c) | |||||||
| 	drawtitle(c); | 	drawtitle(c); | ||||||
| 	XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); | 	XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
|  | 	XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, | ||||||
|  | 			PropModeReplace, (unsigned char *)&c->win, 1); | ||||||
| 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -459,6 +461,9 @@ unmanage(Client *c) | |||||||
| 	arrange(NULL); | 	arrange(NULL); | ||||||
| 	if(sel) | 	if(sel) | ||||||
| 		focus(sel); | 		focus(sel); | ||||||
|  | 	else | ||||||
|  | 		XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, | ||||||
|  | 				PropModeReplace, (unsigned char *)NULL, 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							| @ -22,7 +22,7 @@ union Arg { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* atoms */ | /* atoms */ | ||||||
| enum { NetSupported, NetWMName, NetLast }; | enum { NetSupported, NetWMName, NetActiveWindow, NetLast }; | ||||||
| enum { WMProtocols, WMDelete, WMLast }; | enum { WMProtocols, WMDelete, WMLast }; | ||||||
| 
 | 
 | ||||||
| /* cursor */ | /* cursor */ | ||||||
|  | |||||||
							
								
								
									
										13
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								event.c
									
									
									
									
									
								
							| @ -145,6 +145,18 @@ buttonpress(XEvent *e) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void | ||||||
|  | clientmessage(XEvent *e) | ||||||
|  | { | ||||||
|  | 	Client *c; | ||||||
|  | 	XClientMessageEvent *ev = &e->xclient; | ||||||
|  | 
 | ||||||
|  | 	if(ev->message_type == netatom[NetActiveWindow]) { | ||||||
|  | 		if((c = getclient(ev->window)) && c->tags[tsel]) | ||||||
|  | 			focus(c); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static void | static void | ||||||
| configurerequest(XEvent *e) | configurerequest(XEvent *e) | ||||||
| { | { | ||||||
| @ -339,6 +351,7 @@ unmapnotify(XEvent *e) | |||||||
| 
 | 
 | ||||||
| void (*handler[LASTEvent]) (XEvent *) = { | void (*handler[LASTEvent]) (XEvent *) = { | ||||||
| 	[ButtonPress] = buttonpress, | 	[ButtonPress] = buttonpress, | ||||||
|  | 	[ClientMessage] = clientmessage, | ||||||
| 	[ConfigureRequest] = configurerequest, | 	[ConfigureRequest] = configurerequest, | ||||||
| 	[DestroyNotify] = destroynotify, | 	[DestroyNotify] = destroynotify, | ||||||
| 	[EnterNotify] = enternotify, | 	[EnterNotify] = enternotify, | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								main.c
									
									
									
									
									
								
							| @ -201,6 +201,7 @@ main(int argc, char *argv[]) | |||||||
| 	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); | 	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); | ||||||
| 	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[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); | ||||||
| 	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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R.Garbe
						Anselm R.Garbe