From 173af8243adabb85c4e3a9b70abc986dbcecadb3 Mon Sep 17 00:00:00 2001 From: Larry Jr Date: Wed, 19 Jul 2017 18:15:00 -0300 Subject: focus changed to use Focus.Manager --- src/examples/elementary/efl_ui_list_example_1.c | 49 ++------ src/lib/elementary/efl_ui_list.c | 150 +++++++++++++----------- src/lib/elementary/efl_ui_list.eo | 9 +- src/lib/elementary/efl_ui_list_private.h | 4 +- 4 files changed, 102 insertions(+), 110 deletions(-) diff --git a/src/examples/elementary/efl_ui_list_example_1.c b/src/examples/elementary/efl_ui_list_example_1.c index cdbebee2ad..48cd8c239e 100644 --- a/src/examples/elementary/efl_ui_list_example_1.c +++ b/src/examples/elementary/efl_ui_list_example_1.c @@ -21,28 +21,10 @@ const char *styles[] = { char edj_path[PATH_MAX]; -struct _Private_Data -{ - Eo *model; - Evas_Object *li; -}; -typedef struct _Private_Data Private_Data; - -static void -_cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Private_Data *pd = data; - efl_unref(pd->model); - efl_unref(pd->li); -} - static void _realized_cb(void *data, const Efl_Event *event) { Efl_Ui_List_Item_Event *ie = event->info; - Private_Data *pd = data; - - //efl_ui_view_model_set(ie->layout, ie->child); elm_layout_theme_set(ie->layout, "list", "item", "default"); evas_object_size_hint_weight_set(ie->layout, EVAS_HINT_EXPAND, 0); @@ -53,15 +35,16 @@ _realized_cb(void *data, const Efl_Event *event) efl_ui_model_connect(ie->layout, "signal/elm,state,%v", "odd_style"); } +/* static void _unrealized_cb(void *data EINA_UNUSED, const Efl_Event *event) { Efl_Ui_List_Item_Event *ie = event->info; - //efl_ui_view_model_set(ie->layout, NULL); - //efl_del(ie->layout); + efl_ui_view_model_set(ie->layout, NULL); + efl_del(ie->layout); } - +*/ static Efl_Model* _make_model() { @@ -93,34 +76,28 @@ _make_model() EAPI_MAIN int elm_main(int argc, char **argv) { - Private_Data *priv; - Evas_Object *win; - - priv = alloca(sizeof(Private_Data)); - memset(priv, 0, sizeof(Private_Data)); + Evas_Object *win, *li; + Eo *model; win = elm_win_util_standard_add("viewlist", "Viewlist"); elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); elm_win_autodel_set(win, EINA_TRUE); - priv->model = _make_model(); - priv->li = efl_add(EFL_UI_LIST_CLASS, win, efl_ui_view_model_set(efl_added, priv->model)); - efl_event_callback_add(priv->li, EFL_UI_LIST_EVENT_ITEM_REALIZED, _realized_cb, priv); - efl_event_callback_add(priv->li, EFL_UI_LIST_EVENT_ITEM_UNREALIZED, _unrealized_cb, priv); + model = _make_model(); + li = efl_add(EFL_UI_LIST_CLASS, win, efl_ui_view_model_set(efl_added, model)); + efl_event_callback_add(li, EFL_UI_LIST_EVENT_ITEM_REALIZED, _realized_cb, NULL); +// efl_event_callback_add(li, EFL_UI_LIST_EVENT_ITEM_UNREALIZED, _unrealized_cb, NULL); - elm_win_resize_object_add(win, priv->li); - evas_object_size_hint_weight_set(priv->li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, li); + evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, priv); //showall - evas_object_show(priv->li); + evas_object_show(li); evas_object_resize(win, 320, 320); evas_object_show(win); elm_run(); - elm_shutdown(); - ecore_shutdown(); return 0; } diff --git a/src/lib/elementary/efl_ui_list.c b/src/lib/elementary/efl_ui_list.c index 00a9bed2e6..653996dda0 100644 --- a/src/lib/elementary/efl_ui_list.c +++ b/src/lib/elementary/efl_ui_list.c @@ -19,7 +19,7 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { }; void _efl_ui_list_custom_layout(Efl_Ui_List *); -void _efl_ui_list_item_select_set(Efl_Ui_List_Item *, Eina_Bool); +void _efl_ui_list_item_select_set(Efl_Ui_List_Data *, Eo*, Eina_Bool); Eina_Bool _efl_ui_list_item_select_clear(Eo *); static Efl_Ui_List_Item *_child_new(Efl_Ui_List_Data *, Efl_Model *); static void _child_remove(Efl_Ui_List_Data *, Efl_Ui_List_Item *); @@ -86,8 +86,10 @@ _efl_ui_list_pan_elm_pan_pos_set(Eo *obj EINA_UNUSED, Efl_Ui_List_Pan_Data *psd, EOLIAN static void _efl_ui_list_pan_elm_pan_pos_get(Eo *obj EINA_UNUSED, Efl_Ui_List_Pan_Data *psd, Evas_Coord *x, Evas_Coord *y) { - if (x) *x = psd->wpd->pan.x; - if (y) *y = psd->wpd->pan.y; + Efl_Ui_List_Data *pd = psd->wpd; + + if (x) *x = pd->pan.x; + if (y) *y = pd->pan.y; } EOLIAN static void @@ -194,24 +196,14 @@ _child_removed_cb(void *data, const Efl_Event *event) } static void -_on_item_focused(void *data, const Efl_Event *event EINA_UNUSED) +_focused_element(void *data EINA_UNUSED, const Efl_Event *event) { - Efl_Ui_List_Item *item = data; - EFL_UI_LIST_DATA_GET_OR_RETURN(item->obj, pd); - - pd->focused = item; - - if (!_elm_config->item_select_on_focus_disable && !item->selected) - _efl_ui_list_item_select_set(item, EINA_TRUE); -} - -static void -_on_item_unfocused(void *data, const Efl_Event *event EINA_UNUSED) -{ - Efl_Ui_List_Item *item = data; - EFL_UI_LIST_DATA_GET_OR_RETURN(item->obj, pd); + Efl_Ui_List_Data *pd = data; + Eo *focused = event->info; + EINA_SAFETY_ON_NULL_RETURN(pd); - pd->focused = NULL; + if (!_elm_config->item_select_on_focus_disable) + _efl_ui_list_item_select_set(pd, focused, EINA_TRUE); } static Eina_Bool @@ -222,7 +214,7 @@ _long_press_cb(void *data) item->long_timer = NULL; item->longpressed = EINA_TRUE; /* if (item->layout) */ - /* efl_event_callback_legacy_call(item->layout, EFL_UI_EVENT_LONGPRESSED, item); */ + /* efl_event_callback_legacy_call(item->layout, EFL_UI_EVENT_LONGPRESSED, NULL); */ return ECORE_CALLBACK_CANCEL; } @@ -272,7 +264,7 @@ _on_item_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *o EINA_UNUSED if (pd->select_mode != ELM_OBJECT_SELECT_MODE_ALWAYS && item->selected) return; - _efl_ui_list_item_select_set(item, EINA_TRUE); + _efl_ui_list_item_select_set(pd, item->layout, EINA_TRUE); } static void @@ -477,11 +469,8 @@ _layout_realize(Efl_Ui_List_Data *pd, Efl_Ui_List_Item *item) evas_object_show(item->layout); - /* efl_event_callback_add(item->layout, ELM_WIDGET_EVENT_FOCUSED, _on_item_focused, item); */ - /* efl_event_callback_add(item->layout, ELM_WIDGET_EVENT_UNFOCUSED, _on_item_unfocused, item); */ /* evas_object_event_callback_add(item->layout, EVAS_CALLBACK_MOUSE_DOWN, _on_item_mouse_down, item); */ /* evas_object_event_callback_add(item->layout, EVAS_CALLBACK_MOUSE_UP, _on_item_mouse_up, item); */ - /* evas_object_event_callback_add(item->layout, EVAS_CALLBACK_MOUSE_UP, _on_item_mouse_up, item); */ if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE) efl_ui_model_connect(item->layout, "signal/elm,state,%v", "selected"); @@ -502,20 +491,18 @@ _layout_unrealize(Efl_Ui_List_Data *pd, Efl_Ui_List_Item *item) item->future = NULL; } - if (pd->focused == item) - pd->focused = NULL; +// elm_obj_widget_focus_set(item->layout, EINA_FALSE); if (item->selected) { item->selected = EINA_FALSE; - /* pd->selected = eina_list_remove(pd->selected, item); */ +/* pd->selected = eina_list_remove(pd->selected, item); */ } /* efl_event_callback_del(item->model, EFL_MODEL_EVENT_PROPERTIES_CHANGED, _efl_model_properties_changed_cb, item); */ - /* efl_event_callback_del(item->layout, ELM_WIDGET_EVENT_FOCUSED, _on_item_focused, item); */ - /* efl_event_callback_del(item->layout, ELM_WIDGET_EVENT_UNFOCUSED, _on_item_unfocused, item); */ /* evas_object_event_callback_del_full(item->layout, EVAS_CALLBACK_MOUSE_DOWN, _on_item_mouse_down, item); */ /* evas_object_event_callback_del_full(item->layout, EVAS_CALLBACK_MOUSE_UP, _on_item_mouse_up, item); */ + efl_ui_model_connect(item->layout, "signal/elm,state,%v", NULL); /* TODO:calculate new min */ @@ -530,6 +517,7 @@ _layout_unrealize(Efl_Ui_List_Data *pd, Efl_Ui_List_Item *item) efl_unref(item->model); evas_object_hide(item->layout); + evas_object_move(item->layout, -9999, -9999); } static void @@ -872,9 +860,10 @@ static void _show_region_hook(void *data EINA_UNUSED, Evas_Object *obj) { Evas_Coord x, y, w, h; - + EFL_UI_LIST_DATA_GET_OR_RETURN(obj, pd); elm_widget_show_region_get(obj, &x, &y, &w, &h); - elm_interface_scrollable_content_region_set(obj, x, y, w, h); + x += pd->pan.x; + y += pd->pan.y; elm_interface_scrollable_content_region_show(obj, x, y, w, h); } @@ -912,6 +901,17 @@ _efl_ui_list_select_mode_set(Eo *obj EINA_UNUSED, Efl_Ui_List_Data *pd, Elm_Obje pd->select_mode = mode; } +EOLIAN static Eina_Bool +_efl_ui_list_elm_widget_on_focus(Eo *obj, Efl_Ui_List_Data *pd EINA_UNUSED, Elm_Object_Item *item) +{ + //TODO: with no focused focus first visible element + + if (!efl_ui_focus_manager_focused(pd->manager)) + efl_ui_focus_manager_focus(pd->manager, obj); + + return elm_obj_widget_on_focus(efl_super(obj, MY_CLASS), item); +} + EOLIAN static Elm_Object_Select_Mode _efl_ui_list_select_mode_get(Eo *obj EINA_UNUSED, Efl_Ui_List_Data *pd) { @@ -970,6 +970,12 @@ _efl_ui_list_efl_gfx_position_set(Eo *obj, Efl_Ui_List_Data *pd, Evas_Coord x, E _efl_ui_list_custom_layout(obj); } +EOLIAN static void +_efl_ui_list_elm_interface_scrollable_region_bring_in(Eo *obj, Efl_Ui_List_Data *pd, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) +{ + elm_interface_scrollable_region_bring_in(efl_super(obj, MY_CLASS), x + pd->pan.x, y + pd->pan.y, w, h); +} + EOLIAN static void _efl_ui_list_efl_gfx_size_set(Eo *obj, Efl_Ui_List_Data *pd, Evas_Coord w, Evas_Coord h) { @@ -1045,6 +1051,8 @@ _efl_ui_list_efl_canvas_group_group_add(Eo *obj, Efl_Ui_List_Data *pd EINA_UNUSE efl_canvas_group_add(efl_super(obj, MY_CLASS)); elm_widget_sub_object_parent_add(obj); + elm_widget_can_focus_set(obj, EINA_TRUE); + pd->hit_rect = evas_object_rectangle_add(evas_object_evas_get(obj)); evas_object_data_set(pd->hit_rect, "_elm_leaveme", obj); evas_object_smart_member_add(pd->hit_rect, obj); @@ -1082,7 +1090,6 @@ _efl_ui_list_efl_canvas_group_group_add(Eo *obj, Efl_Ui_List_Data *pd EINA_UNUSE edje_object_size_min_calc(wd->resize_obj, &minw, &minh); evas_object_size_hint_min_set(obj, minw, minh); - elm_interface_scrollable_mirrored_set(obj, elm_widget_mirrored_get(obj)); elm_layout_sizing_eval(obj); } @@ -1097,19 +1104,22 @@ _efl_ui_list_efl_canvas_group_group_del(Eo *obj, Efl_Ui_List_Data *pd) /* efl_canvas_group_del(efl_super(obj, MY_CLASS)); */ } -EOLIAN static Eo * -_efl_ui_list_efl_object_constructor(Eo *obj, Efl_Ui_List_Data *pd) +EOLIAN static Efl_Ui_Focus_Manager* +_efl_ui_list_elm_widget_focus_manager_factory(Eo *obj EINA_UNUSED, Efl_Ui_List_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root) { - { - Efl_Ui_Focus_Manager *manager; - manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, NULL, - efl_ui_focus_manager_root_set(efl_added, obj) - ); + if (!pd->manager) + pd->manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, obj, + efl_ui_focus_manager_root_set(efl_added, root) + ); - efl_composite_attach(obj, manager); - _efl_ui_focus_manager_redirect_events_add(manager, obj); - } + return pd->manager; +} + +EOLIAN static Eo * +_efl_ui_list_efl_object_constructor(Eo *obj, Efl_Ui_List_Data *pd) +{ + Efl_Ui_Focus_Manager *manager; obj = efl_constructor(efl_super(obj, MY_CLASS)); pd->obj = obj; @@ -1119,6 +1129,11 @@ _efl_ui_list_efl_object_constructor(Eo *obj, Efl_Ui_List_Data *pd) eina_inarray_setup(&pd->items.array, sizeof(Efl_Ui_List_Item), 0); + manager = elm_obj_widget_focus_manager_factory(obj, obj); + efl_composite_attach(obj, manager); + _efl_ui_focus_manager_redirect_events_add(manager, obj); + efl_event_callback_add(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _focused_element, pd); + pd->style = eina_stringshare_add(elm_widget_style_get(obj)); pd->orient = EFL_ORIENT_DOWN; @@ -1133,6 +1148,8 @@ _efl_ui_list_efl_object_destructor(Eo *obj, Efl_Ui_List_Data *pd) { efl_unref(pd->model); eina_stringshare_del(pd->style); + + efl_event_callback_del(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _focused_element, pd); efl_destructor(efl_super(obj, MY_CLASS)); } @@ -1241,7 +1258,7 @@ _efl_ui_list_elm_interface_atspi_selection_selected_child_deselect(Eo *obj EINA_ Efl_Ui_List_Item *item = eina_list_nth(pd->selected, child_index); if (item) { - _efl_ui_list_item_select_set(item, EINA_FALSE); + _efl_ui_list_item_select_set(pd, item->layout, EINA_FALSE); return EINA_TRUE; } return EINA_FALSE; @@ -1296,6 +1313,7 @@ _efl_ui_list_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, E /* _efl_ui_list_item_select_set(item, EINA_FALSE); */ /* return EINA_TRUE; */ /* } */ + return EINA_FALSE; } @@ -1326,7 +1344,6 @@ _key_action_move(Evas_Object *obj, const char *params) { if (!elm_widget_focus_next_get(obj, ELM_FOCUS_DOWN, &eoit, &oitem)) return EINA_FALSE; - printf(">> %d\n", __LINE__); } else if (!strcmp(dir, "first")) { @@ -1378,14 +1395,7 @@ _key_action_move(Evas_Object *obj, const char *params) else return EINA_FALSE; elm_interface_scrollable_content_pos_set(obj, x, y, EINA_TRUE); -/* - if (item) - eoit = item->layout; - if (!eoit) return EINA_FALSE; - - elm_object_focus_set(eoit, EINA_TRUE); -*/ return EINA_TRUE; } @@ -1394,7 +1404,9 @@ _key_action_select(Evas_Object *obj, const char *params EINA_UNUSED) { EFL_UI_LIST_DATA_GET_OR_RETURN_VAL(obj, pd, EINA_FALSE); - _efl_ui_list_item_select_set(pd->focused, EINA_TRUE); + Eo *focused = efl_ui_focus_manager_focused(pd->manager); + if (focused) + _efl_ui_list_item_select_set(pd, focused, EINA_TRUE); return EINA_TRUE; } @@ -1413,12 +1425,12 @@ _efl_ui_list_elm_widget_widget_event(Eo *obj, Efl_Ui_List_Data *pd, Evas_Object if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE; - /* if (!pd->items.array) return EINA_FALSE; */ + if (!eina_inarray_count(&pd->items.array)) return EINA_FALSE; - /* if (!_elm_config_key_binding_call(obj, MY_CLASS_NAME, ev, key_actions)) */ - /* return EINA_FALSE; */ + if (!_elm_config_key_binding_call(obj, MY_CLASS_NAME, ev, key_actions)) + return EINA_FALSE; - /* ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; */ + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; return EINA_TRUE; } @@ -1436,30 +1448,28 @@ _efl_ui_list_item_select_clear(Eo *obj) } void -_efl_ui_list_item_select_set(Efl_Ui_List_Item *item, Eina_Bool selected) +_efl_ui_list_item_select_set(Efl_Ui_List_Data *pd, Eo* layout, Eina_Bool selected) { Eina_Stringshare *sprop, *svalue; + Eo *model; - if (!item) return; - - EFL_UI_LIST_DATA_GET_OR_RETURN(item->obj, pd); - - if ((pd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + selected = !!selected; + if (!layout || (pd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || (pd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)) return; - selected = !!selected; - if (!item->model || item->selected == selected) return; + model = efl_ui_view_model_get(layout); + if (model) return; sprop = eina_stringshare_add(SELECTED_PROP); svalue = (selected ? eina_stringshare_add("selected") : eina_stringshare_add("unselected")); - if (_efl_model_properties_has(item->model, sprop)) + if (_efl_model_properties_has(model, sprop)) { Eina_Value v; eina_value_setup(&v, EINA_VALUE_TYPE_STRINGSHARE); eina_value_set(&v, svalue); - efl_model_property_set(item->model, sprop, &v); + efl_model_property_set(model, sprop, &v); eina_value_flush(&v); } eina_stringshare_del(sprop); @@ -1467,9 +1477,9 @@ _efl_ui_list_item_select_set(Efl_Ui_List_Item *item, Eina_Bool selected) /* //TODO I need call this event or catch only by model connect event? */ /* if (selected) */ - /* efl_event_callback_legacy_call(item->layout, EFL_UI_EVENT_SELECTED, item); */ + /* efl_event_callback_legacy_call(item->layout, EFL_UI_EVENT_SELECTED, NULL); */ /* else */ - /* efl_event_callback_legacy_call(item->layout, EFL_UI_EVENT_UNSELECTED, item); */ + /* efl_event_callback_legacy_call(item->layout, EFL_UI_EVENT_UNSELECTED, NULL); */ } static void @@ -1631,6 +1641,7 @@ _efl_ui_list_custom_layout(Efl_Ui_List *ui_list) Eina_Bool box_fill[2] = { EINA_FALSE, EINA_FALSE }; unsigned int i; int id, count = 0; + Eina_List *order = NULL; ELM_WIDGET_DATA_GET_OR_RETURN(ui_list, wd); @@ -1841,6 +1852,7 @@ _efl_ui_list_custom_layout(Efl_Ui_List *ui_list) litem->x = x; litem->y = y; + order = eina_list_append(order, litem->layout); // fprintf(stderr, "x: %.2f y: %.2f w: %.2f h: %.2f old x: %.2f old y: %.2f old w: %.2f old h: %.2f\n" // , (x + 0 - pd->pan.x), (y + 0 - pd->pan.y), (float)w, (float)h @@ -1848,6 +1860,8 @@ _efl_ui_list_custom_layout(Efl_Ui_List *ui_list) // printf("obj=%d currpos=%.2f moved to X=%.2f, Y=%.2f average_item_size %d\n", litem->index, cur_pos, x, y // , eina_inarray_count(&pd->items.array) ? (/*horz*/ EINA_FALSE ? pd->realized.w : pd->realized.h) / eina_inarray_count(&pd->items.array) : AVERAGE_SIZE_INIT); } + + efl_ui_focus_manager_update_order(pd->manager, pd->obj, order); } /* Internal EO APIs and hidden overrides */ diff --git a/src/lib/elementary/efl_ui_list.eo b/src/lib/elementary/efl_ui_list.eo index d03a7c34e6..9f16a256e3 100644 --- a/src/lib/elementary/efl_ui_list.eo +++ b/src/lib/elementary/efl_ui_list.eo @@ -7,7 +7,7 @@ struct Efl.Ui.List.Item_Event class Efl.Ui.List (Elm.Layout, Efl.Ui.View, Elm.Interface_Scrollable, Elm.Interface.Atspi_Widget_Action, Elm.Interface.Atspi.Selection, - Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Focus.Manager) + Efl.Ui.Clickable, Efl.Ui.Selectable) { methods { @property homogeneous { @@ -50,10 +50,8 @@ class Efl.Ui.List (Elm.Layout, Efl.Ui.View, Elm.Interface_Scrollable, implements { Efl.Object.constructor; Efl.Object.destructor; - Efl.Gfx.position { set; } Efl.Gfx.size { set; } - // Smart obj Efl.Canvas.Group.group_member_add; Efl.Canvas.Group.group_calculate; @@ -62,16 +60,19 @@ class Efl.Ui.List (Elm.Layout, Efl.Ui.View, Elm.Interface_Scrollable, Elm.Widget.theme_apply; // Elm.Widget.focus_next_manager_is; // Elm.Widget.focus_direction_manager_is; +// Elm.Widget.focus_register; // Elm.Widget.focus_next; -// Elm.Widget.focus_direction; + Elm.Widget.on_focus; // Elm.Widget.activate; // Elm.Widget.focused_item { get; } // Elm.Widget.focused_object { get; } + Elm.Widget.focus_manager_factory; Elm.Widget.widget_event; Elm.Layout.sizing_eval; Efl.Ui.View.model { get; set; } + Elm.Interface_Scrollable.region_bring_in; Elm.Interface.Atspi_Accessible.children { get; } Elm.Interface.Atspi_Widget_Action.elm_actions { get; } Elm.Interface.Atspi.Selection.selected_children_count { get; } diff --git a/src/lib/elementary/efl_ui_list_private.h b/src/lib/elementary/efl_ui_list_private.h index 94b7a498be..4a29eff134 100644 --- a/src/lib/elementary/efl_ui_list_private.h +++ b/src/lib/elementary/efl_ui_list_private.h @@ -25,8 +25,8 @@ struct _Efl_Ui_List_Item // double h, v, wx, wy; double wx, wy; Ecore_Timer *long_timer; - Eina_Bool down: 1; Eina_Bool selected: 1; + Eina_Bool down: 1; Eina_Bool longpressed : 1; }; @@ -72,8 +72,8 @@ struct _Efl_Ui_List_Data Elm_Object_Select_Mode select_mode; Elm_List_Mode mode; + Efl_Ui_Focus_Manager *manager; Evas_Coord minw, minh; - Efl_Ui_List_Item *focused; int /*average_item_size, avsom, */item_count; Efl_Future *future; struct { -- cgit v1.2.1