event.c
changeset 384 126e78129f1d
parent 372 a9b4077ec058
child 385 37706ba7d492
equal deleted inserted replaced
383:2ec9cead84a7 384:126e78129f1d
   148 }
   148 }
   149 
   149 
   150 static void
   150 static void
   151 configurerequest(XEvent *e)
   151 configurerequest(XEvent *e)
   152 {
   152 {
       
   153 	int ox, oy, ow, oh;
   153 	unsigned long newmask;
   154 	unsigned long newmask;
   154 	Client *c;
   155 	Client *c;
   155 	XConfigureRequestEvent *ev = &e->xconfigurerequest;
   156 	XConfigureRequestEvent *ev = &e->xconfigurerequest;
   156 	XEvent synev;
   157 	XEvent synev;
   157 	XWindowChanges wc;
   158 	XWindowChanges wc;
   158 
   159 
   159 	if((c = getclient(ev->window))) {
   160 	if((c = getclient(ev->window))) {
       
   161 		ox = c->x;
       
   162 		oy = c->y;
       
   163 		ow = c->w;
       
   164 		oh = c->h;
   160 		gravitate(c, True);
   165 		gravitate(c, True);
   161 		if(ev->value_mask & CWX)
   166 		if(ev->value_mask & CWX)
   162 			c->x = ev->x;
   167 			c->x = ev->x;
   163 		if(ev->value_mask & CWY)
   168 		if(ev->value_mask & CWY)
   164 			c->y = ev->y;
   169 			c->y = ev->y;
   189 			synev.xconfigure.above = None;
   194 			synev.xconfigure.above = None;
   190 			/* Send synthetic ConfigureNotify */
   195 			/* Send synthetic ConfigureNotify */
   191 			XSendEvent(dpy, c->win, True, NoEventMask, &synev);
   196 			XSendEvent(dpy, c->win, True, NoEventMask, &synev);
   192 		}
   197 		}
   193 		XSync(dpy, False);
   198 		XSync(dpy, False);
   194 		if(c->isfloat)
   199 		if(c->isfloat || c->ismax) {
   195 			resize(c, False, TopLeft);
   200 			resize(c, False, TopLeft);
       
   201 			c->x = ox;
       
   202 			c->y = oy;
       
   203 			c->w = ow;
       
   204 			c->h = oh;
       
   205 		}
   196 		else
   206 		else
   197 			arrange(NULL);
   207 			arrange(NULL);
   198 	}
   208 	}
   199 	else {
   209 	else {
   200 		wc.x = ev->x;
   210 		wc.x = ev->x;