client.c
changeset 500 d5ad819f2a66
parent 491 12395ef46d97
child 502 9aa3d06199cb
equal deleted inserted replaced
499:2ca011c56385 500:d5ad819f2a66
    50 				GrabModeAsync, GrabModeSync, None, None);
    50 				GrabModeAsync, GrabModeSync, None, None);
    51 	}
    51 	}
    52 	else
    52 	else
    53 		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK,
    53 		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK,
    54 				GrabModeAsync, GrabModeSync, None, None);
    54 				GrabModeAsync, GrabModeSync, None, None);
    55 }
       
    56 
       
    57 static void
       
    58 resizetitle(Client *c) {
       
    59 	c->tw = textw(c->name);
       
    60 	if(c->tw > c->w)
       
    61 		c->tw = c->w + 2;
       
    62 	c->tx = c->x + c->w - c->tw + 2;
       
    63 	c->ty = c->y;
       
    64 	if(isvisible(c))
       
    65 		XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th);
       
    66 	else
       
    67 		XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, c->th);
       
    68 }
    55 }
    69 
    56 
    70 static int
    57 static int
    71 xerrordummy(Display *dsply, XErrorEvent *ee) {
    58 xerrordummy(Display *dsply, XErrorEvent *ee) {
    72 	return 0;
    59 	return 0;
   248 			0, DefaultDepth(dpy, screen), CopyFromParent,
   235 			0, DefaultDepth(dpy, screen), CopyFromParent,
   249 			DefaultVisual(dpy, screen),
   236 			DefaultVisual(dpy, screen),
   250 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
   237 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
   251 
   238 
   252 	grabbuttons(c, False);
   239 	grabbuttons(c, False);
       
   240 	updatetitle(c);
   253 	settags(c, getclient(trans));
   241 	settags(c, getclient(trans));
   254 	if(!c->isfloat)
   242 	if(!c->isfloat)
   255 		c->isfloat = trans
   243 		c->isfloat = trans
   256 			|| (c->maxw && c->minw &&
   244 			|| (c->maxw && c->minw &&
   257 				c->maxw == c->minw && c->maxh == c->minh);
   245 				c->maxw == c->minw && c->maxh == c->minh);
       
   246 	resizetitle(c);
   258 
   247 
   259 	if(clients)
   248 	if(clients)
   260 		clients->prev = c;
   249 		clients->prev = c;
   261 	c->next = clients;
   250 	c->next = clients;
   262 	c->snext = stack;
   251 	c->snext = stack;
   263 	stack = clients = c;
   252 	stack = clients = c;
   264 
   253 
   265 	updatetitle(c);
       
   266 	ban(c);
   254 	ban(c);
   267 	XMapWindow(dpy, c->win);
   255 	XMapWindow(dpy, c->win);
   268 	XMapWindow(dpy, c->twin);
   256 	XMapWindow(dpy, c->twin);
   269 	if(isvisible(c))
   257 	if(isvisible(c))
   270 		focus(c);
   258 		focus(c);
   316 	else
   304 	else
   317 		wc.border_width = 1;
   305 		wc.border_width = 1;
   318 	XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc);
   306 	XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc);
   319 	configure(c);
   307 	configure(c);
   320 	XSync(dpy, False);
   308 	XSync(dpy, False);
       
   309 }
       
   310 
       
   311 void
       
   312 resizetitle(Client *c) {
       
   313 	c->tw = textw(c->name);
       
   314 	if(c->tw > c->w)
       
   315 		c->tw = c->w + 2;
       
   316 	c->tx = c->x + c->w - c->tw + 2;
       
   317 	c->ty = c->y;
       
   318 	if(isvisible(c))
       
   319 		XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th);
       
   320 	else
       
   321 		XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, c->th);
   321 }
   322 }
   322 
   323 
   323 void
   324 void
   324 updatesize(Client *c) {
   325 updatesize(Client *c) {
   325 	long msize;
   326 	long msize;
   380 			strncpy(c->name, *list, sizeof(c->name));
   381 			strncpy(c->name, *list, sizeof(c->name));
   381 			XFreeStringList(list);
   382 			XFreeStringList(list);
   382 		}
   383 		}
   383 	}
   384 	}
   384 	XFree(name.value);
   385 	XFree(name.value);
   385 	resizetitle(c);
       
   386 }
   386 }
   387 
   387 
   388 void
   388 void
   389 unmanage(Client *c) {
   389 unmanage(Client *c) {
   390 	Client *nc;
   390 	Client *nc;