added configure(), but this doesn't really fix those frking broken SDL apps
This commit is contained in:
		
							parent
							
								
									67bc08d1b9
								
							
						
					
					
						commit
						b4d53bf194
					
				
							
								
								
									
										18
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								client.c
									
									
									
									
									
								
							| @ -80,6 +80,23 @@ ban(Client *c) { | ||||
| 	XMoveWindow(dpy, c->twin, c->tx + 2 * sw, c->ty); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| configure(Client *c) { | ||||
| 	XEvent synev; | ||||
| 
 | ||||
| 	synev.type = ConfigureNotify; | ||||
| 	synev.xconfigure.display = dpy; | ||||
| 	synev.xconfigure.event = c->win; | ||||
| 	synev.xconfigure.window = c->win; | ||||
| 	synev.xconfigure.x = c->x; | ||||
| 	synev.xconfigure.y = c->y; | ||||
| 	synev.xconfigure.width = c->w; | ||||
| 	synev.xconfigure.height = c->h; | ||||
| 	synev.xconfigure.border_width = c->border; | ||||
| 	synev.xconfigure.above = None; | ||||
| 	XSendEvent(dpy, c->win, True, NoEventMask, &synev); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| focus(Client *c) { | ||||
| 	Client *old; | ||||
| @ -299,6 +316,7 @@ resize(Client *c, Bool sizehints, Corner sticky) { | ||||
| 	else | ||||
| 		wc.border_width = 1; | ||||
| 	XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc); | ||||
| 	configure(c); | ||||
| 	XSync(dpy, False); | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								dwm.h
									
									
									
									
									
								
							| @ -109,6 +109,7 @@ extern Window root, barwin; | ||||
| 
 | ||||
| /* client.c */ | ||||
| extern void ban(Client *c);			/* ban c from screen */ | ||||
| extern void configure(Client *c);		/* send synthetic configure event */ | ||||
| extern void focus(Client *c);			/* focus c, c may be NULL */ | ||||
| extern Client *getclient(Window w);		/* return client of w */ | ||||
| extern Client *getctitle(Window w);		/* return client of title window */ | ||||
|  | ||||
							
								
								
									
										21
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								event.c
									
									
									
									
									
								
							| @ -1,3 +1,4 @@ | ||||
| #include <stdio.h> | ||||
| /*
 | ||||
|  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||
|  * See LICENSE file for license details. | ||||
| @ -38,6 +39,7 @@ movemouse(Client *c) { | ||||
| 		XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); | ||||
| 		switch (ev.type) { | ||||
| 		case ButtonRelease: | ||||
| 			resize(c, True, TopLeft); | ||||
| 			XUngrabPointer(dpy, CurrentTime); | ||||
| 			return; | ||||
| 		case Expose: | ||||
| @ -71,6 +73,7 @@ resizemouse(Client *c) { | ||||
| 		XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); | ||||
| 		switch(ev.type) { | ||||
| 		case ButtonRelease: | ||||
| 			resize(c, True, TopLeft); | ||||
| 			XUngrabPointer(dpy, CurrentTime); | ||||
| 			return; | ||||
| 		case Expose: | ||||
| @ -151,6 +154,7 @@ configurerequest(XEvent *e) { | ||||
| 	XEvent synev; | ||||
| 	XWindowChanges wc; | ||||
| 
 | ||||
| 	fputs("configurerequest\n", stderr); | ||||
| 	if((c = getclient(ev->window))) { | ||||
| 		c->ismax = False; | ||||
| 		gravitate(c, True); | ||||
| @ -172,19 +176,8 @@ configurerequest(XEvent *e) { | ||||
| 		newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); | ||||
| 		if(newmask) | ||||
| 			XConfigureWindow(dpy, c->win, newmask, &wc); | ||||
| 		else { | ||||
| 			synev.type = ConfigureNotify; | ||||
| 			synev.xconfigure.display = dpy; | ||||
| 			synev.xconfigure.event = c->win; | ||||
| 			synev.xconfigure.window = c->win; | ||||
| 			synev.xconfigure.x = c->x; | ||||
| 			synev.xconfigure.y = c->y; | ||||
| 			synev.xconfigure.width = c->w; | ||||
| 			synev.xconfigure.height = c->h; | ||||
| 			synev.xconfigure.border_width = c->border; | ||||
| 			synev.xconfigure.above = None; | ||||
| 			XSendEvent(dpy, c->win, True, NoEventMask, &synev); | ||||
| 		} | ||||
| 		else | ||||
| 			configure(c); | ||||
| 		XSync(dpy, False); | ||||
| 		if(c->isfloat) | ||||
| 			resize(c, False, TopLeft); | ||||
| @ -218,6 +211,7 @@ enternotify(XEvent *e) { | ||||
| 	Client *c; | ||||
| 	XCrossingEvent *ev = &e->xcrossing; | ||||
| 
 | ||||
| 	fputs("enternotify\n", stderr); | ||||
| 	if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) | ||||
| 		return; | ||||
| 
 | ||||
| @ -305,6 +299,7 @@ propertynotify(XEvent *e) { | ||||
| 	Window trans; | ||||
| 	XPropertyEvent *ev = &e->xproperty; | ||||
| 
 | ||||
| 	fputs("propertynotify\n", stderr); | ||||
| 	if(ev->state == PropertyDelete) | ||||
| 		return; /* ignore */ | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 arg@mmvi
						arg@mmvi