efl_ui_widget: move from elm_widget_top_get to provider_find
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Tue, 26 Mar 2019 09:15:15 +0000 (10:15 +0100)
committerJunsuChoi <jsuya.choi@samsung.com>
Tue, 2 Apr 2019 04:24:22 +0000 (13:24 +0900)
this resolves a lot of cases where focus_highlight API was called on a
object, which is not a efl_ui_win object. With this patch we ensure that
the object is always a window.

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D8476

src/lib/elementary/efl_ui_widget.c
src/lib/elementary/elm_gengrid.c
src/lib/elementary/elm_genlist.c

index 3591d8c..b4dbf02 100644 (file)
@@ -328,20 +328,21 @@ _elm_widget_item_highlight_in_theme(Evas_Object *obj, Elm_Object_Item *eo_it)
 void
 _elm_widget_focus_highlight_start(const Evas_Object *obj)
 {
-   Evas_Object *top = elm_widget_top_get(obj);
+   Evas_Object *top = efl_provider_find(obj, EFL_UI_WIN_CLASS);
 
-   if (top && efl_isa(top, EFL_UI_WIN_CLASS))
-     _elm_win_focus_highlight_start(top);
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(top, EFL_UI_WIN_CLASS));
+
+   _elm_win_focus_highlight_start(top);
 }
 
 Evas_Object *
 _efl_ui_widget_focus_highlight_object_get(const Evas_Object *obj)
 {
-   Evas_Object *top = elm_widget_top_get(obj);
+   Evas_Object *top = efl_provider_find(obj, EFL_UI_WIN_CLASS);
 
-   if (top && efl_isa(top, EFL_UI_WIN_CLASS))
-     return _elm_win_focus_highlight_object_get(top);
-   return NULL;
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_isa(top, EFL_UI_WIN_CLASS), NULL);
+
+   return _elm_win_focus_highlight_object_get(top);
 }
 
 static Eina_Bool
index d3151c0..9f49625 100644 (file)
@@ -226,7 +226,7 @@ _item_cache_add(Elm_Gen_Item *it, Eina_List *contents)
    Item_Cache *itc = NULL;
    ELM_GENGRID_DATA_GET_FROM_ITEM(it, sd);
    Evas_Object *obj = sd->obj;
-   Evas_Object *win = elm_widget_top_get(obj);
+   Evas_Object *win = efl_provider_find(obj, EFL_UI_WIN_CLASS);
 
    evas_event_freeze(evas_object_evas_get(obj));
    if (sd->item_cache_max > 0)
@@ -1695,7 +1695,7 @@ _elm_gengrid_item_focus_update(Elm_Gen_Item *it)
 {
    const char *focus_raise;
    Evas_Object *obj = WIDGET(it);
-   Evas_Object *win = elm_widget_top_get(obj);
+   Evas_Object *win = efl_provider_find(obj, EFL_UI_WIN_CLASS);
    ELM_GENGRID_DATA_GET(obj, sd);
 
    if (elm_win_focus_highlight_enabled_get(win) || _elm_config->win_auto_focus_enable)
@@ -2808,7 +2808,7 @@ _elm_gengrid_item_unfocused(Elm_Object_Item *eo_it)
 {
    ELM_GENGRID_ITEM_DATA_GET(eo_it, it);
    Evas_Object *obj = WIDGET(it);
-   Evas_Object *win = elm_widget_top_get(obj);
+   Evas_Object *win = efl_provider_find(obj, EFL_UI_WIN_CLASS);
    ELM_GENGRID_DATA_GET(obj, sd);
 
    if (it->generation < sd->generation)
index 0ebfbb8..c9f644c 100644 (file)
@@ -1686,7 +1686,7 @@ _item_cache_add(Elm_Gen_Item *it, Eina_List *contents)
    Item_Cache *itc = NULL;
    ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
    Evas_Object *obj = sd->obj;
-   Evas_Object *win = elm_widget_top_get(obj);
+   Evas_Object *win = efl_provider_find(obj, EFL_UI_WIN_CLASS);
    Evas *e = evas_object_evas_get(obj);
 
    evas_event_freeze(e);
@@ -1904,7 +1904,7 @@ _elm_genlist_item_focus_update(Elm_Gen_Item *it)
 {
    const char *focus_raise;
    Evas_Object *obj = WIDGET(it);
-   Evas_Object *win = elm_widget_top_get(obj);
+   Evas_Object *win = efl_provider_find(obj, EFL_UI_WIN_CLASS);
    ELM_GENLIST_DATA_GET(obj, sd);
 
    if (elm_win_focus_highlight_enabled_get(win)
@@ -3053,7 +3053,7 @@ _elm_genlist_item_unfocused(Elm_Object_Item *eo_it)
 
    ELM_GENLIST_ITEM_DATA_GET(eo_it, it);
    Evas_Object *obj = WIDGET(it);
-   Evas_Object *win = elm_widget_top_get(obj);
+   Evas_Object *win = efl_provider_find(obj, EFL_UI_WIN_CLASS);
    ELM_GENLIST_DATA_GET(obj, sd);
 
    if (_is_no_select(it))