add compute_new_value_from_arg() to do the +/- job in uicb fcts

This commit is contained in:
Julien Danjou 2007-09-14 13:43:51 +02:00
parent fda58db5f6
commit 35defcc4e8
3 changed files with 24 additions and 13 deletions

View File

@ -42,23 +42,17 @@ uicb_setnmaster(Display *disp,
awesome_config *awesomeconf, awesome_config *awesomeconf,
const char * arg) const char * arg)
{ {
int delta;
int wah = get_windows_area_height(disp, awesomeconf->statusbar);
if(!IS_ARRANGE(tile) && !IS_ARRANGE(tileleft) && !IS_ARRANGE(bstack) && !IS_ARRANGE(bstackportrait)) if(!IS_ARRANGE(tile) && !IS_ARRANGE(tileleft) && !IS_ARRANGE(bstack) && !IS_ARRANGE(bstackportrait))
return; return;
if(!arg) if(!arg)
nmaster = awesomeconf->nmaster; nmaster = awesomeconf->nmaster;
else if(sscanf(arg, "%d", &delta)) else
{ nmaster = (int) compute_new_value_from_arg(arg, (double) nmaster);
if((arg[0] == '+' || arg[0] == '-')
&& !((nmaster + delta) < 1 || wah / (nmaster + delta) <= 2 * awesomeconf->borderpx)) if(nmaster < 1)
nmaster += delta; nmaster = 1;
else if(delta >= 1 && wah / delta <= 2 * awesomeconf->borderpx)
nmaster = delta;
else
return;
}
if(sel) if(sel)
arrange(disp, drawcontext, awesomeconf); arrange(disp, drawcontext, awesomeconf);
else else

16
util.c
View File

@ -102,3 +102,19 @@ xgettextprop(Display *disp, Window w, Atom atom, char *text, unsigned int size)
return True; return True;
} }
double
compute_new_value_from_arg(const char *arg, double current_value)
{
double delta;
if(arg && sscanf(arg, "%lf", &delta) == 1)
{
if(arg[0] == '+' || arg[0] == '-')
current_value += delta;
else
current_value = delta;
}
return current_value;
}

1
util.h
View File

@ -121,5 +121,6 @@ static inline char *a_strdup(const char *s)
void eprint(const char *, ...) __attribute__ ((noreturn)) __attribute__ ((format(printf, 1, 2))); void eprint(const char *, ...) __attribute__ ((noreturn)) __attribute__ ((format(printf, 1, 2)));
void uicb_spawn(Display *, DC *, awesome_config *, const char *); void uicb_spawn(Display *, DC *, awesome_config *, const char *);
Bool xgettextprop(Display *, Window, Atom, char *, unsigned int); Bool xgettextprop(Display *, Window, Atom, char *, unsigned int);
double compute_new_value_from_arg(const char *, double);
#endif #endif