diff options
author | Jee-Yong Um <jc9.um@samsung.com> | 2016-02-17 23:01:58 +0900 |
---|---|---|
committer | Jee-Yong Um <conr2d@gmail.com> | 2016-02-19 05:24:28 +0900 |
commit | 358c8ab35c5c3f24dec553b27b22ae04104ae9e1 (patch) | |
tree | a11f255655f51db5c3288bda5a578592cc25931d | |
parent | f4f21e860a6776f389cac2df5ad8338788d7b7d8 (diff) | |
download | elementary-devs/conr2d/fileselector.tar.gz |
fileselector: refine code and themedevs/conr2d/fileselector
-rw-r--r-- | data/themes/edc/elm/fileselector.edc | 181 | ||||
-rw-r--r-- | src/lib/elc_fileselector.c | 192 | ||||
-rw-r--r-- | src/lib/elm_fileselector.eo | 1 |
3 files changed, 175 insertions, 199 deletions
diff --git a/data/themes/edc/elm/fileselector.edc b/data/themes/edc/elm/fileselector.edc index 0e1fa5034..adc03e90f 100644 --- a/data/themes/edc/elm/fileselector.edc +++ b/data/themes/edc/elm/fileselector.edc @@ -1,8 +1,8 @@ group { name: "elm/entry/path/separator/default"; images.image: "sym_right_glow_normal.png" COMP; parts { - part { name: "icon"; mouse_events: 0; - description { state: "default" 0.0; + image { "icon"; nomouse; + desc { "default"; image.normal: "sym_right_glow_normal.png"; FIXED_SIZE(15, 15) aspect: 1.0 1.0; @@ -14,21 +14,23 @@ group { name: "elm/entry/path/separator/default"; group { name: "elm/fileselector/base/default"; data.item: "path_separator" "<item relsize=15x15 vsize=full href=path/separator></item>"; parts { - part { name: "elm.swallow.up"; type: SWALLOW; - description { state: "default" 0.0; - fixed: 1 1; + spacer { "base"; + desc { "default"; + } + } + swallow { "elm.swallow.up"; + desc { "default"; align: 0.0 0.0; - min: 5 5; rel1.offset: 3 3; + rel1.to: "base"; rel2.relative: 0.0 0.0; rel2.offset: 3 3; + rel2.to: "base"; } } - part { name: "elm.swallow.home"; type: SWALLOW; - description { state: "default" 0.0; - fixed: 1 1; - align: 0.0 0.0; - min: 5 5; + swallow { "elm.swallow.home"; + desc { "default"; + align: 0.0 0.5; rel1 { to: "elm.swallow.up"; relative: 1.0 0.0; @@ -41,9 +43,9 @@ group { name: "elm/fileselector/base/default"; } } } - part { name: "elm.swallow.search"; type: SWALLOW; - description { state: "default" 0.0; - fixed: 1 1; + swallow { "elm.swallow.search"; + desc { "default"; + min: 65 0; rel1 { to: "elm.swallow.home"; relative: 1.0 0.0; @@ -52,121 +54,116 @@ group { name: "elm/fileselector/base/default"; rel2 { to_y: "elm.swallow.home"; relative: 1.0 1.0; - offset: -4 0; + offset: -4 -1; } } } - part { name: "elm.spinner.clip"; type: RECT; + swallow { "elm.swallow.ok"; description { state: "default" 0.0; - rel1.to: "elm.swallow.spinner"; - rel2.to: "elm.swallow.spinner"; - color: 255 255 255 0; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - color: 255 255 255 255; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + rel1.offset: -4 -4; + rel1.to: "base"; + rel2.relative: 1.0 1.0; + rel2.offset: -4 -4; + rel2.to: "base"; } } - part { name: "elm.swallow.spinner"; type: SWALLOW; - clip_to: "elm.spinner.clip"; - description { state: "default" 0.0; - fixed: 1 1; - align: 1.0 0.0; - min: 5 5; - rel1.relative: 1.0 0.0; - rel1.offset: -4 3; - rel2.relative: 1.0 0.0; - rel2.offset: -4 3; + swallow { "elm.swallow.cancel"; + desc { "default"; + align: 1.0 0.5; + rel1 { + to: "elm.swallow.ok"; + relative: 0.0 0.0; + offset: -4 0; + } + rel2 { + to: "elm.swallow.ok"; + relative: 0.0 1.0; + offset: -4 -1; + } } } - part { name: "elm.swallow.files"; type: SWALLOW; - description { state: "default" 0.0; - align: 1.0 0.0; - min: 10 10; + swallow { "elm.swallow.filters"; + desc { "default"; + align: 1.0 1.0; rel1 { - to_y: "elm.swallow.home"; - relative: 0.0 1.0; - offset: 3 3; + to_y: "elm.swallow.ok"; + relative: 1.0 0.0; + offset: -4 -4; } rel2 { - to_y: "elm.swallow.path"; + to_y: "elm.swallow.ok"; relative: 1.0 0.0; offset: -4 -4; } } } - part { name: "elm.swallow.path"; type: SWALLOW; - description { state: "default" 0.0; - fixed: 1 1; + swallow { "elm.swallow.filename"; + desc { "default"; align: 0.5 1.0; rel1 { - to_y: "elm.swallow.filename"; + to_y: "elm.swallow.filters"; relative: 0.0 0.0; offset: 3 -4; } rel2 { - to_y: "elm.swallow.filename"; + to_y: "elm.swallow.filters"; relative: 1.0 0.0; offset: -4 -4; } } } - part { name: "elm.swallow.filename"; type: SWALLOW; - description { state: "default" 0.0; - fixed: 1 1; + swallow { "elm.swallow.path"; + desc { "default"; align: 0.5 1.0; rel1 { - to_y: "elm.swallow.filters"; + to_y: "elm.swallow.filename"; relative: 0.0 0.0; offset: 3 -4; } rel2 { - to_y: "elm.swallow.filters"; + to_y: "elm.swallow.filename"; relative: 1.0 0.0; offset: -4 -4; } } } - part { name: "elm.swallow.filters"; type: SWALLOW; - description { state: "default" 0.0; - fixed: 1 1; - align: 1.0 1.0; + swallow { "elm.swallow.files"; + desc { "default"; rel1 { - to_y: "elm.swallow.ok"; - relative: 1.0 0.0; - offset: -4 -4; + to_y: "elm.swallow.home"; + relative: 0.0 1.0; + offset: 3 3; } rel2 { - to_y: "elm.swallow.ok"; + to_y: "elm.swallow.path"; relative: 1.0 0.0; offset: -4 -4; } } } - part { name: "elm.swallow.cancel"; type: SWALLOW; - description { state: "default" 0.0; + swallow { "elm.swallow.spinner"; + clip: "elm.spinner.clip"; + desc { "default"; fixed: 1 1; - align: 1.0 1.0; - rel1 { - to: "elm.swallow.ok"; - relative: 0.0 0.0; - offset: -4 0; - } - rel2 { - to: "elm.swallow.ok"; - relative: 0.0 1.0; - offset: -4 -1; - } + align: 1.0 0.0; + rel1.relative: 1.0 0.0; + rel1.offset: -4 3; + rel2.relative: 1.0 0.0; + rel2.offset: -4 3; } } - part { name: "elm.swallow.ok"; type: SWALLOW; - description { state: "default" 0.0; + rect { "elm.spinner.clip"; + desc { "default"; fixed: 1 1; - align: 1.0 1.0; - rel1.relative: 1.0 1.0; - rel1.offset: -4 -4; - rel2.relative: 1.0 1.0; - rel2.offset: -4 -4; + rel1.to: "elm.swallow.spinner"; + rel2.to: "elm.swallow.spinner"; + color: 255 255 255 0; + } + desc { "visible"; + inherit: "default" 0.0; + color: 255 255 255 255; } } } @@ -194,20 +191,8 @@ group { name: "elm/fileselector/base/default"; group { name: "elm/fileselector_entry/base/default"; parts { - part { name: "elm.swallow.entry"; type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - align: 0.0 0.5; - min: 50 4; - rel2 { to_x: "elm.swallow.button"; - relative: 0.0 1.0; - offset: -1 -1; - } - } - } - part { name: "elm.swallow.button"; type: SWALLOW; - scale: 1; - description { state: "default" 0.0; + swallow { "elm.swallow.button"; scale; + desc { "default"; align: 1.0 0.0; fixed: 1 0; min: 40 4; @@ -217,5 +202,15 @@ group { name: "elm/fileselector_entry/base/default"; } } } + swallow { "elm.swallow.entry"; scale; + desc { "default"; + align: 0.0 0.5; + min: 50 4; + rel2 { to_x: "elm.swallow.button"; + relative: 0.0 1.0; + offset: -1 -1; + } + } + } } } diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c index 0c4002e2d..a5ba6cef1 100644 --- a/src/lib/elc_fileselector.c +++ b/src/lib/elc_fileselector.c @@ -71,19 +71,6 @@ _elm_fileselector_smart_del_do(Elm_Fileselector_Data *sd) eo_do_super(sd->obj, MY_CLASS, evas_obj_smart_del()); } -EOLIAN static void -_elm_fileselector_elm_layout_sizing_eval(Eo *obj, Elm_Fileselector_Data *sd EINA_UNUSED) -{ - Evas_Coord minw = -1, minh = -1; - - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - - elm_coords_finger_size_adjust(1, &minw, 1, &minh); - edje_object_size_min_restricted_calc - (wd->resize_obj, &minw, &minh, minw, minh); - evas_object_size_hint_min_set(obj, minw, minh); -} - static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl) { @@ -102,16 +89,16 @@ _elm_fileselector_elm_widget_theme_apply(Eo *obj, Elm_Fileselector_Data *sd) const char *style; const char *data; char buf[1024]; - - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - Eina_Bool int_ret = EINA_FALSE; + eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_theme_apply()); if (!int_ret) return EINA_FALSE; style = elm_widget_style_get(obj); _mirrored_set(obj, elm_widget_mirrored_get(obj)); + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); + data = edje_object_data_get (wd->resize_obj, "path_separator"); if (data) sd->path_separator = data; @@ -119,36 +106,24 @@ _elm_fileselector_elm_widget_theme_apply(Eo *obj, Elm_Fileselector_Data *sd) snprintf(buf, sizeof(buf), "fileselector/%s", style); -#define SWALLOW(part_name, object_ptn) \ - if (object_ptn) \ - { \ - elm_widget_style_set(object_ptn, buf); \ - if (!elm_layout_content_set(obj, part_name, object_ptn)) \ - evas_object_hide(object_ptn); \ - } - - SWALLOW("elm.swallow.up", sd->up_button); - SWALLOW("elm.swallow.home", sd->home_button); - SWALLOW("elm.swallow.spinner", sd->spinner); - elm_object_style_set(sd->spinner, "wheel"); + elm_widget_style_set(sd->up_button, buf); + elm_widget_style_set(sd->home_button, buf); + elm_widget_style_set(sd->spinner, "wheel"); - if (!elm_layout_content_set(obj, "elm.swallow.files", sd->files_view)) - evas_object_hide(sd->files_view); - - SWALLOW("elm.swallow.path", sd->path_entry); - SWALLOW("elm.swallow.filename", sd->name_entry); - SWALLOW("elm.swallow.search", sd->search_entry); + elm_widget_style_set(sd->path_entry, style); + elm_widget_style_set(sd->name_entry, style); + elm_widget_style_set(sd->search_entry, style); snprintf(buf, sizeof(buf), "fileselector/actions/%s", style); - SWALLOW("elm.swallow.filters", sd->filter_hoversel); - SWALLOW("elm.swallow.cancel", sd->cancel_button); - SWALLOW("elm.swallow.ok", sd->ok_button); - -#undef SWALLOW - edje_object_message_signal_process(wd->resize_obj); + if (sd->filter_hoversel) + elm_widget_style_set(sd->filter_hoversel, buf); - elm_layout_sizing_eval(obj); + if (sd->ok_button) + { + elm_widget_style_set(sd->cancel_button, buf); + elm_widget_style_set(sd->ok_button, buf); + } return EINA_TRUE; } @@ -1273,11 +1248,9 @@ _files_list_add(Evas_Object *obj) Evas_Object *li; li = elm_genlist_add(obj); + elm_genlist_mode_set(li, ELM_LIST_COMPRESS); evas_object_data_set(li, "parent", obj); elm_widget_mirrored_automatic_set(li, EINA_FALSE); - evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_min_set(li, 100, 100); eo_do(li, eo_event_callback_add (EVAS_SELECTABLE_INTERFACE_EVENT_SELECTED, _on_item_selected, obj)); @@ -1296,8 +1269,6 @@ _files_list_add(Evas_Object *obj) eo_do(li, eo_event_callback_add (EVAS_OBJECT_EVENT_KEY_DOWN, _files_key_down, obj)); - elm_widget_sub_object_add(obj, li); - return li; } @@ -1327,8 +1298,6 @@ _files_grid_add(Evas_Object *obj) eo_do(grid, eo_event_callback_add (EVAS_OBJECT_EVENT_KEY_DOWN, _files_key_down, obj)); - elm_widget_sub_object_add(obj, grid); - return grid; } @@ -1481,8 +1450,8 @@ EOLIAN static void _elm_fileselector_evas_object_smart_add(Eo *obj, Elm_Fileselector_Data *priv) { Evas_Object *ic, *bt, *en, *pb; - - EINA_REFCOUNT_INIT(priv); + const char *data; + char buf[1024]; eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); elm_widget_sub_object_parent_add(obj); @@ -1495,40 +1464,70 @@ _elm_fileselector_evas_object_smart_add(Eo *obj, Elm_Fileselector_Data *priv) (obj, "fileselector", "base", elm_widget_style_get(obj))) CRI("Failed to set layout!"); + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); + + data = edje_object_data_get + (wd->resize_obj, "path_separator"); + if (data) priv->path_separator = data; + else priv->path_separator = "/"; + + snprintf(buf, sizeof(buf), "fileselector/%s", elm_widget_style_get(obj)); + // up btn ic = elm_icon_add(obj); elm_icon_standard_set(ic, "arrow_up"); - evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); bt = elm_button_add(obj); elm_widget_mirrored_automatic_set(bt, EINA_FALSE); elm_object_part_content_set(bt, "icon", ic); elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Up")); - evas_object_size_hint_align_set(bt, 0.0, 0.0); eo_do(bt, eo_event_callback_add (EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _on_dir_up, obj)); - elm_widget_sub_object_add(obj, bt); - priv->up_button = bt; + elm_object_style_set(priv->up_button, buf); + elm_object_part_content_set(obj, "elm.swallow.up", priv->up_button); // home btn ic = elm_icon_add(obj); elm_icon_standard_set(ic, "home"); - evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); bt = elm_button_add(obj); elm_widget_mirrored_automatic_set(bt, EINA_FALSE); elm_object_part_content_set(bt, "icon", ic); elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Home")); - evas_object_size_hint_align_set(bt, 0.0, 0.0); eo_do(bt, eo_event_callback_add (EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _home, obj)); priv->home_button = bt; + elm_object_style_set(priv->home_button, buf); + elm_object_part_content_set(obj, "elm.swallow.home", priv->home_button); + + //search entry + ic = elm_icon_add(obj); + elm_icon_standard_set(ic, "search"); + evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + en = elm_entry_add(obj); + elm_entry_scrollable_set(en, EINA_TRUE); + elm_widget_mirrored_automatic_set(en, EINA_FALSE); + elm_entry_editable_set(en, EINA_TRUE); + elm_entry_single_line_set(en, EINA_TRUE); + elm_entry_line_wrap_set(en, ELM_WRAP_CHAR); + elm_object_domain_translatable_part_text_set(en, "guide", + PACKAGE, N_("Search")); + elm_object_part_content_set(en, "icon", ic); + elm_entry_icon_visible_set(en, EINA_TRUE); + eo_do(en, eo_event_callback_add + (ELM_ENTRY_EVENT_CHANGED, _preedit_cb, obj)); + evas_object_data_set(obj, "search", en); + + priv->search_entry = en; + elm_object_style_set(priv->search_entry, buf); + elm_object_part_content_set(obj, "elm.swallow.search", priv->search_entry); // spinner pb = elm_progressbar_add(obj); - elm_widget_sub_object_add(obj, pb); priv->spinner = pb; + elm_object_style_set(priv->spinner, "wheel"); + elm_object_part_content_set(obj, "elm.swallow.spinner", priv->spinner); // XXX: will fail for dynamic finger size changing priv->thumbnail_size.w = elm_config_finger_size_get() * 2 - GENGRID_PADDING; @@ -1537,17 +1536,12 @@ _elm_fileselector_evas_object_smart_add(Eo *obj, Elm_Fileselector_Data *priv) priv->sort_type = ELM_FILESELECTOR_SORT_BY_FILENAME_ASC; priv->sort_method = strcoll; - // files_view - priv->files_view = _files_list_add(obj); - // path entry en = elm_entry_add(obj); elm_entry_scrollable_set(en, EINA_TRUE); elm_widget_mirrored_automatic_set(en, EINA_FALSE); elm_entry_single_line_set(en, EINA_TRUE); elm_entry_line_wrap_set(en, ELM_WRAP_CHAR); - evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL); eo_do(en, eo_event_callback_add (ELM_ENTRY_EVENT_ANCHOR_CLICKED, _anchor_clicked, obj)); @@ -1558,8 +1552,9 @@ _elm_fileselector_evas_object_smart_add(Eo *obj, Elm_Fileselector_Data *priv) eo_do(en, eo_event_callback_add (ELM_ENTRY_EVENT_ACTIVATED, _on_text_activated, obj)); - elm_widget_sub_object_add(obj, en); priv->path_entry = en; + elm_object_style_set(priv->path_entry, buf); + elm_object_part_content_set(obj, "elm.swallow.path", priv->path_entry); // name entry en = elm_entry_add(obj); @@ -1568,38 +1563,19 @@ _elm_fileselector_evas_object_smart_add(Eo *obj, Elm_Fileselector_Data *priv) elm_entry_editable_set(en, EINA_TRUE); elm_entry_single_line_set(en, EINA_TRUE); elm_entry_line_wrap_set(en, ELM_WRAP_CHAR); - evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_widget_sub_object_add(obj, en); priv->name_entry = en; + elm_object_style_set(priv->name_entry, buf); + elm_object_part_content_set(obj, "elm.swallow.filename", priv->name_entry); - //search entry - ic = elm_icon_add(obj); - elm_icon_standard_set(ic, "search"); - evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - en = elm_entry_add(obj); - elm_entry_scrollable_set(en, EINA_TRUE); - elm_widget_mirrored_automatic_set(en, EINA_FALSE); - elm_entry_editable_set(en, EINA_TRUE); - elm_entry_single_line_set(en, EINA_TRUE); - elm_entry_line_wrap_set(en, ELM_WRAP_CHAR); - elm_object_domain_translatable_part_text_set(en, "guide", - PACKAGE, N_("Search")); - elm_object_part_content_set(en, "icon", ic); - elm_entry_icon_visible_set(en, EINA_TRUE); - evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL); - eo_do(en, eo_event_callback_add - (ELM_ENTRY_EVENT_CHANGED, _preedit_cb, obj)); - evas_object_data_set(obj, "search", en); - - elm_widget_sub_object_add(obj, en); - priv->search_entry = en; - + // ok cancel button elm_fileselector_buttons_ok_cancel_set(obj, EINA_TRUE); elm_fileselector_is_save_set(obj, EINA_FALSE); + // files_view + priv->files_view = _files_list_add(obj); + elm_object_part_content_set(obj, "elm.swallow.files", priv->files_view); + #define HANDLER_ADD(e, fn) \ priv->handlers = eina_list_append(priv->handlers, \ ecore_event_handler_add(e, fn, obj)); @@ -1611,7 +1587,7 @@ _elm_fileselector_evas_object_smart_add(Eo *obj, Elm_Fileselector_Data *priv) HANDLER_ADD(EIO_MONITOR_DIRECTORY_DELETED, _resource_deleted); #undef HANDLER_ADD - eo_do(obj, elm_obj_widget_theme_apply()); + eo_do(obj, elm_obj_layout_sizing_eval()); } EOLIAN static void @@ -1748,8 +1724,14 @@ EOLIAN static void _elm_fileselector_buttons_ok_cancel_set(Eo *obj, Elm_Fileselector_Data *sd, Eina_Bool visible) { Evas_Object *bt; + Eina_Bool bt_exists = EINA_FALSE; + + visible = !!visible; + bt_exists = !!sd->ok_button; - if (visible && (!sd->ok_button)) + if (!(visible ^ bt_exists)) return; + + if (visible) { // cancel btn bt = elm_button_add(obj); @@ -1760,6 +1742,7 @@ _elm_fileselector_buttons_ok_cancel_set(Eo *obj, Elm_Fileselector_Data *sd, Eina (EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _canc, obj)); sd->cancel_button = bt; + elm_object_part_content_set(obj, "elm.swallow.cancel", sd->cancel_button); // ok btn bt = elm_button_add(obj); @@ -1770,10 +1753,9 @@ _elm_fileselector_buttons_ok_cancel_set(Eo *obj, Elm_Fileselector_Data *sd, Eina (EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _ok, obj)); sd->ok_button = bt; - - eo_do(obj, elm_obj_widget_theme_apply()); + elm_object_part_content_set(obj, "elm.swallow.ok", sd->ok_button); } - else if (!visible) + else { ELM_SAFE_FREE(sd->cancel_button, evas_object_del); ELM_SAFE_FREE(sd->ok_button, evas_object_del); @@ -2128,7 +2110,7 @@ EOLIAN static Eina_Bool _elm_fileselector_elm_interface_fileselector_mime_types_filter_append(Eo *obj, Elm_Fileselector_Data *sd, const char *mime_types, const char *filter_name) { Elm_Fileselector_Filter *ff; - Eina_Bool need_theme = EINA_FALSE; + char buf[1024]; if (!mime_types) return EINA_FALSE; @@ -2144,7 +2126,9 @@ _elm_fileselector_elm_interface_fileselector_mime_types_filter_append(Eo *obj, E sd->current_filter = ff; sd->filter_hoversel = elm_hoversel_add(obj); elm_object_text_set(sd->filter_hoversel, ff->filter_name); - need_theme = EINA_TRUE; + snprintf(buf, sizeof(buf), "fileselector/actions/%s", elm_widget_style_get(obj)); + elm_widget_style_set(sd->filter_hoversel, buf); + elm_object_part_content_set(obj, "elm.swallow.filters", sd->filter_hoversel); } elm_hoversel_item_add(sd->filter_hoversel, ff->filter_name, NULL, ELM_ICON_NONE, _current_filter_changed, ff); @@ -2156,9 +2140,6 @@ _elm_fileselector_elm_interface_fileselector_mime_types_filter_append(Eo *obj, E _schedule_populate(obj, sd, sd->path, NULL); } - if (need_theme) - eo_do(obj, elm_obj_widget_theme_apply()); - return EINA_TRUE; } @@ -2176,7 +2157,7 @@ _elm_fileselector_elm_interface_fileselector_custom_filter_append(Eo *obj, Elm_F { Elm_Fileselector_Filter *ff; Elm_Fileselector_Custom_Filter *custom_filter; - Eina_Bool need_theme = EINA_FALSE; + char buf[1024]; if (!func) return EINA_FALSE; @@ -2200,7 +2181,9 @@ _elm_fileselector_elm_interface_fileselector_custom_filter_append(Eo *obj, Elm_F sd->current_filter = ff; sd->filter_hoversel = elm_hoversel_add(obj); elm_object_text_set(sd->filter_hoversel, ff->filter_name); - need_theme = EINA_TRUE; + snprintf(buf, sizeof(buf), "fileselector/actions/%s", elm_widget_style_get(obj)); + elm_widget_style_set(sd->filter_hoversel, buf); + elm_object_part_content_set(obj, "elm.swallow.filters", sd->filter_hoversel); } elm_hoversel_item_add(sd->filter_hoversel, ff->filter_name, NULL, ELM_ICON_NONE, _current_filter_changed, ff); @@ -2212,9 +2195,6 @@ _elm_fileselector_elm_interface_fileselector_custom_filter_append(Eo *obj, Elm_F _schedule_populate(obj, sd, sd->path, NULL); } - if (need_theme) - eo_do(obj, elm_obj_widget_theme_apply()); - return EINA_TRUE; } @@ -2421,8 +2401,9 @@ _elm_fileselector_elm_widget_focus_next(Eo *obj EINA_UNUSED, Elm_Fileselector_Da if (sd->files_view) items = eina_list_append(items, sd->files_view); if (sd->path_entry) items = eina_list_append(items, sd->path_entry); if (sd->name_entry) items = eina_list_append(items, sd->name_entry); + if (sd->filter_hoversel) items = eina_list_append(items, sd->filter_hoversel); if (sd->cancel_button) items = eina_list_append(items, sd->cancel_button); - if (sd->ok_button) items = eina_list_append(items, sd->ok_button); + if (sd->ok_button) items = eina_list_append(items, sd->ok_button); if (_elm_config->access_mode) return elm_widget_focus_list_next_get(obj, items, eina_list_data_get, dir, next, next_item); @@ -2451,6 +2432,7 @@ _elm_fileselector_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elm_Fileselect if (sd->files_view) items = eina_list_append(items, sd->files_view); if (sd->path_entry) items = eina_list_append(items, sd->path_entry); if (sd->name_entry) items = eina_list_append(items, sd->name_entry); + if (sd->filter_hoversel) items = eina_list_append(items, sd->filter_hoversel); if (sd->cancel_button) items = eina_list_append(items, sd->cancel_button); if (sd->ok_button) items = eina_list_append(items, sd->ok_button); diff --git a/src/lib/elm_fileselector.eo b/src/lib/elm_fileselector.eo index 70a50a0ab..0ea6ba7b5 100644 --- a/src/lib/elm_fileselector.eo +++ b/src/lib/elm_fileselector.eo @@ -40,7 +40,6 @@ class Elm.Fileselector (Elm.Layout, Elm.Interface_Fileselector, Elm.Widget.event; Elm.Widget.theme_apply; Elm.Widget.focus_next_manager_is; - Elm.Layout.sizing_eval; Elm.Layout.text.set; Elm.Interface_Fileselector.selected_paths.get; Elm.Interface_Fileselector.custom_filter_append; |