From fe1a89ad8e9937f292d2550165535457344b3f44 Mon Sep 17 00:00:00 2001 From: Karol Furmaniak Date: Tue, 10 Dec 2013 11:53:42 +0100 Subject: [PATCH] Fix object_get_index_in_parent for elm_items. Fix for: elm_gengrid, elm_toolbar, elm_menu, elm_list, elm_index --- eail/eail/eail_gengrid.c | 19 +++++++++++++++++++ eail/eail/eail_index.c | 30 ++++++++++++++++++++++++++++++ eail/eail/eail_list.c | 33 +++++++++++++++++++++++++++++++++ eail/eail/eail_menu.c | 18 ++++++++++++++++++ eail/eail/eail_toolbar.c | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 133 insertions(+) diff --git a/eail/eail/eail_gengrid.c b/eail/eail/eail_gengrid.c index 0ad89f6..a7dd2af 100644 --- a/eail/eail/eail_gengrid.c +++ b/eail/eail/eail_gengrid.c @@ -406,6 +406,24 @@ eail_gengrid_get_actions_supported(EailItemParent *parent, } /** + * @brief Gets index in parent + * + * @param parent EailItemParent instance + * @param item EailItem child instance + * + * @returns int representing the index in parent + */ +static gint +eail_gengrid_get_item_index_in_parent(EailItemParent *parent, EailItem *item) +{ + Elm_Object_Item *it = eail_item_get_item(item); + + if (!it) return -1; + + return elm_gengrid_item_index_get(it)-1; +} + +/** * @brief EailItemParent interface initialization * * @param iface EailItemParentIface instance @@ -421,6 +439,7 @@ eail_item_parent_interface_init(EailItemParentIface *iface) iface->grab_item_focus = eail_gengrid_grab_item_focus; iface->get_item_extents = eail_gengrid_item_extents_get; iface->get_actions_supported = eail_gengrid_get_actions_supported; + iface->get_item_index_in_parent = eail_gengrid_get_item_index_in_parent; } /** diff --git a/eail/eail/eail_index.c b/eail/eail/eail_index.c index 91cda15..c6bfd25 100644 --- a/eail/eail/eail_index.c +++ b/eail/eail/eail_index.c @@ -245,6 +245,35 @@ eail_index_get_item_name(EailItemParent *parent, } /** + * @brief Gets index in parent + * + * @param parent EailItemParent instance + * @param item EailItem child instance + * + * @returns int representing the index in parent + */ +static gint +eail_index_get_item_index_in_parent(EailItemParent *parent, EailItem *item) +{ + Elm_Object_Item *it = eail_item_get_item(item); + const Eina_List *items; + int i = 0; + + if (!it) return -1; + + items = eail_index_get_index_items(ATK_OBJECT(parent)); + for (i=0; iget_item_name = eail_index_get_item_name; iface->is_content_get_supported = eail_index_content_get_support; + iface->get_item_index_in_parent = eail_index_get_item_index_in_parent; } /** diff --git a/eail/eail/eail_list.c b/eail/eail/eail_list.c index 741242d..bb4a50e 100644 --- a/eail/eail/eail_list.c +++ b/eail/eail/eail_list.c @@ -335,6 +335,38 @@ eail_list_get_actions_supported(EailItemParent *parent, } /** + * @brief Gets index in parent + * + * @param parent EailItemParent instance + * @param item EailItem child instance + * + * @returns int representing the index in parent + */ +static gint +eail_list_get_item_index_in_parent(EailItemParent *parent, EailItem *item) +{ + Elm_Object_Item *it = eail_item_get_item(item); + Eina_List *items; + gint index = -1; + int i = 0; + + if (!it) return -1; + + items = eail_list_get_items(EAIL_LIST(ATK_OBJECT(parent))); + for (i=0; igrab_item_focus = eail_list_grab_item_focus; iface->get_evas_obj = eail_list_get_evas_obj; iface->get_actions_supported = eail_list_get_actions_supported; + iface->get_item_index_in_parent = eail_list_get_item_index_in_parent; } /* diff --git a/eail/eail/eail_menu.c b/eail/eail/eail_menu.c index ce92bd5..34c9aea 100644 --- a/eail/eail/eail_menu.c +++ b/eail/eail/eail_menu.c @@ -400,6 +400,23 @@ eail_menu_item_content_get_support(EailItemParent *parent, } /** + * @brief Gets index in parent + * + * @param parent EailItemParent instance + * @param item EailItem child instance + * + * @returns int representing the index in parent + */ +static gint +eail_menu_get_item_index_in_parent(EailItemParent *parent, EailItem *item) +{ + Elm_Object_Item *it = eail_item_get_item(item); + if (!it) return -1; + + return elm_menu_item_index_get(it); +} + +/** * @brief Initializes EailItemParentIface callbacks * * @param iface EailItemParentIface instance @@ -413,4 +430,5 @@ eail_item_parent_interface_init(EailItemParentIface *iface) iface->ref_n_child = eail_menu_item_ref_child; iface->get_actions_supported = eail_menu_get_actions_supported; iface->is_content_get_supported = eail_menu_item_content_get_support; + iface->get_item_index_in_parent = eail_menu_get_item_index_in_parent; } diff --git a/eail/eail/eail_toolbar.c b/eail/eail/eail_toolbar.c index 1e7ea38..2ea5f82 100644 --- a/eail/eail/eail_toolbar.c +++ b/eail/eail/eail_toolbar.c @@ -238,6 +238,38 @@ eail_toolbar_item_name_get(EailItemParent *parent, EailItem *item) } /** + * @brief Gets index in parent + * + * @param parent EailItemParent instance + * @param item EailItem child instance + * + * @returns int representing the index in parent + */ +static gint +eail_toolbar_get_item_index_in_parent(EailItemParent *parent, EailItem *item) +{ + Elm_Object_Item *it = eail_item_get_item(item); + Eina_List *items; + gint index = -1; + int i = 0; + + if (!it) return -1; + + items = eail_toolbar_get_items(EAIL_TOOLBAR(ATK_OBJECT(parent))); + for (i=0; iget_item_name = eail_toolbar_item_name_get; iface->get_evas_obj = eail_toolbar_get_evas_obj; iface->get_actions_supported = eail_toolbar_get_actions_supported; + iface->get_item_index_in_parent = eail_toolbar_get_item_index_in_parent; } -- 2.7.4