diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index bd3490387c..b6f8d17129 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -158,6 +158,7 @@ elm_public_eolian_files += \ lib/elementary/elm_view_form.eo \ lib/elementary/elm_web.eo \ lib/elementary/elm_widget_item.eo \ + lib/elementary/elm_widget_item_container.eo \ $(NULL) # Private classes (not exposed or shipped) diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 47f854ab7a..45967bb588 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -3539,12 +3539,6 @@ _efl_ui_widget_focus_highlight_geometry_get(const Eo *obj, Elm_Widget_Smart_Data return r; } -EOLIAN static Elm_Object_Item* -_efl_ui_widget_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED) -{ - return NULL; -} - EOLIAN static void _efl_ui_widget_interest_region_mode_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd, Elm_Focus_Region_Show_Mode mode) { @@ -6156,6 +6150,7 @@ ELM_PART_TEXT_DEFAULT_GET(efl_ui_widget, NULL) EFL_OBJECT_OP_FUNC(efl_dbg_info_get, _efl_ui_widget_efl_object_dbg_info_get) #include "elm_widget_item.eo.c" +#include "elm_widget_item_container.eo.c" #include "efl_ui_widget.eo.c" /* Others */ diff --git a/src/lib/elementary/efl_ui_widget.eo b/src/lib/elementary/efl_ui_widget.eo index d85e2fd100..20e7e3f4c1 100644 --- a/src/lib/elementary/efl_ui_widget.eo +++ b/src/lib/elementary/efl_ui_widget.eo @@ -583,15 +583,6 @@ abstract @beta Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Obje $false otherwise]] } } - - /* FIXME: No more items in EO API */ - @property focused_item @beta { - get { - [[Get the focused widget item.]] - return: Elm.Widget.Item; [[Focused item]] - } - } - /* Focus Manager API */ focus_state_apply @protected { [[Register focus with the given configuration. diff --git a/src/lib/elementary/elc_ctxpopup.c b/src/lib/elementary/elc_ctxpopup.c index dabc798777..a7b743a4e1 100644 --- a/src/lib/elementary/elc_ctxpopup.c +++ b/src/lib/elementary/elc_ctxpopup.c @@ -1399,7 +1399,7 @@ _elm_ctxpopup_selected_item_get(const Eo *obj EINA_UNUSED, Elm_Ctxpopup_Data *sd } EOLIAN static Elm_Object_Item* -_elm_ctxpopup_efl_ui_widget_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Ctxpopup_Data *sd) +_elm_ctxpopup_elm_widget_item_container_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Ctxpopup_Data *sd) { if (!sd->list) return NULL; diff --git a/src/lib/elementary/elm_ctxpopup.eo b/src/lib/elementary/elm_ctxpopup.eo index 7d94b87fe4..ea58d9fbe1 100644 --- a/src/lib/elementary/elm_ctxpopup.eo +++ b/src/lib/elementary/elm_ctxpopup.eo @@ -8,7 +8,7 @@ enum Elm.Ctxpopup.Direction unknown [[Ctxpopup does not determine it's direction yet.]] } -class Elm.Ctxpopup extends Efl.Ui.Layout implements Efl.Ui.Focus.Layer, Efl.Access.Widget.Action, Efl.Ui.Legacy +class Elm.Ctxpopup extends Efl.Ui.Layout implements Efl.Ui.Focus.Layer, Efl.Access.Widget.Action, Efl.Ui.Legacy, Elm.Widget_Item_Container { [[Elementary context popup class]] legacy_prefix: elm_ctxpopup; @@ -237,7 +237,7 @@ class Elm.Ctxpopup extends Efl.Ui.Layout implements Efl.Ui.Focus.Layer, Efl.Acce Efl.Ui.L10n.translation_update; Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.widget_event; - Efl.Ui.Widget.focused_item { get; } + Elm.Widget_Item_Container.focused_item { get; } Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Object.state_set { get; } Efl.Part.part_get; diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index febe0b86c7..d4e0cf3449 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -5606,7 +5606,7 @@ _elm_gengrid_efl_ui_widget_focus_highlight_geometry_get(const Eo *obj, Elm_Gengr } EOLIAN static Elm_Object_Item * -_elm_gengrid_efl_ui_widget_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Gengrid_Data *sd) +_elm_gengrid_elm_widget_item_container_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Gengrid_Data *sd) { return sd->focused_item; } diff --git a/src/lib/elementary/elm_gengrid.eo b/src/lib/elementary/elm_gengrid.eo index e397ad4987..83d9916c7d 100644 --- a/src/lib/elementary/elm_gengrid.eo +++ b/src/lib/elementary/elm_gengrid.eo @@ -11,7 +11,7 @@ enum Elm.Gengrid.Reorder_Type class Elm.Gengrid extends Efl.Ui.Layout implements Efl.Ui.Focus.Composition, Elm.Interface_Scrollable, Efl.Ui.Clickable, Efl.Access.Widget.Action, - Efl.Access.Selection, Efl.Ui.Legacy + Efl.Access.Selection, Efl.Ui.Legacy, Elm.Widget_Item_Container { [[Elementary gengrid class]] legacy_prefix: elm_gengrid; @@ -510,7 +510,7 @@ class Elm.Gengrid extends Efl.Ui.Layout implements Efl.Ui.Focus.Composition, Elm Efl.Ui.Widget.interest_region { get; } Efl.Ui.Widget.widget_event; Efl.Ui.Widget.focus_highlight_geometry { get; } - Efl.Ui.Widget.focused_item { get; } + Elm.Widget_Item_Container.focused_item { get; } Elm.Interface_Scrollable.item_loop_enabled { get; set; } Elm.Interface_Scrollable.bounce_allow { set; } Elm.Interface_Scrollable.policy { get; set; } diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 016352490d..004e1e2be7 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -8721,7 +8721,7 @@ _elm_genlist_search_by_text_item_get(Eo *obj EINA_UNUSED, } EOLIAN static Elm_Object_Item* -_elm_genlist_efl_ui_widget_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd) +_elm_genlist_elm_widget_item_container_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd) { return sd->focused_item; } diff --git a/src/lib/elementary/elm_genlist.eo b/src/lib/elementary/elm_genlist.eo index 2ef3817f1b..40a599fc51 100644 --- a/src/lib/elementary/elm_genlist.eo +++ b/src/lib/elementary/elm_genlist.eo @@ -2,7 +2,7 @@ import elm_general; class Elm.Genlist extends Efl.Ui.Layout implements Elm.Interface_Scrollable, Efl.Ui.Clickable, Efl.Access.Widget.Action, Efl.Access.Selection, - Efl.Ui.Selectable, Efl.Ui.Legacy + Efl.Ui.Selectable, Efl.Ui.Legacy, Elm.Widget_Item_Container { [[Elementary genlist class]] legacy_prefix: elm_genlist; @@ -538,7 +538,7 @@ class Elm.Genlist extends Efl.Ui.Layout implements Elm.Interface_Scrollable, Efl Efl.Ui.Focus.Object.on_focus_update; Efl.Ui.Widget.widget_sub_object_del; Efl.Ui.Widget.widget_event; - Efl.Ui.Widget.focused_item { get; } + Elm.Widget_Item_Container.focused_item { get; } Elm.Interface_Scrollable.item_loop_enabled { get; set; } Elm.Interface_Scrollable.bounce_allow { get; set; } Elm.Interface_Scrollable.policy { get; set; } diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c index 7310201c27..604c45be9a 100644 --- a/src/lib/elementary/elm_list.c +++ b/src/lib/elementary/elm_list.c @@ -296,7 +296,7 @@ _elm_list_item_content_focus_set(Elm_List_Item_Data *it, Elm_Focus_Direction dir Evas_Object *focus_chain[2]; Evas_Object *focused = NULL; int idx; - + if (it->icon && elm_object_widget_check(it->icon) && elm_object_focus_allow_get(it->icon)) focus_chain[focus_objs++] = it->icon; if (it->end && elm_object_widget_check(it->end) && elm_object_focus_allow_get(it->end)) @@ -3052,7 +3052,7 @@ _elm_list_efl_ui_widget_focus_highlight_geometry_get(const Eo *obj, Elm_List_Dat } EOLIAN static Elm_Object_Item* -_elm_list_efl_ui_widget_focused_item_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd) +_elm_list_elm_widget_item_container_focused_item_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd) { return sd->focused_item; } diff --git a/src/lib/elementary/elm_list.eo b/src/lib/elementary/elm_list.eo index e5d6a57b26..c2115ba476 100644 --- a/src/lib/elementary/elm_list.eo +++ b/src/lib/elementary/elm_list.eo @@ -2,7 +2,7 @@ import elm_general; class Elm.List extends Efl.Ui.Layout implements Elm.Interface_Scrollable, Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Access.Object, - Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Legacy + Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Legacy, Elm.Widget_Item_Container { [[Elementary list class]] legacy_prefix: elm_list; @@ -405,7 +405,7 @@ class Elm.List extends Efl.Ui.Layout implements Elm.Interface_Scrollable, Efl.Ui.L10n.translation_update; Efl.Ui.Widget.widget_sub_object_del; Efl.Ui.Widget.widget_event; - Efl.Ui.Widget.focused_item { get; } + Elm.Widget_Item_Container.focused_item { get; } Efl.Ui.Widget.focus_state_apply; Elm.Interface_Scrollable.item_loop_enabled { get; set; } Elm.Interface_Scrollable.policy { set; } diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index f2dd116cd3..6cab53b217 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -1928,7 +1928,9 @@ EAPI Elm_Object_Item * elm_object_focused_item_get(const Evas_Object *obj) { EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL); - return efl_ui_widget_focused_item_get(obj); + if (!efl_isa(obj, ELM_WIDGET_ITEM_CONTAINER_INTERFACE)) + return NULL; + return elm_widget_item_container_focused_item_get(obj); } EAPI void diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index e379a6f09a..d79ae57b1e 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -3871,7 +3871,7 @@ _elm_toolbar_item_efl_access_object_state_set_get(const Eo *eo_it, Elm_Toolbar_I } EOLIAN static Elm_Object_Item * -_elm_toolbar_efl_ui_widget_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd) +_elm_toolbar_elm_widget_item_container_focused_item_get(const Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd) { return sd->focused_item; } diff --git a/src/lib/elementary/elm_toolbar.eo b/src/lib/elementary/elm_toolbar.eo index e70dafc6e4..0324f87cd3 100644 --- a/src/lib/elementary/elm_toolbar.eo +++ b/src/lib/elementary/elm_toolbar.eo @@ -25,7 +25,7 @@ enum Elm.Toolbar_Shrink_Mode class Elm.Toolbar extends Efl.Ui.Widget implements Efl.Ui.Focus.Composition, Elm.Interface_Scrollable, Efl.Ui.Direction, Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Access.Object, - Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Legacy + Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Legacy, Elm.Widget_Item_Container { [[Elementary toolbar class]] legacy_prefix: elm_toolbar; @@ -356,7 +356,7 @@ class Elm.Toolbar extends Efl.Ui.Widget implements Efl.Ui.Focus.Composition, Elm Efl.Ui.L10n.translation_update; Efl.Ui.Widget.widget_event; Efl.Ui.Widget.focus_highlight_geometry { get; } - Efl.Ui.Widget.focused_item { get; } + Elm.Widget_Item_Container.focused_item { get; } Efl.Ui.Direction.direction { get; set; [[Only supports $vertical and $horizontal. Default is $horizontal.]] } Efl.Ui.Widget.focus_state_apply; Efl.Access.Widget.Action.elm_actions { get; } diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h index 99229851f8..cdc2653831 100644 --- a/src/lib/elementary/elm_widget.h +++ b/src/lib/elementary/elm_widget.h @@ -305,6 +305,7 @@ typedef void (*Elm_Widget_Item_Signal_Cb)(void *data, Elm_Objec typedef void (*Elm_Access_On_Highlight_Cb)(void *data); #include "efl_ui_widget.eo.h" +#include "elm_widget_item_container.eo.h" /** * @addtogroup Widget diff --git a/src/lib/elementary/elm_widget_item_container.eo b/src/lib/elementary/elm_widget_item_container.eo new file mode 100644 index 0000000000..7a0c33c148 --- /dev/null +++ b/src/lib/elementary/elm_widget_item_container.eo @@ -0,0 +1,10 @@ +interface Elm.Widget_Item_Container { + methods { + @property focused_item { + get { + [[Get the focused widget item.]] + return: Elm.Widget.Item; [[Focused item]] + } + } + } +} diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index 159d5005b0..4363984615 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -258,6 +258,7 @@ pub_eo_files = [ 'efl_ui_radio_legacy_part.eo', 'efl_ui_check_legacy_part.eo', 'efl_ui_progressbar_legacy_part.eo', + 'elm_widget_item_container.eo', 'elm_spinner.eo', 'elm_multibuttonentry.eo', 'elm_multibuttonentry_item.eo',