dwm.c
changeset 1526 64eb02a74f2b
parent 1525 c361034c5a1c
child 1527 406003e3a01f
equal deleted inserted replaced
1525:c361034c5a1c 1526:64eb02a74f2b
   370 		if(c->incw)
   370 		if(c->incw)
   371 			*w -= *w % c->incw;
   371 			*w -= *w % c->incw;
   372 		if(c->inch)
   372 		if(c->inch)
   373 			*h -= *h % c->inch;
   373 			*h -= *h % c->inch;
   374 		/* restore base dimensions */
   374 		/* restore base dimensions */
   375 		*w += c->basew;
   375 		*w = MAX(*w + c->basew, c->minw);
   376 		*h += c->baseh;
   376 		*h = MAX(*h + c->baseh, c->minh);
   377 		*w = MAX(*w, c->minw);
       
   378 		*h = MAX(*h, c->minh);
       
   379 		if(c->maxw)
   377 		if(c->maxw)
   380 			*w = MIN(*w, c->maxw);
   378 			*w = MIN(*w, c->maxw);
   381 		if(c->maxh)
   379 		if(c->maxh)
   382 			*h = MIN(*h, c->maxh);
   380 			*h = MIN(*h, c->maxh);
   383 	}
   381 	}
   843 		XSetInputFocus(dpy, selmon->sel->win, RevertToPointerRoot, CurrentTime);
   841 		XSetInputFocus(dpy, selmon->sel->win, RevertToPointerRoot, CurrentTime);
   844 }
   842 }
   845 
   843 
   846 void
   844 void
   847 focusmon(const Arg *arg) {
   845 focusmon(const Arg *arg) {
   848 	Monitor *m = NULL;
   846 	Monitor *m;
   849 
   847 
   850 	if(!mons->next)
   848 	if(!mons->next)
   851 		return;
   849 		return;
   852 	if((m = dirtomon(arg->i)) == selmon)
   850 	if((m = dirtomon(arg->i)) == selmon)
   853 		return;
   851 		return;
  1098 	if(!(c = malloc(sizeof(Client))))
  1096 	if(!(c = malloc(sizeof(Client))))
  1099 		die("fatal: could not malloc() %u bytes\n", sizeof(Client));
  1097 		die("fatal: could not malloc() %u bytes\n", sizeof(Client));
  1100 	*c = cz;
  1098 	*c = cz;
  1101 	c->win = w;
  1099 	c->win = w;
  1102 	updatetitle(c);
  1100 	updatetitle(c);
  1103 	if(XGetTransientForHint(dpy, w, &trans))
  1101 	if(XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) {
  1104 		t = wintoclient(trans);
       
  1105 	if(t) {
       
  1106 		c->mon = t->mon;
  1102 		c->mon = t->mon;
  1107 		c->tags = t->tags;
  1103 		c->tags = t->tags;
  1108 	}
  1104 	}
  1109 	else {
  1105 	else {
  1110 		c->mon = selmon;
  1106 		c->mon = selmon;
  1115 	c->y = c->oldy = wa->y + c->mon->wy;
  1111 	c->y = c->oldy = wa->y + c->mon->wy;
  1116 	c->w = c->oldw = wa->width;
  1112 	c->w = c->oldw = wa->width;
  1117 	c->h = c->oldh = wa->height;
  1113 	c->h = c->oldh = wa->height;
  1118 	c->oldbw = wa->border_width;
  1114 	c->oldbw = wa->border_width;
  1119 	if(c->w == c->mon->mw && c->h == c->mon->mh) {
  1115 	if(c->w == c->mon->mw && c->h == c->mon->mh) {
  1120 		c->isfloating = 1;
  1116 		c->isfloating = True;
  1121 		c->x = c->mon->mx;
  1117 		c->x = c->mon->mx;
  1122 		c->y = c->mon->my;
  1118 		c->y = c->mon->my;
  1123 		c->bw = 0;
  1119 		c->bw = 0;
  1124 	}
  1120 	}
  1125 	else {
  1121 	else {
  1271 		return; /* ignore */
  1267 		return; /* ignore */
  1272 	else if((c = wintoclient(ev->window))) {
  1268 	else if((c = wintoclient(ev->window))) {
  1273 		switch (ev->atom) {
  1269 		switch (ev->atom) {
  1274 		default: break;
  1270 		default: break;
  1275 		case XA_WM_TRANSIENT_FOR:
  1271 		case XA_WM_TRANSIENT_FOR:
  1276 			XGetTransientForHint(dpy, c->win, &trans);
  1272 			if(!c->isfloating && (XGetTransientForHint(dpy, c->win, &trans)) &&
  1277 			if(!c->isfloating && (c->isfloating = (wintoclient(trans) != NULL)))
  1273 			   (c->isfloating = (wintoclient(trans))))
  1278 				arrange(c->mon);
  1274 				arrange(c->mon);
  1279 			break;
  1275 			break;
  1280 		case XA_WM_NORMAL_HINTS:
  1276 		case XA_WM_NORMAL_HINTS:
  1281 			updatesizehints(c);
  1277 			updatesizehints(c);
  1282 			break;
  1278 			break;
  1305 			XChangeProperty(dpy, cme->window, netatom[NetWMState], XA_ATOM, 32,
  1301 			XChangeProperty(dpy, cme->window, netatom[NetWMState], XA_ATOM, 32,
  1306 			                PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
  1302 			                PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
  1307 			c->oldstate = c->isfloating;
  1303 			c->oldstate = c->isfloating;
  1308 			c->oldbw = c->bw;
  1304 			c->oldbw = c->bw;
  1309 			c->bw = 0;
  1305 			c->bw = 0;
  1310 			c->isfloating = 1;
  1306 			c->isfloating = True;
  1311 			resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
  1307 			resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
  1312 			XRaiseWindow(dpy, c->win);
  1308 			XRaiseWindow(dpy, c->win);
  1313 		}
  1309 		}
  1314 		else {
  1310 		else {
  1315 			XChangeProperty(dpy, cme->window, netatom[NetWMState], XA_ATOM, 32,
  1311 			XChangeProperty(dpy, cme->window, netatom[NetWMState], XA_ATOM, 32,