client.c
changeset 725 d99be681d502
parent 721 d3876aa79292
child 730 8997e28553a8
equal deleted inserted replaced
724:583c0adeee79 725:d99be681d502
    49 				GrabModeAsync, GrabModeSync, None, None);
    49 				GrabModeAsync, GrabModeSync, None, None);
    50 	}
    50 	}
    51 	else
    51 	else
    52 		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK,
    52 		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK,
    53 				GrabModeAsync, GrabModeSync, None, None);
    53 				GrabModeAsync, GrabModeSync, None, None);
       
    54 }
       
    55 
       
    56 static void
       
    57 setclientstate(Client *c, long state) {
       
    58 	long data[] = {state, None};
       
    59 	XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32,
       
    60 			PropModeReplace, (unsigned char *)data, 2);
    54 }
    61 }
    55 
    62 
    56 static int
    63 static int
    57 xerrordummy(Display *dsply, XErrorEvent *ee) {
    64 xerrordummy(Display *dsply, XErrorEvent *ee) {
    58 	return 0;
    65 	return 0;
   167 	c->next = clients;
   174 	c->next = clients;
   168 	c->snext = stack;
   175 	c->snext = stack;
   169 	stack = clients = c;
   176 	stack = clients = c;
   170 	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
   177 	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
   171 	XMapWindow(dpy, c->win);
   178 	XMapWindow(dpy, c->win);
       
   179 	setclientstate(c, NormalState);
   172 	if(isvisible(c))
   180 	if(isvisible(c))
   173 		focus(c);
   181 		focus(c);
   174 	arrange();
   182 	arrange();
   175 }
   183 }
   176 
   184 
   291 	if(sel == c) {
   299 	if(sel == c) {
   292 		for(nc = stack; nc && !isvisible(nc); nc = nc->snext);
   300 		for(nc = stack; nc && !isvisible(nc); nc = nc->snext);
   293 		focus(nc);
   301 		focus(nc);
   294 	}
   302 	}
   295 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
   303 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
       
   304 	setclientstate(c, WithdrawnState);
   296 	free(c->tags);
   305 	free(c->tags);
   297 	free(c);
   306 	free(c);
   298 	XSync(dpy, False);
   307 	XSync(dpy, False);
   299 	XSetErrorHandler(xerror);
   308 	XSetErrorHandler(xerror);
   300 	XUngrabServer(dpy);
   309 	XUngrabServer(dpy);