Move parsing of maximize string to own func.

SVN revision: 24456
This commit is contained in:
sebastid 2006-08-08 01:28:06 +00:00 committed by sebastid
parent 6027cd3d4c
commit 8a918c5e32
1 changed files with 45 additions and 50 deletions

View File

@ -64,6 +64,7 @@
/* local subsystem functions */ /* local subsystem functions */
static void _e_action_free(E_Action *act); static void _e_action_free(E_Action *act);
static Evas_Bool _e_actions_cb_free(Evas_Hash *hash, const char *key, void *data, void *fdata); static Evas_Bool _e_actions_cb_free(Evas_Hash *hash, const char *key, void *data, void *fdata);
static E_Maximize _e_actions_maximize_parse(const char *maximize);
static E_Dialog *exit_dialog = NULL; static E_Dialog *exit_dialog = NULL;
@ -434,27 +435,23 @@ ACT_FN_GO(window_maximized_toggle)
e_border_unmaximize(bd, E_MAXIMIZE_BOTH); e_border_unmaximize(bd, E_MAXIMIZE_BOTH);
else else
{ {
char s1[11], s2[11]; E_Maximize max;
/* FIXME: Move this to a parser func which returns an E_Maximize */ max = _e_actions_maximize_parse(params);
if (sscanf(params, "%20s %20s", s1, s2) == 2) max &= E_MAXIMIZE_DIRECTION;
if (max == E_MAXIMIZE_VERTICAL)
{ {
if (!strcmp(s2, "vertical")) if (bd->maximized & E_MAXIMIZE_VERTICAL)
{ e_border_unmaximize(bd, E_MAXIMIZE_VERTICAL);
if (bd->maximized & E_MAXIMIZE_VERTICAL)
e_border_unmaximize(bd, E_MAXIMIZE_VERTICAL);
else
goto maximize;
}
else if (!strcmp(s2, "horizontal"))
{
if (bd->maximized & E_MAXIMIZE_HORIZONTAL)
e_border_unmaximize(bd, E_MAXIMIZE_HORIZONTAL);
else
goto maximize;
}
else else
e_border_unmaximize(bd, E_MAXIMIZE_BOTH); goto maximize;
}
else if (max == E_MAXIMIZE_HORIZONTAL)
{
if (bd->maximized & E_MAXIMIZE_HORIZONTAL)
e_border_unmaximize(bd, E_MAXIMIZE_HORIZONTAL);
else
goto maximize;
} }
else else
e_border_unmaximize(bd, E_MAXIMIZE_BOTH); e_border_unmaximize(bd, E_MAXIMIZE_BOTH);
@ -462,38 +459,8 @@ ACT_FN_GO(window_maximized_toggle)
} }
else else
{ {
maximize: maximize:
if (!params) e_border_maximize(bd, _e_actions_maximize_parse(params));
e_border_maximize(bd, e_config->maximize_policy);
else
{
char s1[32], s2[32];
E_Maximize max;
int ret;
/* FIXME: Move this to a parser func which returns an E_Maximize */
max = (e_config->maximize_policy & E_MAXIMIZE_DIRECTION);
ret = sscanf(params, "%20s %20s", s1, s2);
if (ret == 2)
{
if (!strcmp(s2, "horizontal"))
max = E_MAXIMIZE_HORIZONTAL;
else if (!strcmp(s2, "vertical"))
max = E_MAXIMIZE_VERTICAL;
else
max = E_MAXIMIZE_BOTH;
}
if (ret > 0)
{
if (!strcmp(s1, "fullscreen")) e_border_maximize(bd, E_MAXIMIZE_FULLSCREEN | max);
else if (!strcmp(s1, "smart")) e_border_maximize(bd, E_MAXIMIZE_SMART | max);
else if (!strcmp(s1, "expand")) e_border_maximize(bd, E_MAXIMIZE_EXPAND | max);
else if (!strcmp(s1, "fill")) e_border_maximize(bd, E_MAXIMIZE_FILL | max);
else e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | max);
}
else
e_border_maximize(bd, e_config->maximize_policy);
}
} }
} }
} }
@ -1949,3 +1916,31 @@ _e_actions_cb_free(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__,
e_object_del(E_OBJECT(data)); e_object_del(E_OBJECT(data));
return 0; return 0;
} }
static E_Maximize
_e_actions_maximize_parse(const char *params)
{
E_Maximize max = 0;
int ret;
char s1[32], s2[32];
if (!params) return e_config->maximize_policy;
ret = sscanf(params, "%20s %20s", s1, s2);
if (ret == 2)
{
if (!strcmp(s2, "horizontal")) max = E_MAXIMIZE_HORIZONTAL;
else if (!strcmp(s2, "vertical")) max = E_MAXIMIZE_VERTICAL;
else max = E_MAXIMIZE_BOTH;
}
if (ret >= 1)
{
if (!strcmp(s1, "fullscreen")) max |= E_MAXIMIZE_FULLSCREEN;
else if (!strcmp(s1, "smart")) max |= E_MAXIMIZE_SMART;
else if (!strcmp(s1, "expand")) max |= E_MAXIMIZE_EXPAND;
else if (!strcmp(s1, "fill")) max |= E_MAXIMIZE_FILL;
else max |= (e_config->maximize_policy & E_MAXIMIZE_TYPE);
}
else
max = e_config->maximize_policy;
return max;
}