event.c
changeset 753 db484aa5c2cf
parent 752 9fe042b02e18
child 755 887d74605df8
equal deleted inserted replaced
752:9fe042b02e18 753:db484aa5c2cf
   168 configurerequest(XEvent *e) {
   168 configurerequest(XEvent *e) {
   169 	Client *c;
   169 	Client *c;
   170 	XConfigureRequestEvent *ev = &e->xconfigurerequest;
   170 	XConfigureRequestEvent *ev = &e->xconfigurerequest;
   171 	XWindowChanges wc;
   171 	XWindowChanges wc;
   172 
   172 
   173 	wc.x = ev->x;
       
   174 	wc.y = ev->y;
       
   175 	wc.width = ev->width;
       
   176 	wc.height = ev->height;
       
   177 	wc.border_width = ev->border_width;
       
   178 	wc.sibling = ev->above;
       
   179 	wc.stack_mode = ev->detail;
       
   180 	if((c = getclient(ev->window))) {
   173 	if((c = getclient(ev->window))) {
   181 		c->ismax = False;
   174 		c->ismax = False;
   182 		if(ev->value_mask & CWBorderWidth)
   175 		c->border = (ev->value_mask & CWBorderWidth) ? ev->border_width : c->border;
   183 			c->border = ev->border_width;
       
   184 		if((!c->isfloat && (arrange != dofloat))
   176 		if((!c->isfloat && (arrange != dofloat))
   185 			|| ((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight))))
   177 			|| ((ev->value_mask & (CWX | CWY)) && !(ev->value_mask & (CWWidth | CWHeight))))
   186 		{
       
   187 			configure(c);
   178 			configure(c);
   188 			XSync(dpy, False);
   179 		else {
   189 			return;
   180 			c->x = (ev->value_mask & CWX) ? ev->x : c->x;
   190 		}
   181 			c->y = (ev->value_mask & CWY) ? ev->y : c->y;
   191 	}
   182 			c->w = (ev->value_mask & CWWidth) ? ev->width : c->w;
   192 	XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
   183 			c->h = (ev->value_mask & CWHeight) ? ev->height : c->h;
   193 	if(c && !isvisible(c))
   184 			resize(c, False);
   194 		XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
   185 			if(!isvisible(c))
       
   186 				XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
       
   187 		}
       
   188 	}
       
   189 	else {
       
   190 		wc.x = ev->x;
       
   191 		wc.y = ev->y;
       
   192 		wc.width = ev->width;
       
   193 		wc.height = ev->height;
       
   194 		wc.border_width = ev->border_width;
       
   195 		wc.sibling = ev->above;
       
   196 		wc.stack_mode = ev->detail;
       
   197 		XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
       
   198 	}
   195 	XSync(dpy, False);
   199 	XSync(dpy, False);
   196 }
   200 }
   197 
   201 
   198 static void
   202 static void
   199 destroynotify(XEvent *e) {
   203 destroynotify(XEvent *e) {