layout.c
changeset 823 fb5cbf0bd923
parent 819 21562c2567a6
child 825 bef1854ce739
equal deleted inserted replaced
822:72d7221858aa 823:fb5cbf0bd923
    67 LAYOUTS
    67 LAYOUTS
    68 
    68 
    69 /* extern */
    69 /* extern */
    70 
    70 
    71 void
    71 void
    72 focusnext(Arg arg) {
    72 focusnext(const char *arg) {
    73 	Client *c;
    73 	Client *c;
    74    
    74    
    75 	if(!sel)
    75 	if(!sel)
    76 		return;
    76 		return;
    77 	for(c = sel->next; c && !isvisible(c); c = c->next);
    77 	for(c = sel->next; c && !isvisible(c); c = c->next);
    82 		restack();
    82 		restack();
    83 	}
    83 	}
    84 }
    84 }
    85 
    85 
    86 void
    86 void
    87 focusprev(Arg arg) {
    87 focusprev(const char *arg) {
    88 	Client *c;
    88 	Client *c;
    89 
    89 
    90 	if(!sel)
    90 	if(!sel)
    91 		return;
    91 		return;
    92 	for(c = sel->prev; c && !isvisible(c); c = c->prev);
    92 	for(c = sel->prev; c && !isvisible(c); c = c->prev);
    99 		restack();
    99 		restack();
   100 	}
   100 	}
   101 }
   101 }
   102 
   102 
   103 void
   103 void
   104 incmasterw(Arg arg) {
   104 incmasterw(const char *arg) {
       
   105 	int i;
   105 	if(lt->arrange != tile)
   106 	if(lt->arrange != tile)
   106 		return;
   107 		return;
   107 	if(arg.i == 0)
   108 	if(!arg)
   108 		masterw = MASTERWIDTH;
   109 		masterw = MASTERWIDTH;
   109 	else {
   110 	else {
   110 		if(waw * (masterw + arg.i) / 1000 >= waw - 2 * BORDERPX
   111 		i = atoi(arg);
   111 		|| waw * (masterw + arg.i) / 1000 <= 2 * BORDERPX)
   112 		if(waw * (masterw + i) / 1000 >= waw - 2 * BORDERPX
       
   113 		|| waw * (masterw + i) / 1000 <= 2 * BORDERPX)
   112 			return;
   114 			return;
   113 		masterw += arg.i;
   115 		masterw += i;
   114 	}
   116 	}
   115 	lt->arrange();
   117 	lt->arrange();
   116 }
   118 }
   117 
   119 
   118 void
   120 void
   119 incnmaster(Arg arg) {
   121 incnmaster(const char *arg) {
   120 	if((lt->arrange != tile) || (nmaster + arg.i < 1)
   122 	int i = arg ? atoi(arg) : 0;
   121 	|| (wah / (nmaster + arg.i) <= 2 * BORDERPX))
   123 	if((lt->arrange != tile) || (nmaster + i < 1)
   122 		return;
   124 	|| (wah / (nmaster + i) <= 2 * BORDERPX))
   123 	nmaster += arg.i;
   125 		return;
       
   126 	nmaster += i;
   124 	if(sel)
   127 	if(sel)
   125 		lt->arrange();
   128 		lt->arrange();
   126 	else
   129 	else
   127 		drawstatus();
   130 		drawstatus();
   128 }
   131 }
   168 	XSync(dpy, False);
   171 	XSync(dpy, False);
   169 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
   172 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
   170 }
   173 }
   171 
   174 
   172 void
   175 void
   173 setlayout(Arg arg) {
   176 setlayout(const char *arg) {
   174 	unsigned int i;
   177 	unsigned int i;
   175 
   178 
   176 	if(arg.i == -1) {
   179 	if(!arg) {
   177 		for(i = 0; i < nlayouts && lt != &layout[i]; i++);
   180 		for(i = 0; i < nlayouts && lt != &layout[i]; i++);
   178 		if(i == nlayouts - 1)
   181 		if(i == nlayouts - 1)
   179 			lt = &layout[0];
   182 			lt = &layout[0];
   180 		else
   183 		else
   181 			lt = &layout[++i];
   184 			lt = &layout[++i];
   182 	}
   185 	}
   183 	else {
   186 	else {
   184 		if(arg.i < 0 || arg.i >= nlayouts)
   187 		i = atoi(arg);
       
   188 		if(i < 0 || i >= nlayouts)
   185 			return;
   189 			return;
   186 		lt = &layout[arg.i];
   190 		lt = &layout[i];
   187 	}
   191 	}
   188 	if(sel)
   192 	if(sel)
   189 		lt->arrange();
   193 		lt->arrange();
   190 	else
   194 	else
   191 		drawstatus();
   195 		drawstatus();
   192 }
   196 }
   193 
   197 
   194 void
   198 void
   195 togglemax(Arg arg) {
   199 togglemax(const char *arg) {
   196 	XEvent ev;
   200 	XEvent ev;
   197 
   201 
   198 	if(!sel || (lt->arrange != versatile && !sel->isversatile) || sel->isfixed)
   202 	if(!sel || (lt->arrange != versatile && !sel->isversatile) || sel->isfixed)
   199 		return;
   203 		return;
   200 	if((sel->ismax = !sel->ismax)) {
   204 	if((sel->ismax = !sel->ismax)) {
   232 	}
   236 	}
   233 	restack();
   237 	restack();
   234 }
   238 }
   235 
   239 
   236 void
   240 void
   237 zoom(Arg arg) {
   241 zoom(const char *arg) {
   238 	unsigned int n;
   242 	unsigned int n;
   239 	Client *c;
   243 	Client *c;
   240 
   244 
   241 	if(!sel || lt->arrange != tile || sel->isversatile)
   245 	if(!sel || lt->arrange != tile || sel->isversatile)
   242 		return;
   246 		return;