/** * @brief Implementation AtkObject->ref_child callback * * ATK doc says:\n * Gets a reference to the specified accessible child of the object. The * accessible children are 0-based so the first accessible child is at index 0, * the second at index 1 and so on. * * @returns an AtkObject representing the specified accessible child of the * accessible. */ static AtkObject * eail_naviframe_ref_child(AtkObject *obj, gint i) { Eina_List *list; EailNaviframe *naviframe; EailWidget *widget; Evas_Object *e_object; g_return_val_if_fail(EAIL_IS_NAVIFRAME(obj), NULL); naviframe = EAIL_NAVIFRAME(obj); widget = EAIL_WIDGET(naviframe); e_object = eail_widget_get_widget(widget); list = elm_naviframe_items_get(e_object); int list_count = eina_list_count(list); if (i >= list_count) { eina_list_free(list); return NULL; } AtkObject *child = eail_naviframe_page_new(obj, i); atk_object_initialize(child, eina_list_nth(list, i)); g_object_ref(child); naviframe->cached_pages = eina_list_append(naviframe->cached_pages, child); eina_list_free(list); return child; }
/** * @brief Refreshes history of realized pages * * @param self an EailNaviframe object * @param list list of realized pages */ static void _refresh_cached_pages(EailNaviframe *self, const Eina_List *list) { int list_count = eina_list_count(list); eina_list_free(self->cached_pages); for (int i = 0; i < list_count; i++) { AtkObject *child = eail_naviframe_page_new(ATK_OBJECT(self), i); atk_object_initialize(child, eina_list_nth(list, i)); g_object_ref(child); self->cached_pages = eina_list_append(self->cached_pages, child); } }
/** * @brief Returns naviframe-page implementation for given object item * * @param naviframe an naviframe AtkObject * @param item an Elm_Object_Item for naviframe-page * * @returns an AtkObject* representation for naviframe-page */ static AtkObject * _eail_naviframe_get_naviframe_page_for_item(AtkObject *naviframe, Elm_Object_Item *item) { EailFactoryObj *factory_obj = NULL; AtkObject *naviframe_page = NULL; factory_obj = eail_factory_find_obj_for_item(item); if (factory_obj) { if (!factory_obj->atk_obj) ERR("No atk obj created for factory item object"); return factory_obj->atk_obj; } naviframe_page = eail_naviframe_page_new(naviframe, item); atk_object_initialize(naviframe_page, item); eail_factory_append_item_to_cache(ATK_OBJECT(naviframe_page), item); return naviframe_page; }