kimcinoo pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6a6685ab21e70fb0f35a0f10ffbad6efe285620d

commit 6a6685ab21e70fb0f35a0f10ffbad6efe285620d
Author: Shinwoo Kim <[email protected]>
Date:   Wed Dec 6 11:53:06 2017 +0900

    elm: Fix _elm_widget_onscreen_is for window
    
    A window is using ecore_evas geometry value for its evas_object geometry 
value.
    The evas_output_viewport x(y) value which is used in _elm_widget_onscreen_is
    is always 0. So _elm_widget_onscreen_is could return EINA_FALSE, if 
ecore_evas
    geometry x(y) value is bigger than 0, even though a window object is on 
screen.
    So it is not correct to compare ecore_output_viewport and evas_object 
geometry
    for a window object. Moreover it does not make sense.
---
 src/lib/elementary/elm_widget.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 5f9a4eb18b..7b7497b045 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -3881,6 +3881,10 @@ _elm_widget_onscreen_is(Evas_Object *widget)
    if (eina_rectangle_is_empty(&r1))
      return EINA_FALSE;
 
+   // window does not have to check viewport and geometry
+   if (efl_isa(widget, EFL_ACCESS_WINDOW_INTERFACE))
+      return EINA_TRUE;
+
    // check if on canvas
    evas_output_viewport_get(evas, &r2.x, &r2.y, &r2.w, &r2.h);
    if (!eina_rectangles_intersect(&r1, &r2))

-- 


Reply via email to