diff options
Diffstat (limited to 'src/lib/elementary/elm_menu.c')
-rw-r--r-- | src/lib/elementary/elm_menu.c | 189 |
1 files changed, 63 insertions, 126 deletions
diff --git a/src/lib/elementary/elm_menu.c b/src/lib/elementary/elm_menu.c index 92ef38dfca..60069c8ba3 100644 --- a/src/lib/elementary/elm_menu.c +++ b/src/lib/elementary/elm_menu.c @@ -3,10 +3,11 @@ #endif #define ELM_WIDGET_PROTECTED -#define EFL_ACCESS_PROTECTED +#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_SELECTION_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED +#define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED #include <Elementary.h> @@ -100,11 +101,11 @@ _parent_geometry_get(Elm_Menu_Data *sd, int *x, int *y, int *w, int *h) { Eina_Rect r; - r = efl_gfx_geometry_get(sd->parent); + r = efl_gfx_entity_geometry_get(sd->parent); if (efl_isa(sd->parent, EFL_UI_WIN_CLASS)) { if (sd->menu_bar && efl_canvas_object_is_frame_object_get(sd->obj)) - r.pos = efl_gfx_position_get(sd->obj); + r.pos = efl_gfx_entity_position_get(sd->obj); else r.pos = EINA_POSITION2D(0, 0); } @@ -214,12 +215,12 @@ _sizing_eval(Evas_Object *obj) if (y_p + h_p + bh > y2 + h2) y_p -= y_p + h_p + bh - (y2 + h2); if (y_p < y2) y_p = y2; - efl_gfx_geometry_set(sd->location, EINA_RECT(x_p, y_p, bw, h_p)); + efl_gfx_entity_geometry_set(sd->location, EINA_RECT(x_p, y_p, bw, h_p)); evas_object_size_hint_min_set(sd->location, bw, h_p); evas_object_size_hint_max_set(sd->location, bw, h_p); elm_hover_target_set(sd->hv, sd->location); - hover = efl_data_scope_get(sd->hv, ELM_WIDGET_CLASS); + hover = efl_data_scope_get(sd->hv, EFL_UI_WIDGET_CLASS); edje_object_part_geometry_get(hover->resize_obj, "bottom", NULL, NULL, &bw, &bh); evas_object_size_hint_min_set(obj, bw, bh); @@ -232,7 +233,7 @@ _sizing_eval(Evas_Object *obj) } EOLIAN static Efl_Ui_Theme_Apply -_elm_menu_elm_widget_theme_apply(Eo *obj, Elm_Menu_Data *sd) +_elm_menu_efl_ui_widget_theme_apply(Eo *obj, Elm_Menu_Data *sd) { Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED; @@ -295,7 +296,7 @@ _elm_menu_elm_widget_theme_apply(Eo *obj, Elm_Menu_Data *sd) elm_wdg_item_disable(eo_item); /* SEOZ edje_object_scale_set - (VIEW(item), efl_gfx_scale_get(obj) * + (VIEW(item), efl_gfx_entity_scale_get(obj) * elm_config_scale_get()); */ } @@ -330,7 +331,7 @@ _elm_menu_item_elm_widget_item_part_text_set(Eo *eo_item EINA_UNUSED, } EOLIAN static const char * -_elm_menu_item_elm_widget_item_part_text_get(Eo *eo_item EINA_UNUSED, +_elm_menu_item_elm_widget_item_part_text_get(const Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *it, const char *part) { @@ -358,7 +359,7 @@ _elm_menu_item_elm_widget_item_part_content_set(Eo *eo_item EINA_UNUSED, } EOLIAN static Evas_Object * -_elm_menu_item_elm_widget_item_part_content_get(Eo *eo_item EINA_UNUSED, +_elm_menu_item_elm_widget_item_part_content_get(const Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *it, const char *part) { @@ -498,7 +499,7 @@ _menu_item_activate_cb(void *data, if (eo_item2 != EO_OBJ(item)) elm_menu_item_selected_set(eo_item2, 0); } - efl_access_event_emit(EFL_ACCESS_MIXIN, EO_OBJ(item->parent), EFL_ACCESS_SELECTION_EVENT_SELECTION_CHANGED, NULL); + efl_access_object_event_emit(EFL_ACCESS_OBJECT_MIXIN, EO_OBJ(item->parent), EFL_ACCESS_SELECTION_EVENT_SELECTION_CHANGED, NULL); } else { @@ -513,7 +514,7 @@ _menu_item_activate_cb(void *data, elm_menu_item_selected_set(eo_item2, 0); } } - efl_access_event_emit(EFL_ACCESS_MIXIN, WIDGET(item), EFL_ACCESS_SELECTION_EVENT_SELECTION_CHANGED, NULL); + efl_access_object_event_emit(EFL_ACCESS_OBJECT_MIXIN, WIDGET(item), EFL_ACCESS_SELECTION_EVENT_SELECTION_CHANGED, NULL); if (sd->menu_bar && was_open) _menu_item_select_cb(item, NULL, NULL, NULL); } @@ -567,20 +568,20 @@ _unblock_menu(void *_sd, const Efl_Event *event EINA_UNUSED) } EOLIAN static void -_elm_menu_efl_gfx_visible_set(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd, Eina_Bool vis) +_elm_menu_efl_gfx_entity_visible_set(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd, Eina_Bool vis) { if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_VISIBLE, 0, vis)) return; - efl_gfx_visible_set(efl_super(obj, MY_CLASS), vis); - if (vis) efl_gfx_visible_set(sd->hv, EINA_TRUE); + efl_gfx_entity_visible_set(efl_super(obj, MY_CLASS), vis); + if (vis) efl_gfx_entity_visible_set(sd->hv, EINA_TRUE); } static void _item_obj_create(Elm_Menu_Item_Data *item) { - VIEW(item) = elm_layout_add(WIDGET(item)); - efl_access_type_set(VIEW(item), EFL_ACCESS_TYPE_SKIPPED); + VIEW_SET(item, elm_layout_add(WIDGET(item))); + efl_access_object_access_type_set(VIEW(item), EFL_ACCESS_TYPE_SKIPPED); evas_object_size_hint_weight_set (VIEW(item), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_fill_set(VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -603,8 +604,8 @@ _item_obj_create(Elm_Menu_Item_Data *item) static void _item_separator_obj_create(Elm_Menu_Item_Data *item) { - VIEW(item) = elm_layout_add(WIDGET(item)); - efl_access_type_set(VIEW(item), EFL_ACCESS_TYPE_SKIPPED); + VIEW_SET(item, elm_layout_add(WIDGET(item))); + efl_access_object_access_type_set(VIEW(item), EFL_ACCESS_TYPE_SKIPPED); evas_object_size_hint_weight_set (VIEW(item), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_fill_set(VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -627,9 +628,9 @@ _item_submenu_obj_create(Elm_Menu_Item_Data *item) char style[1024]; item->submenu.location = elm_icon_add(sd->bx); - efl_access_type_set(item->submenu.location, EFL_ACCESS_TYPE_DISABLED); + efl_access_object_access_type_set(item->submenu.location, EFL_ACCESS_TYPE_DISABLED); item->submenu.hv = hv = elm_hover_add(sd->bx); - efl_access_type_set(item->submenu.hv, EFL_ACCESS_TYPE_SKIPPED); + efl_access_object_access_type_set(item->submenu.hv, EFL_ACCESS_TYPE_SKIPPED); efl_ui_mirrored_set(hv, EINA_FALSE); elm_hover_target_set(hv, item->submenu.location); elm_hover_parent_set(hv, sd->parent); @@ -695,10 +696,10 @@ _elm_menu_efl_canvas_group_group_add(Eo *obj, Elm_Menu_Data *priv) elm_widget_can_focus_set(obj, EINA_FALSE); priv->location = elm_icon_add(obj); - efl_access_type_set(priv->location, EFL_ACCESS_TYPE_DISABLED); + efl_access_object_access_type_set(priv->location, EFL_ACCESS_TYPE_DISABLED); priv->hv = elm_hover_add(obj); - efl_access_type_set(priv->hv, EFL_ACCESS_TYPE_SKIPPED); + efl_access_object_access_type_set(priv->hv, EFL_ACCESS_TYPE_SKIPPED); efl_ui_mirrored_set(priv->hv, EINA_FALSE); elm_object_style_set(priv->hv, "menu/default"); @@ -706,7 +707,7 @@ _elm_menu_efl_canvas_group_group_add(Eo *obj, Elm_Menu_Data *priv) (priv->hv, ELM_HOVER_EVENT_DISMISSED, _hover_dismissed_cb, obj); priv->bx = elm_box_add(obj); - efl_access_type_set(priv->bx, EFL_ACCESS_TYPE_SKIPPED); + efl_access_object_access_type_set(priv->bx, EFL_ACCESS_TYPE_SKIPPED); efl_ui_mirrored_set(priv->bx, EINA_FALSE); evas_object_size_hint_weight_set (priv->bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -804,7 +805,7 @@ elm_menu_add(Evas_Object *parent) } EOLIAN static Efl_Ui_Focus_Manager* -_elm_menu_elm_widget_focus_manager_create(Eo *obj EINA_UNUSED, Elm_Menu_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root) +_elm_menu_efl_ui_widget_focus_manager_focus_manager_create(Eo *obj EINA_UNUSED, Elm_Menu_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root) { Efl_Ui_Focus_Manager *manager; @@ -819,17 +820,12 @@ EOLIAN static Eo * _elm_menu_efl_object_constructor(Eo *obj, Elm_Menu_Data *sd) { Eo *parent = NULL; - Efl_Ui_Focus_Manager *manager; - - manager = efl_ui_widget_focus_manager_create(obj, obj); - efl_composite_attach(obj, manager); - _efl_ui_focus_manager_redirect_events_add(manager, obj); obj = efl_constructor(efl_super(obj, MY_CLASS)); efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY); evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks); parent = efl_parent_get(obj); - efl_access_role_set(obj, EFL_ACCESS_ROLE_MENU); + efl_access_object_role_set(obj, EFL_ACCESS_ROLE_MENU); elm_menu_parent_set(obj, parent); elm_hover_target_set(sd->hv, sd->location); @@ -853,7 +849,7 @@ _elm_menu_efl_object_destructor(Eo *obj, Elm_Menu_Data *sd) Eina_List *itr, *itr2; Elm_Object_Item *eo_item; EINA_LIST_FOREACH_SAFE(sd->items, itr, itr2, eo_item) - elm_wdg_item_del(eo_item); + efl_del(eo_item); efl_destructor(efl_super(obj, MY_CLASS)); } @@ -867,7 +863,7 @@ elm_menu_parent_set(Evas_Object *obj, } EOLIAN static void -_elm_menu_elm_widget_widget_parent_set(Eo *obj, Elm_Menu_Data *sd, Evas_Object *parent) +_elm_menu_efl_ui_widget_widget_parent_set(Eo *obj, Elm_Menu_Data *sd, Evas_Object *parent) { Eina_List *l, *_l, *_ll, *ll = NULL; Elm_Object_Item *eo_item; @@ -916,72 +912,14 @@ elm_menu_parent_get(const Evas_Object *obj) return efl_ui_widget_parent_get(obj); } -EAPI Elm_Widget_Item * -elm_menu_selected_item_get(const Evas_Object *obj) -{ - return efl_ui_menu_selected_item_get(obj); -} - -EAPI const Eina_List * -elm_menu_items_get(const Evas_Object *obj) -{ - Eina_List *lst = NULL; - Eina_Iterator *it; - void *item_data; - - it = efl_ui_menu_items_get(obj); - EINA_ITERATOR_FOREACH(it, item_data) - { - lst = eina_list_append(lst, item_data); - } - eina_iterator_free(it); - return lst; -} - -EAPI Elm_Widget_Item * -elm_menu_first_item_get(const Evas_Object *obj) -{ - return efl_ui_menu_first_item_get(obj); -} - -EAPI Elm_Widget_Item * -elm_menu_last_item_get(const Evas_Object *obj) -{ - return efl_ui_menu_last_item_get(obj); -} - -EAPI void -elm_menu_item_selected_set(Evas_Object *obj, Eina_Bool selected) -{ - efl_ui_item_selected_set(obj, selected); -} - -EAPI Eina_Bool -elm_menu_item_selected_get(const Evas_Object *obj) -{ - return efl_ui_item_selected_get(obj); -} - -EAPI Elm_Widget_Item * -elm_menu_item_prev_get(const Evas_Object *obj) -{ - return efl_ui_item_prev_get(obj); -} - -EAPI Elm_Widget_Item * -elm_menu_item_next_get(const Evas_Object *obj) -{ - return efl_ui_item_next_get(obj); -} - EOLIAN static Evas_Object* -_elm_menu_elm_widget_widget_parent_get(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) +_elm_menu_efl_ui_widget_widget_parent_get(const Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) { return sd->parent; } EOLIAN static void -_elm_menu_move(Eo *obj, Elm_Menu_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_menu_relative_move(Eo *obj, Elm_Menu_Data *sd, Evas_Coord x, Evas_Coord y) { sd->xloc = x; sd->yloc = y; @@ -1115,7 +1053,7 @@ _elm_menu_item_add(Eo *obj, Elm_Menu_Data *sd, Elm_Object_Item *parent, const ch Evas_Object *icon_obj; icon_obj = elm_icon_add(obj); - efl_access_type_set(icon_obj, EFL_ACCESS_TYPE_DISABLED); + efl_access_object_access_type_set(icon_obj, EFL_ACCESS_TYPE_DISABLED); if (!icon_obj) return NULL; eo_item = efl_add(ELM_MENU_ITEM_CLASS, obj); @@ -1237,7 +1175,7 @@ _elm_menu_item_separator_add(Eo *obj, Elm_Menu_Data *sd, Elm_Object_Item *eo_p_i } EOLIAN static const char * -_elm_menu_item_icon_name_get(Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *item) +_elm_menu_item_icon_name_get(const Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *item) { return item->icon_str; } @@ -1262,17 +1200,17 @@ _elm_menu_item_subitems_clear(Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *it) EINA_LIST_FOREACH_SAFE(it->submenu.items, l, l_next, sub_it) - elm_wdg_item_del(sub_it); + efl_del(sub_it); } -EOLIAN static Eina_Iterator* -_elm_menu_efl_ui_menu_items_get(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) +EOLIAN static const Eina_List * +_elm_menu_items_get(const Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) { - return eina_list_iterator_new(sd->items); + return sd->items; } EOLIAN static void -_elm_menu_item_efl_ui_item_selected_set(Eo *eo_item EINA_UNUSED, +_elm_menu_item_selected_set(Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *item, Eina_Bool selected) { @@ -1292,13 +1230,13 @@ _elm_menu_item_efl_ui_item_selected_set(Eo *eo_item EINA_UNUSED, } EOLIAN static Eina_Bool -_elm_menu_item_efl_ui_item_selected_get(Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *item) +_elm_menu_item_selected_get(const Eo *eo_item EINA_UNUSED, Elm_Menu_Item_Data *item) { return item->selected; } EOLIAN static Elm_Object_Item * -_elm_menu_item_efl_ui_item_prev_get(Eo *eo_item, Elm_Menu_Item_Data *item) +_elm_menu_item_prev_get(const Eo *eo_item, Elm_Menu_Item_Data *item) { if (item->parent) { @@ -1322,7 +1260,7 @@ _elm_menu_item_efl_ui_item_prev_get(Eo *eo_item, Elm_Menu_Item_Data *item) } EOLIAN static Elm_Object_Item * -_elm_menu_item_efl_ui_item_next_get(Eo *eo_item, Elm_Menu_Item_Data *item) +_elm_menu_item_next_get(const Eo *eo_item, Elm_Menu_Item_Data *item) { if (item->parent) { @@ -1346,20 +1284,20 @@ _elm_menu_item_efl_ui_item_next_get(Eo *eo_item, Elm_Menu_Item_Data *item) } EOLIAN static Elm_Object_Item* -_elm_menu_efl_ui_menu_first_item_get(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) +_elm_menu_first_item_get(const Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) { return (sd->items ? sd->items->data : NULL); } EOLIAN static Elm_Object_Item* -_elm_menu_efl_ui_menu_last_item_get(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) +_elm_menu_last_item_get(const Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) { Eina_List *l = eina_list_last(sd->items); return (l ? l->data : NULL); } EOLIAN static Elm_Object_Item* -_elm_menu_efl_ui_menu_selected_item_get(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) +_elm_menu_selected_item_get(const Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) { Eina_List *l; Elm_Object_Item *eo_item; @@ -1380,45 +1318,47 @@ _elm_menu_class_constructor(Efl_Class *klass) } EOLIAN static Eina_List* -_elm_menu_efl_access_children_get(Eo *obj, Elm_Menu_Data *sd) +_elm_menu_efl_access_object_access_children_get(const Eo *obj, Elm_Menu_Data *sd) { Eina_List *ret; - ret = efl_access_children_get(efl_super(obj, ELM_MENU_CLASS)); + ret = efl_access_object_access_children_get(efl_super(obj, ELM_MENU_CLASS)); return eina_list_merge(eina_list_clone(sd->items), ret); } EOLIAN static Eina_List* -_elm_menu_item_efl_access_children_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) +_elm_menu_item_efl_access_object_access_children_get(const Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) { return eina_list_clone(sd->submenu.items); } -EOLIAN static Efl_Access* -_elm_menu_item_efl_access_parent_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) +EOLIAN static Eo* +_elm_menu_item_efl_object_parent_get(const Eo *obj, Elm_Menu_Item_Data *sd) { - return sd->parent ? EO_OBJ(sd->parent) : WIDGET(sd); + if (sd->parent) return EO_OBJ(sd->parent); + if (sd->base) return WIDGET(sd); + return efl_parent_get(efl_super(obj, ELM_MENU_ITEM_CLASS)); } EOLIAN static Efl_Access_Role -_elm_menu_item_efl_access_role_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) +_elm_menu_item_efl_access_object_role_get(const Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) { return sd->submenu.items ? EFL_ACCESS_ROLE_MENU : EFL_ACCESS_ROLE_MENU_ITEM; } EOLIAN static const char* -_elm_menu_item_efl_access_name_get(Eo *obj, Elm_Menu_Item_Data *sd) +_elm_menu_item_efl_access_object_i18n_name_get(const Eo *obj, Elm_Menu_Item_Data *sd) { const char *ret; - ret = efl_access_name_get(efl_super(obj, ELM_MENU_ITEM_CLASS)); + ret = efl_access_object_i18n_name_get(efl_super(obj, ELM_MENU_ITEM_CLASS)); if (ret) return ret; return sd->label; } EOLIAN static Efl_Access_State_Set -_elm_menu_item_efl_access_state_set_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) +_elm_menu_item_efl_access_object_state_set_get(const Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) { Efl_Access_State_Set ret; - ret = efl_access_state_set_get(efl_super(obj, ELM_MENU_ITEM_CLASS)); + ret = efl_access_object_state_set_get(efl_super(obj, ELM_MENU_ITEM_CLASS)); STATE_TYPE_SET(ret, EFL_ACCESS_STATE_SELECTABLE); @@ -1429,7 +1369,7 @@ _elm_menu_item_efl_access_state_set_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data } EOLIAN static int -_elm_menu_item_efl_access_selection_selected_children_count_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) +_elm_menu_item_efl_access_selection_selected_children_count_get(const Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) { int ret = 0; Elm_Object_Item *sobj = NULL; @@ -1446,7 +1386,7 @@ _elm_menu_item_efl_access_selection_selected_children_count_get(Eo *obj EINA_UNU } EOLIAN static Eo* -_elm_menu_item_efl_access_selection_selected_child_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd, int child) +_elm_menu_item_efl_access_selection_selected_child_get(const Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd, int child) { int seq = 0; Elm_Object_Item *sobj = NULL; @@ -1468,7 +1408,7 @@ _elm_menu_item_efl_access_selection_selected_child_get(Eo *obj EINA_UNUSED, Elm_ } EOLIAN static int -_elm_menu_efl_access_selection_selected_children_count_get(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) +_elm_menu_efl_access_selection_selected_children_count_get(const Eo *obj EINA_UNUSED, Elm_Menu_Data *sd) { Elm_Object_Item *sobj = NULL; Eina_List *l; @@ -1484,7 +1424,7 @@ _elm_menu_efl_access_selection_selected_children_count_get(Eo *obj EINA_UNUSED, } EOLIAN static Eo* -_elm_menu_efl_access_selection_selected_child_get(Eo *obj EINA_UNUSED, Elm_Menu_Data *sd, int child) +_elm_menu_efl_access_selection_selected_child_get(const Eo *obj EINA_UNUSED, Elm_Menu_Data *sd, int child) { int seq = 0; Elm_Object_Item *sobj = NULL; @@ -1509,13 +1449,10 @@ _elm_menu_efl_access_selection_selected_child_get(Eo *obj EINA_UNUSED, Elm_Menu_ EOLIAN static Efl_Object* _elm_menu_efl_object_provider_find(const Eo *obj, Elm_Menu_Data *pd, const Efl_Object *klass) { - Efl_Object *result; - - result = efl_provider_find(pd->parent, klass); - - if (result) return result; + if (!pd->parent) + return efl_provider_find(efl_super(obj, MY_CLASS), klass); - return efl_provider_find(efl_super(obj, MY_CLASS), klass); + return efl_provider_find(pd->parent, klass); } |