dwm.c
changeset 1159 34c88d74dff0
parent 1158 7c40610de8df
child 1160 bf37ef388dd6
equal deleted inserted replaced
1158:7c40610de8df 1159:34c88d74dff0
   320 	unsigned int i, x;
   320 	unsigned int i, x;
   321 	Client *c;
   321 	Client *c;
   322 	XButtonPressedEvent *ev = &e->xbutton;
   322 	XButtonPressedEvent *ev = &e->xbutton;
   323 
   323 
   324 	if(ev->window == barwin) {
   324 	if(ev->window == barwin) {
       
   325 		if((ev->x < bgw) && ev->button == Button1) {
       
   326 			setgeom(NULL);
       
   327 			return;
       
   328 		}
   325 		x = bgw;
   329 		x = bgw;
   326 		for(i = 0; i < LENGTH(tags); i++) {
   330 		for(i = 0; i < LENGTH(tags); i++) {
   327 			x += textw(tags[i]);
   331 			x += textw(tags[i]);
   328 			if(ev->x > bgw && ev->x < x) {
   332 			if(ev->x > bgw && ev->x < x) {
   329 				if(ev->button == Button1) {
   333 				if(ev->button == Button1) {
   339 						toggleview(tags[i]);
   343 						toggleview(tags[i]);
   340 				}
   344 				}
   341 				return;
   345 				return;
   342 			}
   346 			}
   343 		}
   347 		}
       
   348 		if((ev->x < x + blw) && ev->button == Button1) 
       
   349 			setlayout(NULL);
   344 	}
   350 	}
   345 	else if((c = getclient(ev->window))) {
   351 	else if((c = getclient(ev->window))) {
   346 		focus(c);
   352 		focus(c);
   347 		if(CLEANMASK(ev->state) != MODKEY)
   353 		if(CLEANMASK(ev->state) != MODKEY)
   348 			return;
   354 			return;
   424 	XConfigureEvent *ev = &e->xconfigure;
   430 	XConfigureEvent *ev = &e->xconfigure;
   425 
   431 
   426 	if(ev->window == root && (ev->width != sw || ev->height != sh)) {
   432 	if(ev->window == root && (ev->width != sw || ev->height != sh)) {
   427 		sw = ev->width;
   433 		sw = ev->width;
   428 		sh = ev->height;
   434 		sh = ev->height;
   429 		setgeom(NULL);
   435 		setgeom(geom->symbol);
   430 	}
   436 	}
   431 }
   437 }
   432 
   438 
   433 void
   439 void
   434 configurerequest(XEvent *e) {
   440 configurerequest(XEvent *e) {
  1415 
  1421 
  1416 void
  1422 void
  1417 setgeom(const char *arg) {
  1423 setgeom(const char *arg) {
  1418 	unsigned int i;
  1424 	unsigned int i;
  1419 
  1425 
  1420 	for(i = 0; arg && i < LENGTH(geoms); i++)
  1426 	if(!arg) {
  1421 		if(!strcmp(geoms[i].symbol, arg))
  1427 		if(++geom == &geoms[LENGTH(geoms)])
  1422 			break;
  1428 			geom = &geoms[0];
  1423 	if(i == LENGTH(geoms))
  1429 	}
  1424 		return;
  1430 	else {
  1425 	geom = &geoms[i];
  1431 		for(i = 0; i < LENGTH(geoms); i++)
       
  1432 			if(!strcmp(geoms[i].symbol, arg))
       
  1433 				break;
       
  1434 		if(i == LENGTH(geoms))
       
  1435 			return;
       
  1436 		geom = &geoms[i];
       
  1437 	}
  1426 	geom->apply();
  1438 	geom->apply();
  1427 	updatebarpos();
  1439 	updatebarpos();
  1428 	arrange();
  1440 	arrange();
  1429 }
  1441 }
  1430 
  1442 
  1431 void
  1443 void
  1432 setlayout(const char *arg) {
  1444 setlayout(const char *arg) {
  1433 	static Layout *revert = 0;
       
  1434 	unsigned int i;
  1445 	unsigned int i;
  1435 
  1446 
  1436 	if(!arg)
  1447 	if(!arg) {
  1437 		return;
  1448 		if(++lt == &layouts[LENGTH(layouts)])
  1438 	for(i = 0; i < LENGTH(layouts); i++)
  1449 			lt = &layouts[0];
  1439 		if(!strcmp(arg, layouts[i].symbol))
  1450 	}
  1440 			break;
       
  1441 	if(i == LENGTH(layouts))
       
  1442 		return;
       
  1443 	if(revert && &layouts[i] == lt)
       
  1444 		lt = revert;
       
  1445 	else {
  1451 	else {
  1446 		revert = lt;
  1452 		for(i = 0; i < LENGTH(layouts); i++)
       
  1453 			if(!strcmp(arg, layouts[i].symbol))
       
  1454 				break;
       
  1455 		if(i == LENGTH(layouts))
       
  1456 			return;
  1447 		lt = &layouts[i];
  1457 		lt = &layouts[i];
  1448 	}
  1458 	}
  1449 	if(sel)
  1459 	if(sel)
  1450 		arrange();
  1460 		arrange();
  1451 	else
  1461 	else