canvas layer: find the top item for only valids. 52/231852/1
authorHermet Park <chuneon.park@samsung.com>
Fri, 24 Apr 2020 12:00:39 +0000 (21:00 +0900)
committerHermet Park <chuneon.park@samsung.com>
Fri, 24 Apr 2020 12:07:40 +0000 (21:07 +0900)
In some case, top layer doesn't have valid objects,
That case, we must find and return top object in the next layer.

Change-Id: I3c6fc8a683a1b3673a06f8e544a04809ed3a353e

src/lib/evas/canvas/evas_stack.x

index 914d04731e1b38c861c16e95758a63de950475ca..333932f4bd755e38170f65ea3550db5fde980dc1 100644 (file)
@@ -400,8 +400,9 @@ _evas_canvas_object_top_get(const Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
    list = EINA_INLIST_GET(e->layers);
    if (!list) return NULL;
 
-   layer = (Evas_Layer *) list->last;
-   if (!layer) return NULL;
+   //just in case if layer has no valid objects in the list.
+   EINA_INLIST_REVERSE_FOREACH(list, layer)
+     if (layer->objects) break;
 
    list = EINA_INLIST_GET(layer->objects);
    if (!list) return NULL;