clicking a settings category in menu->settings->all now brings up the settings panel with the chosen category selected

SVN revision: 74878
This commit is contained in:
Mike Blumenkrantz 2012-08-04 10:14:56 +00:00
parent ece66f0750
commit 61d19baef1
3 changed files with 34 additions and 10 deletions

View File

@ -56,13 +56,13 @@ static void _e_configure_item_add(E_Configure_Category *cat, co
static void _e_configure_item_cb(void *data); static void _e_configure_item_cb(void *data);
static void _e_configure_focus_cb(void *data, Evas_Object *obj); static void _e_configure_focus_cb(void *data, Evas_Object *obj);
static void _e_configure_keydown_cb(void *data, Evas *e, Evas_Object *obj, void *event); static void _e_configure_keydown_cb(void *data, Evas *e, Evas_Object *obj, void *event);
static void _e_configure_fill_cat_list(void *data); static void _e_configure_fill_cat_list(void *data, const char *sel);
static Eina_Bool _e_configure_module_update_cb(void *data, int type, void *event); static Eina_Bool _e_configure_module_update_cb(void *data, int type, void *event);
static E_Configure *_e_configure = NULL; static E_Configure *_e_configure = NULL;
void void
e_configure_show(E_Container *con) e_configure_show(E_Container *con, const char *params)
{ {
E_Configure *eco; E_Configure *eco;
E_Manager *man; E_Manager *man;
@ -74,6 +74,9 @@ e_configure_show(E_Container *con)
if (_e_configure) if (_e_configure)
{ {
E_Zone *z, *z2; E_Zone *z, *z2;
const Eina_List *l;
void *it;
int x = 0;
eco = _e_configure; eco = _e_configure;
z = e_util_zone_current_get(e_manager_current_get()); z = e_util_zone_current_get(e_manager_current_get());
@ -93,6 +96,15 @@ e_configure_show(E_Container *con)
if ((e_config->focus_setting == E_FOCUS_NEW_DIALOG) || if ((e_config->focus_setting == E_FOCUS_NEW_DIALOG) ||
(e_config->focus_setting == E_FOCUS_NEW_WINDOW)) (e_config->focus_setting == E_FOCUS_NEW_WINDOW))
e_border_focus_set(eco->win->border, 1, 1); e_border_focus_set(eco->win->border, 1, 1);
EINA_LIST_FOREACH(e_widget_toolbar_items_get(eco->cat_list), l, it)
{
if (e_widget_toolbar_item_label_get(it) == params)
{
e_widget_toolbar_item_select(eco->cat_list, x);
break;
}
x++;
}
return; return;
} }
@ -157,7 +169,7 @@ e_configure_show(E_Container *con)
evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN,
_e_configure_keydown_cb, eco->win); _e_configure_keydown_cb, eco->win);
_e_configure_fill_cat_list(eco); _e_configure_fill_cat_list(eco, params);
/* Close Button */ /* Close Button */
eco->close = e_widget_button_add(eco->evas, _("Close"), NULL, eco->close = e_widget_button_add(eco->evas, _("Close"), NULL,
@ -176,6 +188,7 @@ e_configure_show(E_Container *con)
/* Preselect "Appearance" */ /* Preselect "Appearance" */
e_widget_focus_set(eco->cat_list, 1); e_widget_focus_set(eco->cat_list, 1);
if (!e_widget_toolbar_item_selected_get(eco->cat_list))
e_widget_toolbar_item_select(eco->cat_list, 0); e_widget_toolbar_item_select(eco->cat_list, 0);
if (eco->cats) if (eco->cats)
@ -450,13 +463,14 @@ _e_configure_keydown_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSE
} }
static void static void
_e_configure_fill_cat_list(void *data) _e_configure_fill_cat_list(void *data, const char *sel)
{ {
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, *ll; Eina_List *l, *ll;
E_Configure_Cat *ecat; E_Configure_Cat *ecat;
int num = -1;
if (!(eco = data)) return; if (!(eco = data)) return;
@ -489,6 +503,8 @@ _e_configure_fill_cat_list(void *data)
eci->icon_file, eci->icon, buf); eci->icon_file, eci->icon, buf);
} }
} }
if (sel && (ecat->cat == sel))
num = e_widget_toolbar_items_count(eco->cat_list) - 1;
} }
} }
e_widget_on_focus_hook_set(eco->cat_list, _e_configure_focus_cb, eco->win); e_widget_on_focus_hook_set(eco->cat_list, _e_configure_focus_cb, eco->win);
@ -504,6 +520,7 @@ _e_configure_fill_cat_list(void *data)
if (mh < (120 * e_scale)) mh = 120 * e_scale; if (mh < (120 * e_scale)) mh = 120 * e_scale;
e_widget_size_min_set(eco->item_list, mw, mh); e_widget_size_min_set(eco->item_list, mw, mh);
e_widget_list_object_append(eco->o_list, eco->item_list, 1, 1, 0.5); e_widget_list_object_append(eco->o_list, eco->item_list, 1, 1, 0.5);
if (num != -1) e_widget_toolbar_item_select(eco->cat_list, num);
e_widget_size_min_get(eco->o_list, &mw, &mh); e_widget_size_min_get(eco->o_list, &mw, &mh);
edje_extern_object_min_size_set(eco->o_list, mw, mh); edje_extern_object_min_size_set(eco->o_list, mw, mh);
@ -518,7 +535,7 @@ _e_configure_module_update_cb(void *data, int type __UNUSED__, void *event __UNU
if (!(eco = data)) return ECORE_CALLBACK_PASS_ON; if (!(eco = data)) return ECORE_CALLBACK_PASS_ON;
if (!eco->cat_list) return ECORE_CALLBACK_PASS_ON; if (!eco->cat_list) return ECORE_CALLBACK_PASS_ON;
sel = e_widget_toolbar_item_selected_get(eco->cat_list); sel = e_widget_toolbar_item_selected_get(eco->cat_list);
_e_configure_fill_cat_list(eco); _e_configure_fill_cat_list(eco, NULL);
e_widget_toolbar_item_select(eco->cat_list, sel); e_widget_toolbar_item_select(eco->cat_list, sel);
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
} }

View File

@ -4,7 +4,7 @@
#ifndef E_CONF_H #ifndef E_CONF_H
#define E_CONF_H #define E_CONF_H
void e_configure_show(E_Container *con); void e_configure_show(E_Container *con, const char *params);
void e_configure_del(void); void e_configure_del(void);
#endif #endif

View File

@ -198,6 +198,13 @@ _config_pre_activate_cb(void *data, E_Menu *m)
} }
} }
static void
_config_item_activate_cb(void *data, E_Menu *m, E_Menu_Item *mi __UNUSED__)
{
E_Configure_Cat *ecat = data;
e_configure_show(m->zone->container, ecat->cat);
}
static void static void
_config_all_pre_activate_cb(void *data __UNUSED__, E_Menu *m) _config_all_pre_activate_cb(void *data __UNUSED__, E_Menu *m)
{ {
@ -222,7 +229,7 @@ _config_all_pre_activate_cb(void *data __UNUSED__, E_Menu *m)
else else
e_util_menu_item_theme_icon_set(mi, ecat->icon); e_util_menu_item_theme_icon_set(mi, ecat->icon);
} }
e_menu_item_callback_set(mi, _config_item_activate_cb, ecat);
sub = e_menu_new(); sub = e_menu_new();
e_menu_item_submenu_set(mi, sub); e_menu_item_submenu_set(mi, sub);
e_menu_pre_activate_callback_set(sub, _config_pre_activate_cb, ecat); e_menu_pre_activate_callback_set(sub, _config_pre_activate_cb, ecat);
@ -404,14 +411,14 @@ _e_mod_action_conf_cb(E_Object *obj, const char *params)
if ((zone) && (params)) if ((zone) && (params))
e_configure_registry_call(params, zone->container, params); e_configure_registry_call(params, zone->container, params);
else if (zone) else if (zone)
e_configure_show(zone->container); e_configure_show(zone->container, params);
} }
/* menu item callback(s) */ /* menu item callback(s) */
static void static void
_e_mod_conf_cb(void *data __UNUSED__, E_Menu *m, E_Menu_Item *mi __UNUSED__) _e_mod_conf_cb(void *data __UNUSED__, E_Menu *m, E_Menu_Item *mi __UNUSED__)
{ {
e_configure_show(m->zone->container); e_configure_show(m->zone->container, NULL);
} }
static void static void