better fix for keybindings config, fixes param setting in all tested cases

SVN revision: 72921
This commit is contained in:
Mike Blumenkrantz 2012-06-27 07:11:01 +00:00
parent f9e2aba1d4
commit e63e7395c0
2 changed files with 12 additions and 11 deletions

View File

@ -455,7 +455,8 @@ _e_configure_fill_cat_list(void *data)
E_Configure *eco; E_Configure *eco;
Evas_Coord mw, mh; Evas_Coord mw, mh;
E_Configure_Category *cat; E_Configure_Category *cat;
Eina_List *l; Eina_List *l, *ll;
E_Configure_Cat *ecat;
if (!(eco = data)) return; if (!(eco = data)) return;
@ -468,19 +469,15 @@ _e_configure_fill_cat_list(void *data)
eco->cat_list = e_widget_toolbar_add(eco->evas, 32 * e_scale, 32 * e_scale); eco->cat_list = e_widget_toolbar_add(eco->evas, 32 * e_scale, 32 * e_scale);
e_widget_toolbar_scrollable_set(eco->cat_list, 1); e_widget_toolbar_scrollable_set(eco->cat_list, 1);
/***--- fill ---***/ /***--- fill ---***/
for (l = e_configure_registry; l; l = l->next) EINA_LIST_FOREACH(e_configure_registry, l, ecat)
{ {
Eina_List *ll;
E_Configure_Cat *ecat;
ecat = l->data;
if ((ecat->pri >= 0) && (ecat->items)) if ((ecat->pri >= 0) && (ecat->items))
{ {
E_Configure_It *eci;
cat = _e_configure_category_add(eco, _(ecat->label), cat = _e_configure_category_add(eco, _(ecat->label),
ecat->icon_file, ecat->icon); ecat->icon_file, ecat->icon);
for (ll = ecat->items; ll; ll = ll->next) EINA_LIST_FOREACH(ecat->items, ll, eci)
{ {
E_Configure_It *eci;
char buf[1024]; char buf[1024];
eci = ll->data; eci = ll->data;

View File

@ -157,6 +157,7 @@ _create_data(E_Config_Dialog *cfd)
cfdata = E_NEW(E_Config_Dialog_Data, 1); cfdata = E_NEW(E_Config_Dialog_Data, 1);
cfdata->cfd = cfd; cfdata->cfd = cfd;
cfdata->locals.cur_act = -1;
_fill_data(cfdata); _fill_data(cfdata);
return cfdata; return cfdata;
@ -365,6 +366,7 @@ _binding_change_cb(void *data)
_auto_apply_changes(cfdata); _auto_apply_changes(cfdata);
eina_stringshare_del(cfdata->locals.cur); eina_stringshare_del(cfdata->locals.cur);
cfdata->locals.cur = NULL; cfdata->locals.cur = NULL;
cfdata->locals.cur_act = -1;
if ((!cfdata->locals.binding) || (!cfdata->locals.binding[0])) return; if ((!cfdata->locals.binding) || (!cfdata->locals.binding[0])) return;
@ -381,6 +383,7 @@ _action_change_cb(void *data)
cfdata = data; cfdata = data;
_update_action_params(cfdata); _update_action_params(cfdata);
cfdata->locals.cur_act = e_widget_ilist_selected_get(cfdata->gui.o_action_list);
} }
static void static void
@ -749,7 +752,7 @@ _update_action_params(E_Config_Dialog_Data *cfdata)
E_Action_Group *actg; E_Action_Group *actg;
E_Action_Description *actd; E_Action_Description *actd;
E_Config_Binding_Key *bi; E_Config_Binding_Key *bi;
const char *action; const char *action, *params;
#define KB_EXAMPLE_PARAMS \ #define KB_EXAMPLE_PARAMS \
if ((!actd->param_example) || (!actd->param_example[0])) \ if ((!actd->param_example) || (!actd->param_example[0])) \
@ -800,6 +803,7 @@ _update_action_params(E_Config_Dialog_Data *cfdata)
return; return;
} }
action = bi->action; action = bi->action;
params = bi->params;
} }
else else
{ {
@ -812,10 +816,10 @@ _update_action_params(E_Config_Dialog_Data *cfdata)
{ {
if (!strcmp(action, actd->act_cmd)) if (!strcmp(action, actd->act_cmd))
{ {
if ((!actd->act_params) || (!actd->act_params[0])) if ((cfdata->locals.cur_act >= 0) && (cfdata->locals.cur_act != e_widget_ilist_selected_get(cfdata->gui.o_action_list)))
KB_EXAMPLE_PARAMS; KB_EXAMPLE_PARAMS;
else else
e_widget_entry_text_set(cfdata->gui.o_params, actd->act_params); e_widget_entry_text_set(cfdata->gui.o_params, params);
} }
else else
KB_EXAMPLE_PARAMS; KB_EXAMPLE_PARAMS;