From: Prasoon Singh Date: Wed, 27 Nov 2019 11:17:16 +0000 (+0530) Subject: [access] Handle case where last highlighted object is in different window X-Git-Tag: submit/tizen/20200303.214157~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e64fe595d076f3fb908330158767a2676970010d;p=platform%2Fupstream%2Fefl.git [access] Handle case where last highlighted object is in different window When highlight_grab is called simultaneously fo different window object highlight frame remains on last window. Change-Id: I60dbfefda83a68aaa641aa289e92d3b99f6add26 Signed-off-by: Prasoon Singh --- diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index 099e0c7..079139f 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -2263,7 +2263,35 @@ elm_object_accessibility_highlight_set(void *obj, Eina_Bool visible) else { if (visible) - _accessibility_currently_highlighted_obj = obj; + { + //TIZEN_ONLY(20200224): Handle case where last highlighted object is in different window + if (_accessibility_currently_highlighted_obj && + _accessibility_currently_highlighted_obj != (void*)obj) + { + Evas_Object *last_win = NULL, *last_target = NULL, *last_hobj = NULL; + last_hobj = (Evas_Object *)_accessibility_currently_highlighted_obj; + if (efl_isa(last_hobj, ELM_WIDGET_ITEM_CLASS)) + { + Elm_Widget_Item_Data *id = efl_data_scope_get(last_hobj, ELM_WIDGET_ITEM_CLASS); + last_target = id->view; + } + else + last_target = last_hobj; + if (elm_object_widget_check(last_target)) + last_win = elm_object_top_widget_get(last_target); + else + last_win = elm_object_top_widget_get(elm_object_parent_widget_get(last_target)); + if (last_win != win) + { + if (efl_isa(last_target, EFL_UI_LAYOUT_CLASS) && elm_widget_access_highlight_in_theme_get(last_target)) + elm_widget_signal_emit(last_target, "elm,action,access_highlight,hide", "elm"); + else + _elm_win_object_set_accessibility_highlight(last_win, last_target, EINA_FALSE); + } + } + // + _accessibility_currently_highlighted_obj = obj; + } } if (efl_isa(target, EFL_UI_LAYOUT_CLASS) && elm_widget_access_highlight_in_theme_get(target))