aewl

diff event.c @ 489:d34374cbe926

simplified mouse resizals
author arg@mmvi
date Mon, 25 Sep 2006 21:19:18 +0200
parents 0d2559f46b9e
children 303d3384720e
line diff
     1.1 --- a/event.c	Mon Sep 25 20:38:30 2006 +0200
     1.2 +++ b/event.c	Mon Sep 25 21:19:18 2006 +0200
     1.3 @@ -21,23 +21,6 @@
     1.4  #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
     1.5  
     1.6  static void
     1.7 -synconfig(Client *c, int x, int y, int w, int h, unsigned int border) {
     1.8 -	XEvent synev;
     1.9 -
    1.10 -	synev.type = ConfigureNotify;
    1.11 -	synev.xconfigure.display = dpy;
    1.12 -	synev.xconfigure.event = c->win;
    1.13 -	synev.xconfigure.window = c->win;
    1.14 -	synev.xconfigure.x = x;
    1.15 -	synev.xconfigure.y = y;
    1.16 -	synev.xconfigure.width = w;
    1.17 -	synev.xconfigure.height = h;
    1.18 -	synev.xconfigure.border_width = border;
    1.19 -	synev.xconfigure.above = None;
    1.20 -	XSendEvent(dpy, c->win, True, NoEventMask, &synev);
    1.21 -}
    1.22 -
    1.23 -static void
    1.24  movemouse(Client *c) {
    1.25  	int x1, y1, ocx, ocy, di;
    1.26  	unsigned int dui;
    1.27 @@ -52,14 +35,8 @@
    1.28  	c->ismax = False;
    1.29  	XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
    1.30  	for(;;) {
    1.31 -		XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev);
    1.32 +		XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
    1.33  		switch (ev.type) {
    1.34 -		default:
    1.35 -			break;
    1.36 -		case ConfigureRequest:
    1.37 -			synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width);
    1.38 -			XSync(dpy, False);
    1.39 -			break;
    1.40  		case Expose:
    1.41  			handler[Expose](&ev);
    1.42  			break;
    1.43 @@ -72,11 +49,6 @@
    1.44  		case ButtonRelease:
    1.45  			XUngrabPointer(dpy, CurrentTime);
    1.46  			return;
    1.47 -		case DestroyNotify:
    1.48 -		case UnmapNotify:
    1.49 -			XUngrabPointer(dpy, CurrentTime);
    1.50 -			handler[ev.type](&ev);
    1.51 -			return;
    1.52  		}
    1.53  	}
    1.54  }
    1.55 @@ -96,14 +68,8 @@
    1.56  	c->ismax = False;
    1.57  	XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h);
    1.58  	for(;;) {
    1.59 -		XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev);
    1.60 +		XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
    1.61  		switch(ev.type) {
    1.62 -		default:
    1.63 -			break;
    1.64 -		case ConfigureRequest:
    1.65 -			synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width);
    1.66 -			XSync(dpy, False);
    1.67 -			break;
    1.68  		case Expose:
    1.69  			handler[Expose](&ev);
    1.70  			break;
    1.71 @@ -124,11 +90,6 @@
    1.72  		case ButtonRelease:
    1.73  			XUngrabPointer(dpy, CurrentTime);
    1.74  			return;
    1.75 -		case DestroyNotify:
    1.76 -		case UnmapNotify:
    1.77 -			XUngrabPointer(dpy, CurrentTime);
    1.78 -			handler[ev.type](&ev);
    1.79 -			return;
    1.80  		}
    1.81  	}
    1.82  }
    1.83 @@ -187,6 +148,7 @@
    1.84  	unsigned long newmask;
    1.85  	Client *c;
    1.86  	XConfigureRequestEvent *ev = &e->xconfigurerequest;
    1.87 +	XEvent synev;
    1.88  	XWindowChanges wc;
    1.89  
    1.90  	if((c = getclient(ev->window))) {
    1.91 @@ -210,8 +172,19 @@
    1.92  		newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth));
    1.93  		if(newmask)
    1.94  			XConfigureWindow(dpy, c->win, newmask, &wc);
    1.95 -		else
    1.96 -			synconfig(c, c->x, c->y, c->w, c->h, c->border);
    1.97 +		else {
    1.98 +			synev.type = ConfigureNotify;
    1.99 +			synev.xconfigure.display = dpy;
   1.100 +			synev.xconfigure.event = c->win;
   1.101 +			synev.xconfigure.window = c->win;
   1.102 +			synev.xconfigure.x = c->x;
   1.103 +			synev.xconfigure.y = c->y;
   1.104 +			synev.xconfigure.width = c->w;
   1.105 +			synev.xconfigure.height = c->h;
   1.106 +			synev.xconfigure.border_width = c->border;
   1.107 +			synev.xconfigure.above = None;
   1.108 +			XSendEvent(dpy, c->win, True, NoEventMask, &synev);
   1.109 +		}
   1.110  		XSync(dpy, False);
   1.111  		if(c->isfloat)
   1.112  			resize(c, False, TopLeft);