fixed focus steeling bug done by clients like opera
This commit is contained in:
		
							
								
								
									
										15
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								dwm.c
									
									
									
									
									
								
							| @@ -137,6 +137,7 @@ void eprint(const char *errstr, ...); | ||||
| void expose(XEvent *e); | ||||
| void floating(void); /* default floating layout */ | ||||
| void focus(Client *c); | ||||
| void focusin(XEvent *e); | ||||
| void focusnext(const char *arg); | ||||
| void focusprev(const char *arg); | ||||
| Client *getclient(Window w); | ||||
| @@ -206,9 +207,10 @@ void (*handler[LASTEvent]) (XEvent *) = { | ||||
| 	[ConfigureNotify] = configurenotify, | ||||
| 	[DestroyNotify] = destroynotify, | ||||
| 	[EnterNotify] = enternotify, | ||||
| 	[LeaveNotify] = leavenotify, | ||||
| 	[Expose] = expose, | ||||
| 	[FocusIn] = focusin, | ||||
| 	[KeyPress] = keypress, | ||||
| 	[LeaveNotify] = leavenotify, | ||||
| 	[MappingNotify] = mappingnotify, | ||||
| 	[MapRequest] = maprequest, | ||||
| 	[PropertyNotify] = propertynotify, | ||||
| @@ -709,6 +711,14 @@ focus(Client *c) { | ||||
| 		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); | ||||
| } | ||||
|  | ||||
| void | ||||
| focusin(XEvent *e) { /* there are some broken focus acquiring clients */ | ||||
| 	XFocusChangeEvent *ev = &e->xfocus; | ||||
|  | ||||
| 	if(sel && ev->window != sel->win) | ||||
| 		XSetInputFocus(dpy, sel->win, RevertToPointerRoot, CurrentTime); | ||||
| } | ||||
|  | ||||
| void | ||||
| focusnext(const char *arg) { | ||||
| 	Client *c; | ||||
| @@ -1026,8 +1036,7 @@ manage(Window w, XWindowAttributes *wa) { | ||||
| 	XSetWindowBorder(dpy, w, dc.norm[ColBorder]); | ||||
| 	configure(c); /* propagates border_width, if size doesn't change */ | ||||
| 	updatesizehints(c); | ||||
| 	XSelectInput(dpy, w, | ||||
| 		StructureNotifyMask | PropertyChangeMask | EnterWindowMask); | ||||
| 	XSelectInput(dpy, w, EnterWindowMask | FocusChangeMask | PropertyChangeMask | StructureNotifyMask); | ||||
| 	grabbuttons(c, False); | ||||
| 	updatetitle(c); | ||||
| 	if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user