From: Yeongjong Lee Date: Thu, 26 Nov 2020 01:15:48 +0000 (+0900) Subject: elm_focus: add internal api to get focused object whitout checking window focus X-Git-Tag: accepted/tizen/unified/20201130.122951^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F66%2F248366%2F2;p=platform%2Fupstream%2Fefl.git elm_focus: add internal api to get focused object whitout checking window focus 'elm_object_focused_object_get_any_win_focus' will returns current focused object regardless of window focus state. Note that this is only for internal use. Change-Id: If0592dfec3ef2478abeac65507d4ff8648d7aa82 --- diff --git a/src/lib/elementary/elm_focus.h b/src/lib/elementary/elm_focus.h index a7243a9..6b9833b 100644 --- a/src/lib/elementary/elm_focus.h +++ b/src/lib/elementary/elm_focus.h @@ -236,6 +236,21 @@ EAPI void elm_object_focus_next_object_set(Evas_Object *obj, Eva EAPI Evas_Object *elm_object_focused_object_get(const Evas_Object *obj); /** + * @internal + * + * Get focused object regardless of window focus state in object tree. + * + * This function returns current focused object in one object sub-tree. + * This won't check window focus state. + * + * @param obj The object root of sub-tree + * @return Current focused or @c NULL, if there is no focused object. + * + * @ingroup Elm_Focus + */ +EAPI Evas_Object *elm_object_focused_object_get_any_win_focus(const Evas_Object *obj); + +/** * Make the elementary object and its children to be focusable * (or unfocusable). * diff --git a/src/lib/elementary/elm_focus_legacy.c b/src/lib/elementary/elm_focus_legacy.c index c4c4139..959d090 100644 --- a/src/lib/elementary/elm_focus_legacy.c +++ b/src/lib/elementary/elm_focus_legacy.c @@ -403,6 +403,24 @@ elm_object_focused_object_get(const Evas_Object *obj) // } +EAPI Evas_Object * +elm_object_focused_object_get_any_win_focus(const Evas_Object *obj) +{ + API_ENTRY_VAL(NULL) + const Evas_Object *subobj; + + if (!pd->focused) return NULL; + for (unsigned int i = 0; i < eina_array_count(pd->children); ++i) + { + subobj = eina_array_data_get(pd->children, i); + Evas_Object *fobj; + if (!efl_isa(subobj, EFL_UI_WIDGET_CLASS)) continue; + fobj = elm_object_focused_object_get_any_win_focus(subobj); + if (fobj) return fobj; + } + return (Evas_Object *)obj; +} + EAPI Eina_Bool elm_object_focus_get(const Evas_Object *obj) {