applied sanders focus_ patches
This commit is contained in:
		
							
								
								
									
										73
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								client.c
									
									
									
									
									
								
							| @@ -11,16 +11,42 @@ | ||||
| /* static functions */ | ||||
|  | ||||
| static void | ||||
| grabbutton(Client *c, unsigned int button, unsigned int modifier) | ||||
| grabbuttons(Client *c, Bool focus) | ||||
| { | ||||
| 	XGrabButton(dpy, button, modifier, c->win, False, BUTTONMASK, | ||||
| 			GrabModeAsync, GrabModeSync, None, None); | ||||
| 	XGrabButton(dpy, button, modifier | LockMask, c->win, False, BUTTONMASK, | ||||
| 			GrabModeAsync, GrabModeSync, None, None); | ||||
| 	XGrabButton(dpy, button, modifier | numlockmask, c->win, False, BUTTONMASK, | ||||
| 			GrabModeAsync, GrabModeSync, None, None); | ||||
| 	XGrabButton(dpy, button, modifier | numlockmask | LockMask, c->win, False, BUTTONMASK, | ||||
| 			GrabModeAsync, GrabModeSync, None, None); | ||||
| 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | ||||
|  | ||||
| 	if(focus) { | ||||
| 		XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button1, MODKEY | numlockmask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button1, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
|  | ||||
| 		XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button2, MODKEY | numlockmask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button2, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
|  | ||||
| 		XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button3, MODKEY | numlockmask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 		XGrabButton(dpy, Button3, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
| 	} | ||||
| 	else | ||||
| 		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, | ||||
| 				GrabModeAsync, GrabModeSync, None, None); | ||||
|  | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -40,15 +66,6 @@ resizetitle(Client *c) | ||||
|  | ||||
| } | ||||
|  | ||||
| static void | ||||
| ungrabbutton(Client *c, unsigned int button, unsigned int modifier) | ||||
| { | ||||
| 	XUngrabButton(dpy, button, modifier, c->win); | ||||
| 	XUngrabButton(dpy, button, modifier | LockMask, c->win); | ||||
| 	XUngrabButton(dpy, button, modifier | numlockmask, c->win); | ||||
| 	XUngrabButton(dpy, button, modifier | numlockmask | LockMask, c->win); | ||||
| } | ||||
|  | ||||
| static int | ||||
| xerrordummy(Display *dsply, XErrorEvent *ee) | ||||
| { | ||||
| @@ -77,10 +94,10 @@ focus(Client *c) | ||||
| 		if(sel->ismax) | ||||
| 			togglemax(NULL); | ||||
| 		sel = c; | ||||
| 		grabbutton(old, AnyButton, 0); | ||||
| 		grabbuttons(old, False); | ||||
| 		drawtitle(old); | ||||
| 	} | ||||
| 	ungrabbutton(c, AnyButton, 0); | ||||
| 	grabbuttons(c, True); | ||||
| 	drawtitle(c); | ||||
| 	XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); | ||||
| } | ||||
| @@ -220,9 +237,7 @@ manage(Window w, XWindowAttributes *wa) | ||||
| 	c->next = clients; | ||||
| 	clients = c; | ||||
|  | ||||
| 	grabbutton(c, Button1, MODKEY); | ||||
| 	grabbutton(c, Button2, MODKEY); | ||||
| 	grabbutton(c, Button3, MODKEY); | ||||
| 	grabbuttons(c, False); | ||||
|  | ||||
| 	if((tc = getclient(trans))) /* inherit tags */ | ||||
| 		for(i = 0; i < ntags; i++) | ||||
| @@ -384,9 +399,13 @@ togglemax(Arg *arg) | ||||
| void | ||||
| unmanage(Client *c) | ||||
| { | ||||
| 	Client *tc; | ||||
| 	Window trans; | ||||
| 	XGrabServer(dpy); | ||||
| 	XSetErrorHandler(xerrordummy); | ||||
|  | ||||
| 	XGetTransientForHint(dpy, c->win, &trans); | ||||
|  | ||||
| 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | ||||
| 	XDestroyWindow(dpy, c->twin); | ||||
|  | ||||
| @@ -396,8 +415,12 @@ unmanage(Client *c) | ||||
| 		c->next->prev = c->prev; | ||||
| 	if(c == clients) | ||||
| 		clients = c->next; | ||||
| 	if(sel == c) | ||||
| 		sel = getnext(clients); | ||||
| 	if(sel == c) { | ||||
| 		if(trans && (tc = getclient(trans)) && isvisible(tc)) | ||||
| 			sel = tc; | ||||
| 		else | ||||
| 			sel = getnext(clients); | ||||
| 	} | ||||
| 	free(c->tags); | ||||
| 	free(c); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user