Fix object_get_index_in_parent for elm_items.
authorKarol Furmaniak <k.furmaniak@samsung.com>
Tue, 10 Dec 2013 10:53:42 +0000 (11:53 +0100)
committerKarol Furmaniak <k.furmaniak@samsung.com>
Tue, 10 Dec 2013 10:53:42 +0000 (11:53 +0100)
Fix for: elm_gengrid, elm_toolbar, elm_menu, elm_list, elm_index

eail/eail/eail_gengrid.c
eail/eail/eail_index.c
eail/eail/eail_list.c
eail/eail/eail_menu.c
eail/eail/eail_toolbar.c

index 0ad89f6..a7dd2af 100644 (file)
@@ -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;
 }
 
 /**
index 91cda15..c6bfd25 100644 (file)
@@ -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; i<eina_list_count(items); ++i)
+   {
+      if (eina_list_nth(items, i) == it)
+      {
+         return i;
+      }
+   }
+
+   return -1;
+}
+
+/**
  * @brief Initialization of EailItemParentIface callbacks
  *
  * @param iface EailItemParentIface instance
@@ -254,6 +283,7 @@ eail_item_parent_interface_init(EailItemParentIface *iface)
 {
    iface->get_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;
 }
 
 /**
index 741242d..bb4a50e 100644 (file)
@@ -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; i<eina_list_count(items); ++i)
+   {
+      if (eina_list_nth(items, i) == it)
+      {
+         index = i;
+         break;
+      }
+   }
+
+   eina_list_free(items);
+   return index;
+}
+
+/**
  * @brief Gets the name of a list's child
  *
  * @param parent EailItemParent instance
@@ -366,6 +398,7 @@ eail_item_parent_interface_init(EailItemParentIface *iface)
    iface->grab_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;
 }
 
 /*
index ce92bd5..34c9aea 100644 (file)
@@ -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;
 }
index 1e7ea38..2ea5f82 100644 (file)
@@ -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; i<eina_list_count(items); ++i)
+   {
+      if (eina_list_nth(items, i) == it)
+      {
+         index = i;
+         break;
+      }
+   }
+
+   eina_list_free(items);
+   return index;
+}
+
+/**
  * @brief Initialization of EailItemParentIface interface callbacks
  *
  * Function called upon instance creation. It initializes EailItemParent
@@ -252,4 +284,5 @@ eail_item_parent_interface_init(EailItemParentIface *iface)
    iface->get_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;
 }