elementary: Move icon lookup order to user specified theme.

As discussed on the mailing list we're taming the icon_standard code.
This means that icon themes are set by the user not the app.
Deprecate all the icon_lookup calls etc and remove the behaviour.
Add a config panel to elementary_config where the theme can be selected.
This commit is contained in:
Andy Williams 2016-04-26 00:00:33 +01:00
commit 8c02bf5be6
13 changed files with 268 additions and 104 deletions

View File

@ -1031,6 +1031,14 @@ _cf_themes(void *data,
_flip_to(data, "themes"); _flip_to(data, "themes");
} }
static void
_cf_icons(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
_flip_to(data, "icons");
}
static void static void
_cf_fonts(void *data, _cf_fonts(void *data,
Evas_Object *obj EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
@ -1525,6 +1533,51 @@ _theme_sel(void *data EINA_UNUSED,
printf("not implemented\n"); printf("not implemented\n");
}*/ }*/
static void
_icon_theme_use(void *data EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *win = elm_object_top_widget_get(obj);
const char *theme = evas_object_data_get(win, "icon_theme");
elm_config_icon_theme_set(theme);
elm_config_all_flush();
}
static void
_icon_theme_sel(void *data, Evas_Object *obj,
void *event_info EINA_UNUSED)
{
const char *theme = (const char *)data;
Evas_Object *win = elm_object_top_widget_get(obj);
evas_object_data_set(win, "icon_theme", theme);
}
static Eina_Bool
_icon_theme_valid(const char *theme)
{
const char *icon_path;
icon_path = efreet_icon_path_find(theme, "folder", 48);
return !!icon_path;
}
static int
_icon_theme_list_sort(const void *data1, const void *data2)
{
const Efreet_Icon_Theme *t1, *t2;
t1 = data1;
t2 = data2;
if (!t1->name.name) return 1;
if (!t2->name.name) return -1;
return strcmp(t1->name.name, t2->name.name);
}
static void static void
_status_config_sizing(Evas_Object *win, _status_config_sizing(Evas_Object *win,
Evas_Object *naviframe) Evas_Object *naviframe)
@ -2164,6 +2217,112 @@ _status_config_themes(Evas_Object *win,
elm_naviframe_item_simple_push(naviframe, tb); elm_naviframe_item_simple_push(naviframe, tb);
} }
static void
_status_config_icons(Evas_Object *win,
Evas_Object *naviframe)
{
Evas_Object *tb, *rc, *sp, *li, *ic, *pd, *fr, *bt;
Eina_List *list, *l;
const Efreet_Icon_Theme *th;
Elm_Object_Item *list_it, *def_it;
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_min_set(rc, 0, 130);
elm_table_pack(tb, rc, 0, 0, 1, 1);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_min_set(rc, 0, 200);
elm_table_pack(tb, rc, 0, 1, 1, 1);
/////////////////////////////////////////////
pd = elm_frame_add(win);
elm_object_style_set(pd, "pad_medium");
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, pd, 0, 0, 1, 1);
evas_object_show(pd);
li = elm_list_add(win);
elm_list_multi_select_set(li, EINA_FALSE);
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(pd, li);
evas_object_show(li);
evas_object_data_set(win, "icon_theme", elm_config_icon_theme_get());
ic = elm_icon_add(li);
def_it = elm_list_item_append(li, "Elementary", ic, NULL, _icon_theme_sel,
ELM_CONFIG_ICON_THEME_ELEMENTARY);
list = efreet_icon_theme_list_get();
list = eina_list_sort(list, eina_list_count(list), _icon_theme_list_sort);
EINA_LIST_FOREACH(list, l, th)
{
if (!_icon_theme_valid(th->name.internal))
continue;
ic = elm_icon_add(li);
elm_image_file_set(ic, efreet_icon_path_find(th->name.internal, "folder", 48), NULL);
list_it = elm_list_item_append(li, th->name.name, ic, NULL,
_icon_theme_sel, th->name.internal);
if (!strcmp(elm_config_icon_theme_get(), th->name.name))
elm_list_item_selected_set(list_it, EINA_TRUE);
}
if (!elm_list_selected_items_get(li))
elm_list_item_selected_set(def_it, EINA_TRUE);
elm_list_go(li);
pd = elm_frame_add(win);
elm_object_style_set(pd, "pad_medium");
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, pd, 0, 1, 1, 1);
evas_object_show(pd);
fr = elm_frame_add(win);
elm_object_text_set(fr, "Preview");
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(pd, fr);
evas_object_show(fr);
/////////////////////////////////////////////
sp = elm_separator_add(win);
elm_separator_horizontal_set(sp, EINA_TRUE);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_table_pack(tb, sp, 0, 2, 1, 1);
evas_object_show(sp);
pd = elm_frame_add(win);
elm_object_style_set(pd, "pad_medium");
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, 0.5, 0.5);
elm_table_pack(tb, pd, 0, 3, 1, 1);
evas_object_show(pd);
bt = elm_button_add(win);
evas_object_smart_callback_add(bt, "clicked", _icon_theme_use, win);
elm_object_text_set(bt, "Use Icon Theme");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bt, 0.5, 0.5);
elm_object_content_set(pd, bt);
evas_object_show(bt);
evas_object_data_set(win, "icons", tb);
elm_naviframe_item_simple_push(naviframe, tb);
}
static void static void
_font_preview_update(Evas_Object *win) _font_preview_update(Evas_Object *win)
{ {
@ -3941,6 +4100,10 @@ _status_config_full(Evas_Object *win,
_cf_themes, win); _cf_themes, win);
elm_toolbar_item_priority_set(tb_it, 90); elm_toolbar_item_priority_set(tb_it, 90);
tb_it = elm_toolbar_item_append(tb, "preferences-desktop-theme", "Icons",
_cf_icons, win);
elm_toolbar_item_priority_set(tb_it, 90);
elm_toolbar_item_append(tb, "preferences-desktop-font", "Fonts", elm_toolbar_item_append(tb, "preferences-desktop-font", "Fonts",
_cf_fonts, win); _cf_fonts, win);
@ -3965,6 +4128,7 @@ _status_config_full(Evas_Object *win,
evas_object_data_set(win, "naviframe", naviframe); evas_object_data_set(win, "naviframe", naviframe);
_status_config_themes(win, naviframe); _status_config_themes(win, naviframe);
_status_config_icons(win, naviframe);
_status_config_fonts(win, naviframe); _status_config_fonts(win, naviframe);
_status_config_profiles(win, naviframe); _status_config_profiles(win, naviframe);
_status_config_rendering(win, naviframe); _status_config_rendering(win, naviframe);

View File

@ -146,7 +146,7 @@ test_icon_transparent(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
/* Test: Icon Standard */ /* Test: Icon Standard */
static void static void
_standard_list_populate(Evas_Object *list, Elm_Icon_Lookup_Order order, int size) _standard_list_populate(Evas_Object *list, int size)
{ {
Evas_Object *ic; Evas_Object *ic;
Eina_List *l; Eina_List *l;
@ -168,7 +168,6 @@ _standard_list_populate(Evas_Object *list, Elm_Icon_Lookup_Order order, int size
if ((strrchr(name, '-') != NULL) || !strcmp(name, "folder")) if ((strrchr(name, '-') != NULL) || !strcmp(name, "folder"))
{ {
ic = elm_icon_add(list); ic = elm_icon_add(list);
elm_icon_order_lookup_set(ic, order);
elm_icon_standard_set(ic, name); elm_icon_standard_set(ic, name);
if (size) if (size)
evas_object_size_hint_min_set(ic, size, size); evas_object_size_hint_min_set(ic, size, size);
@ -185,14 +184,9 @@ _rdg_changed_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED) void *event_info EINA_UNUSED)
{ {
Evas_Object *li = data; Evas_Object *li = data;
Evas_Object *icon = evas_object_data_get(li, "resize_icon");
Evas_Object *order_rdg = evas_object_data_get(li, "order_rdg");
Evas_Object *size_rdg = evas_object_data_get(li, "size_rdg"); Evas_Object *size_rdg = evas_object_data_get(li, "size_rdg");
_standard_list_populate(li, elm_radio_value_get(order_rdg), _standard_list_populate(li, elm_radio_value_get(size_rdg));
elm_radio_value_get(size_rdg));
elm_icon_order_lookup_set(icon, elm_radio_value_get(order_rdg));
} }
static void static void
@ -232,7 +226,6 @@ _std_btn_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
icon = elm_icon_add(panes); icon = elm_icon_add(panes);
evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_icon_order_lookup_set(icon, ELM_ICON_LOOKUP_FDO_THEME);
elm_icon_standard_set(icon, "folder"); elm_icon_standard_set(icon, "folder");
elm_object_part_content_set(panes, "left", icon); elm_object_part_content_set(panes, "left", icon);
evas_object_show(icon); evas_object_show(icon);
@ -240,7 +233,6 @@ _std_btn_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
icon = elm_icon_add(panes); icon = elm_icon_add(panes);
evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_icon_order_lookup_set(icon, ELM_ICON_LOOKUP_FDO_THEME);
elm_icon_standard_set(icon, "user-home"); elm_icon_standard_set(icon, "user-home");
elm_object_part_content_set(panes, "right", icon); elm_object_part_content_set(panes, "right", icon);
evas_object_show(icon); evas_object_show(icon);
@ -253,7 +245,7 @@ void
test_icon_standard(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, test_icon_standard(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED) void *event_info EINA_UNUSED)
{ {
Evas_Object *win, *li, *box, *hbox, *fr, *rd, *rdg, *icon, *sl, *bt; Evas_Object *win, *li, *box, *hbox, *fr, *rd, *rdg, *label, *icon, *sl, *bt;
win = elm_win_util_standard_add("icon-test-std", "Icon Standard"); win = elm_win_util_standard_add("icon-test-std", "Icon Standard");
elm_win_autodel_set(win, EINA_TRUE); elm_win_autodel_set(win, EINA_TRUE);
@ -267,7 +259,7 @@ test_icon_standard(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(li, "selected", _list_selected_cb, NULL); evas_object_smart_callback_add(li, "selected", _list_selected_cb, NULL);
_standard_list_populate(li, ELM_ICON_LOOKUP_FDO_THEME, 0); _standard_list_populate(li, 0);
evas_object_show(li); evas_object_show(li);
// lookup order // lookup order
@ -282,37 +274,10 @@ test_icon_standard(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
elm_object_content_set(fr, hbox); elm_object_content_set(fr, hbox);
evas_object_show(hbox); evas_object_show(hbox);
rdg = elm_radio_add(hbox); label = elm_label_add(hbox);
elm_radio_state_value_set(rdg, ELM_ICON_LOOKUP_FDO_THEME); elm_object_text_set(label, "Lookup order has moved to elementary_config");
elm_object_text_set(rdg, "fdo, theme"); elm_box_pack_end(hbox, label);
elm_box_pack_end(hbox, rdg); evas_object_show(label);
evas_object_show(rdg);
evas_object_smart_callback_add(rdg, "changed", _rdg_changed_cb, li);
evas_object_data_set(li, "order_rdg", rdg);
rd = elm_radio_add(hbox);
elm_radio_state_value_set(rd, ELM_ICON_LOOKUP_THEME_FDO);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "theme, fdo");
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, li);
rd = elm_radio_add(hbox);
elm_radio_state_value_set(rd, ELM_ICON_LOOKUP_FDO);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "fdo only");
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, li);
rd = elm_radio_add(hbox);
elm_radio_state_value_set(rd, ELM_ICON_LOOKUP_THEME);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "theme only");
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, li);
// size // size
fr = elm_frame_add(box); fr = elm_frame_add(box);
@ -405,7 +370,6 @@ test_icon_standard(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
evas_object_show(hbox); evas_object_show(hbox);
icon = elm_icon_add(hbox); icon = elm_icon_add(hbox);
elm_icon_order_lookup_set(icon, ELM_ICON_LOOKUP_FDO_THEME);
elm_icon_standard_set(icon, "folder"); elm_icon_standard_set(icon, "folder");
evas_object_size_hint_min_set(icon, 16, 16); evas_object_size_hint_min_set(icon, 16, 16);
elm_box_pack_end(hbox, icon); elm_box_pack_end(hbox, icon);

View File

@ -1,3 +1,11 @@
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
# include "config.h" # include "config.h"
#endif #endif
/**
* @file
* @brief Definition of special values for user configuration.
*/
#define ELM_CONFIG_ICON_THEME_ELEMENTARY "_Elementary_Icon_Theme"

View File

@ -500,6 +500,7 @@ _desc_init(void)
ELM_CONFIG_VAL(D, T, popup_horizontal_align, T_DOUBLE); ELM_CONFIG_VAL(D, T, popup_horizontal_align, T_DOUBLE);
ELM_CONFIG_VAL(D, T, popup_vertical_align, T_DOUBLE); ELM_CONFIG_VAL(D, T, popup_vertical_align, T_DOUBLE);
ELM_CONFIG_VAL(D, T, spinner_min_max_filter_enable, T_UCHAR); ELM_CONFIG_VAL(D, T, spinner_min_max_filter_enable, T_UCHAR);
ELM_CONFIG_VAL(D, T, icon_theme, T_STRING);
#undef T #undef T
#undef D #undef D
#undef T_INT #undef T_INT
@ -1549,6 +1550,7 @@ _config_free(Elm_Config *cfg)
eina_stringshare_del(cfg->indicator_service_90); eina_stringshare_del(cfg->indicator_service_90);
eina_stringshare_del(cfg->indicator_service_180); eina_stringshare_del(cfg->indicator_service_180);
eina_stringshare_del(cfg->indicator_service_270); eina_stringshare_del(cfg->indicator_service_270);
eina_stringshare_del(cfg->icon_theme);
free(cfg); free(cfg);
} }
@ -1823,6 +1825,7 @@ _config_load(void)
_elm_config->naviframe_prev_btn_auto_pushed = EINA_TRUE; _elm_config->naviframe_prev_btn_auto_pushed = EINA_TRUE;
_elm_config->popup_horizontal_align = 0.5; _elm_config->popup_horizontal_align = 0.5;
_elm_config->popup_vertical_align = 0.5; _elm_config->popup_vertical_align = 0.5;
_elm_config->icon_theme = eina_stringshare_add(ELM_CONFIG_ICON_THEME_ELEMENTARY);
} }
static void static void
@ -2166,6 +2169,10 @@ _config_update(void)
IFCFG(0x0009) IFCFG(0x0009)
_elm_config->scroll_accel_factor = 7.0; _elm_config->scroll_accel_factor = 7.0;
IFCFGEND IFCFGEND
IFCFG(0x000a)
_elm_config->icon_theme = eina_stringshare_add(ELM_CONFIG_ICON_THEME_ELEMENTARY);
IFCFGEND
/** /**
* Fix user config for current ELM_CONFIG_EPOCH here. * Fix user config for current ELM_CONFIG_EPOCH here.
**/ **/
@ -2652,6 +2659,26 @@ elm_config_scale_set(double scale)
_elm_rescale(); _elm_rescale();
} }
EAPI const char *
elm_config_icon_theme_get(void)
{
if (!_elm_config->icon_theme)
return ELM_CONFIG_ICON_THEME_ELEMENTARY;
return _elm_config->icon_theme;
}
EAPI void
elm_config_icon_theme_set(const char *theme)
{
eina_stringshare_del(_elm_config->icon_theme);
if (theme)
_elm_config->icon_theme = eina_stringshare_add(theme);
else
_elm_config->icon_theme = eina_stringshare_add(ELM_CONFIG_ICON_THEME_ELEMENTARY);
}
EAPI Eina_Bool EAPI Eina_Bool
elm_config_password_show_last_get(void) elm_config_password_show_last_get(void)
{ {

View File

@ -973,6 +973,29 @@ EAPI double elm_config_scale_get(void);
*/ */
EAPI void elm_config_scale_set(double scale); EAPI void elm_config_scale_set(double scale);
/**
* Get the icon theme the user has set.
*
* This gets the global icon theme currently set or the default value
* ELM_CONFIG_ICON_THEME_ELEMENTARY.
*
* @return the icon theme to use
* @ingroup Elm_Icon
*/
EAPI const char *elm_config_icon_theme_get(void);
/**
* Set the icon theme for all elementary apps.
*
* This method will set the icon theme for all elm_icon_standard_set calls.
* Valid parameters are the name of an installed freedesktop.org icon theme
* or ELM_CONFIG_ICON_THEME_ELEMENTARY for the built in theme.
*
* @param the name of a freedesktop.org icon theme or ELM_CONFIG_ICON_THEME_ELEMENTARY
* @ingroup Elm_Icon
*/
EAPI void elm_config_icon_theme_set(const char *theme);
/** /**
* @defgroup Elm_Password_last_show Password show last * @defgroup Elm_Password_last_show Password show last
* @ingroup Elementary * @ingroup Elementary

View File

@ -276,7 +276,7 @@ _icon_freedesktop_set(Evas_Object *obj,
{ {
Efreet_Icon_Theme *theme; Efreet_Icon_Theme *theme;
/* TODO: Listen for EFREET_EVENT_ICON_CACHE_UPDATE */ /* TODO: Listen for EFREET_EVENT_ICON_CACHE_UPDATE */
theme = efreet_icon_theme_find(getenv("E_ICON_THEME")); theme = efreet_icon_theme_find(elm_config_icon_theme_get());
if (!theme) if (!theme)
{ {
const char **itr; const char **itr;
@ -446,35 +446,16 @@ _internal_elm_icon_standard_set(Evas_Object *obj,
ELM_ICON_DATA_GET(obj, sd); ELM_ICON_DATA_GET(obj, sd);
/* try locating the icon using the specified lookup order */ /* try locating the icon using the specified theme */
switch (sd->lookup_order) if (!strcmp(ELM_CONFIG_ICON_THEME_ELEMENTARY, elm_config_icon_theme_get()))
{
ret = _icon_standard_set(obj, name);
if (ret && fdo) *fdo = EINA_FALSE;
}
else
{ {
case ELM_ICON_LOOKUP_FDO:
ret = _icon_freedesktop_set(obj, name, _icon_size_min_get(obj)); ret = _icon_freedesktop_set(obj, name, _icon_size_min_get(obj));
if (ret && fdo) *fdo = EINA_TRUE; if (ret && fdo) *fdo = EINA_TRUE;
break;
case ELM_ICON_LOOKUP_THEME:
ret = _icon_standard_set(obj, name);
break;
case ELM_ICON_LOOKUP_THEME_FDO:
ret = _icon_standard_set(obj, name);
if (!ret)
{
ret = _icon_freedesktop_set(obj, name, _icon_size_min_get(obj));
if (ret && fdo) *fdo = EINA_TRUE;
}
break;
case ELM_ICON_LOOKUP_FDO_THEME:
default:
ret = _icon_freedesktop_set(obj, name, _icon_size_min_get(obj));
if (!ret)
ret = _icon_standard_set(obj, name);
else if (fdo)
*fdo = EINA_TRUE;
break;
} }
if (ret) if (ret)
@ -485,13 +466,17 @@ _internal_elm_icon_standard_set(Evas_Object *obj,
} }
if (_path_is_absolute(name)) if (_path_is_absolute(name))
return _icon_file_set(sd, obj, name); {
if (fdo)
*fdo = EINA_FALSE;
return _icon_file_set(sd, obj, name);
}
/* if that fails, see if icon name is in the format size/name. if so, /* if that fails, see if icon name is in the format size/name. if so,
try locating a fallback without the size specification */ try locating a fallback without the size specification */
if (!(tmp = strchr(name, '/'))) return EINA_FALSE; if (!(tmp = strchr(name, '/'))) return EINA_FALSE;
++tmp; ++tmp;
if (*tmp) return elm_icon_standard_set(obj, tmp); if (*tmp) return _internal_elm_icon_standard_set(obj, tmp, fdo);
/* give up */ /* give up */
return EINA_FALSE; return EINA_FALSE;
} }
@ -530,8 +515,6 @@ _elm_icon_evas_object_smart_add(Eo *obj, Elm_Icon_Data *priv)
evas_obj_smart_add(eo_super(obj, MY_CLASS)); evas_obj_smart_add(eo_super(obj, MY_CLASS));
elm_widget_sub_object_parent_add(obj); elm_widget_sub_object_parent_add(obj);
priv->lookup_order = ELM_ICON_LOOKUP_THEME_FDO;
priv->thumb.request = NULL; priv->thumb.request = NULL;
} }
@ -774,16 +757,17 @@ _elm_icon_standard_get(Eo *obj EINA_UNUSED, Elm_Icon_Data *sd)
return sd->stdicon; return sd->stdicon;
} }
EOLIAN static void EINA_DEPRECATED EOLIAN static void
_elm_icon_order_lookup_set(Eo *obj EINA_UNUSED, Elm_Icon_Data *sd, Elm_Icon_Lookup_Order order) _elm_icon_order_lookup_set(Eo *obj EINA_UNUSED, Elm_Icon_Data *sd EINA_UNUSED,
Elm_Icon_Lookup_Order order EINA_UNUSED)
{ {
sd->lookup_order = order; // this method's behaviour has been overridden by elm_config_icon_theme_set
} }
EOLIAN static Elm_Icon_Lookup_Order EINA_DEPRECATED EOLIAN static Elm_Icon_Lookup_Order
_elm_icon_order_lookup_get(Eo *obj EINA_UNUSED, Elm_Icon_Data *sd) _elm_icon_order_lookup_get(Eo *obj EINA_UNUSED, Elm_Icon_Data *sd EINA_UNUSED)
{ {
return sd->lookup_order; return ELM_ICON_LOOKUP_FDO_THEME;
} }
EAPI void EAPI void

View File

@ -10,6 +10,8 @@ enum Elm.Icon.Lookup_Order
{ {
[[Lookup order used by elm_icon_standard_set(). Should look for icons in [[Lookup order used by elm_icon_standard_set(). Should look for icons in
the theme, FDO paths, or both? the theme, FDO paths, or both?
Warning: This enum will be removed as the lookup_order is deprecated.
]] ]]
legacy: elm_icon_lookup; legacy: elm_icon_lookup;
fdo_theme, [[Icon look up order: freedesktop, theme.]] fdo_theme, [[Icon look up order: freedesktop, theme.]]
@ -24,6 +26,8 @@ class Elm.Icon (Elm.Image)
eo_prefix: elm_obj_icon; eo_prefix: elm_obj_icon;
methods { methods {
@property order_lookup { @property order_lookup {
[[Warning: the order_lookup property is deprecated.
See elm_config_icon_theme_set instead.]]
set { set {
[[Sets the icon lookup order used by elm_icon_standard_set(). [[Sets the icon lookup order used by elm_icon_standard_set().

View File

@ -134,7 +134,7 @@ struct _Elm_Theme
* the users config doesn't need to be wiped - simply new values need * the users config doesn't need to be wiped - simply new values need
* to be put in * to be put in
*/ */
#define ELM_CONFIG_FILE_GENERATION 0x0009 #define ELM_CONFIG_FILE_GENERATION 0x000a
#define ELM_CONFIG_VERSION_EPOCH_OFFSET 16 #define ELM_CONFIG_VERSION_EPOCH_OFFSET 16
#define ELM_CONFIG_VERSION ((ELM_CONFIG_EPOCH << ELM_CONFIG_VERSION_EPOCH_OFFSET) | \ #define ELM_CONFIG_VERSION ((ELM_CONFIG_EPOCH << ELM_CONFIG_VERSION_EPOCH_OFFSET) | \
ELM_CONFIG_FILE_GENERATION) ELM_CONFIG_FILE_GENERATION)
@ -317,6 +317,7 @@ struct _Elm_Config
int gl_depth; int gl_depth;
int gl_stencil; int gl_stencil;
int gl_msaa; int gl_msaa;
const char *icon_theme;
/* Not part of the EET file */ /* Not part of the EET file */
Eina_Bool is_mirrored : 1; Eina_Bool is_mirrored : 1;

View File

@ -311,7 +311,6 @@ _store_item_content_get(void *data, Evas_Object *obj, const char *part)
case ELM_STORE_ITEM_MAPPING_ICON: case ELM_STORE_ITEM_MAPPING_ICON:
ic = elm_icon_add(obj); ic = elm_icon_add(obj);
s = *(char **)(((unsigned char *)sti->data) + m->offset); s = *(char **)(((unsigned char *)sti->data) + m->offset);
elm_icon_order_lookup_set(ic, m->details.icon.lookup_order);
evas_object_size_hint_aspect_set(ic, evas_object_size_hint_aspect_set(ic,
EVAS_ASPECT_CONTROL_VERTICAL, EVAS_ASPECT_CONTROL_VERTICAL,
m->details.icon.w, m->details.icon.w,

View File

@ -2488,7 +2488,6 @@ _item_new(Evas_Object *obj,
elm_interface_atspi_accessible_type_set(VIEW(it), ELM_ATSPI_TYPE_DISABLED); elm_interface_atspi_accessible_type_set(VIEW(it), ELM_ATSPI_TYPE_DISABLED);
icon_obj = elm_icon_add(VIEW(it)); icon_obj = elm_icon_add(VIEW(it));
elm_icon_order_lookup_set(icon_obj, sd->lookup_order);
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON) if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
_access_widget_item_register(it); _access_widget_item_register(it);
@ -2900,7 +2899,6 @@ _elm_toolbar_evas_object_smart_add(Eo *obj, Elm_Toolbar_Data *priv)
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move_cb, obj); evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move_cb, obj);
evas_object_event_callback_add evas_object_event_callback_add
(priv->bx, EVAS_CALLBACK_RESIZE, _resize_cb, obj); (priv->bx, EVAS_CALLBACK_RESIZE, _resize_cb, obj);
elm_toolbar_icon_order_lookup_set(obj, ELM_ICON_LOOKUP_THEME_FDO);
_elm_toolbar_highlight_in_theme(obj); _elm_toolbar_highlight_in_theme(obj);
_sizing_eval(obj); _sizing_eval(obj);
@ -3638,7 +3636,6 @@ _elm_toolbar_item_state_add(Eo *eo_item, Elm_Toolbar_Item_Data *item,
ELM_TOOLBAR_ITEM_CHECK_OR_RETURN(item, NULL); ELM_TOOLBAR_ITEM_CHECK_OR_RETURN(item, NULL);
obj = WIDGET(item); obj = WIDGET(item);
ELM_TOOLBAR_DATA_GET(WIDGET(item), sd);
if (!item->states) if (!item->states)
{ {
@ -3650,7 +3647,6 @@ _elm_toolbar_item_state_add(Eo *eo_item, Elm_Toolbar_Item_Data *item,
} }
icon_obj = elm_icon_add(obj); icon_obj = elm_icon_add(obj);
elm_icon_order_lookup_set(icon_obj, sd->lookup_order);
if (!icon_obj) goto error_state_add; if (!icon_obj) goto error_state_add;
if (!_item_icon_set(icon_obj, "toolbar/", icon)) if (!_item_icon_set(icon_obj, "toolbar/", icon))
@ -3814,24 +3810,17 @@ _elm_toolbar_item_state_prev(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *ite
return eina_list_data_get(prev_state); return eina_list_data_get(prev_state);
} }
EOLIAN static void EINA_DEPRECATED EOLIAN static void
_elm_toolbar_icon_order_lookup_set(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Elm_Icon_Lookup_Order order) _elm_toolbar_icon_order_lookup_set(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd EINA_UNUSED,
Elm_Icon_Lookup_Order order EINA_UNUSED)
{ {
Elm_Toolbar_Item_Data *it; // this method's behaviour has been overridden by elm_config_icon_theme_set
if (sd->lookup_order == order) return;
sd->lookup_order = order;
EINA_INLIST_FOREACH(sd->items, it)
elm_icon_order_lookup_set(it->icon, order);
if (sd->more_item)
elm_icon_order_lookup_set(sd->more_item->icon, order);
} }
EOLIAN static Elm_Icon_Lookup_Order EINA_DEPRECATED EOLIAN static Elm_Icon_Lookup_Order
_elm_toolbar_icon_order_lookup_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd) _elm_toolbar_icon_order_lookup_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd EINA_UNUSED)
{ {
return sd->lookup_order; return ELM_ICON_LOOKUP_FDO_THEME;
} }
EOLIAN static void EOLIAN static void

View File

@ -106,7 +106,10 @@ class Elm.Toolbar (Elm.Widget, Elm.Interface_Scrollable,
[[Sets icon lookup order, for toolbar items' icons. [[Sets icon lookup order, for toolbar items' icons.
Icons added before calling this function will not be affected. Icons added before calling this function will not be affected.
The default lookup order is #ELM_ICON_LOOKUP_THEME_FDO.]] The default lookup order is #ELM_ICON_LOOKUP_THEME_FDO.
Warning: the icon_order_lookup property is deprecated.
See elm_config_icon_theme_set instead.]]
set { set {
} }
get { get {

View File

@ -24,7 +24,6 @@ struct _Elm_Icon_Data
{ {
Evas_Object *obj; // the object itself Evas_Object *obj; // the object itself
const char *stdicon; const char *stdicon;
Elm_Icon_Lookup_Order lookup_order;
struct struct
{ {

View File

@ -39,7 +39,6 @@ struct _Elm_Toolbar_Data
Elm_Object_Item *last_focused_item; /**< This records the last focused item when widget looses focus. This is required to set the focus on last focused item when widgets gets focus. */ Elm_Object_Item *last_focused_item; /**< This records the last focused item when widget looses focus. This is required to set the focus on last focused item when widgets gets focus. */
Elm_Toolbar_Item_Data *reorder_empty, *reorder_item; Elm_Toolbar_Item_Data *reorder_empty, *reorder_item;
Elm_Toolbar_Shrink_Mode shrink_mode; Elm_Toolbar_Shrink_Mode shrink_mode;
Elm_Icon_Lookup_Order lookup_order;
int theme_icon_size, priv_icon_size, int theme_icon_size, priv_icon_size,
icon_size; icon_size;
int standard_priority; int standard_priority;