event.c
changeset 195 97960220eb77
parent 178 e848966a1ac6
child 196 d560e796f7fe
equal deleted inserted replaced
194:655e38416bb8 195:97960220eb77
   154 	XWindowChanges wc;
   154 	XWindowChanges wc;
   155 	unsigned long newmask;
   155 	unsigned long newmask;
   156 
   156 
   157 	if((c = getclient(ev->window))) {
   157 	if((c = getclient(ev->window))) {
   158 		gravitate(c, True);
   158 		gravitate(c, True);
   159 		if(c->isfloat) {
   159 		if(ev->value_mask & CWX)
   160 			if(ev->value_mask & CWX)
   160 			c->x = ev->x;
   161 				c->x = ev->x;
   161 		if(ev->value_mask & CWY)
   162 			if(ev->value_mask & CWY)
   162 			c->y = ev->y;
   163 				c->y = ev->y;
   163 		if(ev->value_mask & CWWidth)
   164 			if(ev->value_mask & CWWidth)
   164 			c->w = ev->width;
   165 				c->w = ev->width;
   165 		if(ev->value_mask & CWHeight)
   166 			if(ev->value_mask & CWHeight)
   166 			c->h = ev->height;
   167 				c->h = ev->height;
       
   168 		}
       
   169 		if(ev->value_mask & CWBorderWidth)
   167 		if(ev->value_mask & CWBorderWidth)
   170 			c->border = ev->border_width;
   168 			c->border = ev->border_width;
   171 		gravitate(c, False);
   169 		gravitate(c, False);
   172 
       
   173 		resize(c, True, TopLeft);
       
   174 
       
   175 		wc.x = c->x;
   170 		wc.x = c->x;
   176 		wc.y = c->y;
   171 		wc.y = c->y;
   177 		wc.width = c->w;
   172 		wc.width = c->w;
   178 		wc.height = c->h;
   173 		wc.height = c->h;
   179 		newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth));
   174 		newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth));
   191 			synev.xconfigure.border_width = c->border;
   186 			synev.xconfigure.border_width = c->border;
   192 			synev.xconfigure.above = None;
   187 			synev.xconfigure.above = None;
   193 			/* Send synthetic ConfigureNotify */
   188 			/* Send synthetic ConfigureNotify */
   194 			XSendEvent(dpy, c->win, True, NoEventMask, &synev);
   189 			XSendEvent(dpy, c->win, True, NoEventMask, &synev);
   195 		}
   190 		}
       
   191 		XSync(dpy, False);
       
   192 		arrange(NULL);
       
   193 		drawall();
   196 	}
   194 	}
   197 	else {
   195 	else {
   198 		wc.x = ev->x;
   196 		wc.x = ev->x;
   199 		wc.y = ev->y;
   197 		wc.y = ev->y;
   200 		wc.width = ev->width;
   198 		wc.width = ev->width;
   201 		wc.height = ev->height;
   199 		wc.height = ev->height;
   202 		wc.border_width = ev->border_width;
   200 		wc.border_width = ev->border_width;
   203 		wc.sibling = ev->above;
   201 		wc.sibling = ev->above;
   204 		wc.stack_mode = ev->detail;
   202 		wc.stack_mode = ev->detail;
   205 		XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
   203 		XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
   206 	}
   204 		XSync(dpy, False);
   207 	XSync(dpy, False);
   205 	}
   208 }
   206 }
   209 
   207 
   210 static void
   208 static void
   211 destroynotify(XEvent *e)
   209 destroynotify(XEvent *e)
   212 {
   210 {