From 05b087ffbc56d8af5797fa7d5306ad3b1141fdb5 Mon Sep 17 00:00:00 2001 From: Prasoon Singh Date: Mon, 3 Oct 2016 14:33:41 +0530 Subject: [PATCH] [atspi][elm_genlist] Moving changes to mobile_lib Change-Id: Ic93230d93cce685c26a7ba1dcb25ca9391c705a0 --- src/mobile_lib/elm_genlist.c | 62 ++++++++++++++++++++++++++++++++++++++++--- src/mobile_lib/elm_genlist.eo | 4 +++ 2 files changed, 62 insertions(+), 4 deletions(-) diff --git a/src/mobile_lib/elm_genlist.c b/src/mobile_lib/elm_genlist.c index 1bf3e91..1808cb2 100644 --- a/src/mobile_lib/elm_genlist.c +++ b/src/mobile_lib/elm_genlist.c @@ -745,9 +745,6 @@ _item_content_realize(Elm_Gen_Item *it, ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); if (ic) { - if (_elm_config->atspi_mode && eo_isa(ic, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN)) - eo_do(ic, elm_interface_atspi_accessible_parent_set(EO_OBJ(it))); - // TIZEN_ONLY(20150630): Add contents min height calculation for "full" style if (eo_class_get(ic) == ELM_LAYOUT_CLASS) { @@ -1102,6 +1099,13 @@ _item_unrealize(Elm_Gen_Item *it, evas_object_smart_callback_call(WIDGET(it), SIG_UNREALIZED, EO_OBJ(it)); _elm_access_widget_item_unregister(it->base); elm_object_item_access_order_unset(EO_OBJ(it)); + //TIZEN_ONLY(20150709) Do not register children of MANAGES_DESCENDATS objects + if (_elm_config->atspi_mode) + { + elm_interface_atspi_accessible_removed(EO_OBJ(it)); + elm_interface_atspi_accessible_children_changed_del_signal_emit(GL_IT(it)->wsd->obj, EO_OBJ(it)); + } + // } Eina_List *l; @@ -1631,7 +1635,10 @@ _item_realize(Elm_Gen_Item *it, //TIZEN_ONLY(20150709) Do not register children of MANAGES_DESCENDATS objects if (_elm_config->atspi_mode) - elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, EO_OBJ(it)); + { + elm_interface_atspi_accessible_added(EO_OBJ(it)); + elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, EO_OBJ(it)); + } // // Register accessibility before realized callback @@ -5571,6 +5578,53 @@ _elm_genlist_evas_object_smart_add(Eo *obj, Elm_Genlist_Data *priv) (NULL, NULL, &priv->viewport_w, &priv->viewport_h)); } +//TIZEN_ONLY(20160822): When atspi mode is dynamically switched on/off, +//register/unregister access objects accordingly. +EOLIAN static void +_elm_genlist_elm_widget_atspi(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd, Eina_Bool is_atspi) +{ + Item_Block *itb; + Eina_Bool done = EINA_FALSE; + Evas_Object *content = NULL; + Eina_List *l; + + EINA_INLIST_FOREACH(sd->blocks, itb) + { + if (itb->realized) + { + Eina_List *l; + Elm_Gen_Item *it; + + done = EINA_TRUE; + EINA_LIST_FOREACH(itb->items, l, it) + { + if (!it->realized || it->hide) continue; + if (is_atspi) + { + elm_interface_atspi_accessible_added(EO_OBJ(it)); + elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, EO_OBJ(it)); + EINA_LIST_FOREACH(it->contents, l, content) + { + if (eo_isa(content, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN)) + { + eo_do(content, elm_interface_atspi_accessible_parent_set(EO_OBJ(it))); + elm_interface_atspi_accessible_children_changed_added_signal_emit(EO_OBJ(it), content); + } + } + elm_interface_atspi_accessible_name_changed_signal_emit(EO_OBJ(it)); + } + else + { + elm_interface_atspi_accessible_removed(EO_OBJ(it)); + elm_interface_atspi_accessible_children_changed_del_signal_emit(sd->obj, EO_OBJ(it)); + } + } + } + else if (done) break; + } +} +// + EAPI Evas_Object * elm_genlist_add(Evas_Object *parent) { diff --git a/src/mobile_lib/elm_genlist.eo b/src/mobile_lib/elm_genlist.eo index f3c1b64..61c560a 100644 --- a/src/mobile_lib/elm_genlist.eo +++ b/src/mobile_lib/elm_genlist.eo @@ -39,6 +39,10 @@ class Elm.Genlist (Elm.Layout, Elm_Interface_Scrollable, Evas.Clickable_Interfac // TIZEN only (20150914) : Accessibility: updated highlight change during genlist and list scroll Elm_Interface_Scrollable.content_pos_set; // TIZEN only (20150914) + //TIZEN_ONLY(20160822): When atspi mode is dynamically switched on/off, + //register/unregister access objects accordingly. + Elm.Widget.atspi; + // } events { language,changed; -- 2.7.4