jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9c82b3475f879a77c44457d9f87b8ca887e1e57d

commit 9c82b3475f879a77c44457d9f87b8ca887e1e57d
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Dec 1 20:56:32 2016 +0900

    elm: use eina_rectangle to check intersection
    
    Summary:
    Some conditions seems redundant if assume that height and width
    can never be < 0.
    
    Change-Id: I63c297cc8cabbb69fbf7e014596f354e811b8d8e
    
    Reviewers: cedric, kimcinoo, jpeg
    
    Subscribers: cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D4441
---
 src/lib/elementary/elm_widget.c | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 0abb324..91e965a 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -4738,16 +4738,18 @@ EAPI Eina_Bool
 _elm_widget_onscreen_is(Evas_Object *widget)
 {
    Evas_Object *parent = widget;
-   Evas_Coord x, y, w, h, wx, wy, ww, wh;
+   Eina_Rectangle r1, r2;
 
    Evas *evas = evas_object_evas_get(widget);
    if (!evas) return EINA_FALSE;
 
+   evas_object_geometry_get(widget, &r1.x, &r1.y, &r1.w, &r1.h);
+   if (eina_rectangle_is_empty(&r1))
+     return EINA_FALSE;
+
    // check if on canvas
-   evas_output_viewport_get(evas, &x, &y, &w, &h);
-   evas_object_geometry_get(widget, &wx, &wy, &ww, &wh);
-   if (((wx < x) && (wx + ww < x)) || ((wx > x + w) && (wx + ww > x + w)) ||
-       ((wy < y) && (wy + wh < y)) || ((wy > y+ h) && (wy + wh > y + h)))
+   evas_output_viewport_get(evas, &r2.x, &r2.y, &r2.w, &r2.h);
+   if (!eina_rectangles_intersect(&r1, &r2))
      return EINA_FALSE;
 
    // check if inside scrollable parent viewport
@@ -4757,9 +4759,8 @@ _elm_widget_onscreen_is(Evas_Object *widget)
         return EINA_FALSE;
       if (parent && efl_isa(parent, ELM_INTERFACE_SCROLLABLE_MIXIN))
         {
-           evas_object_geometry_get(parent, &x, &y, &w, &h);
-           if (((wx < x) && (wx + ww < x)) || ((wx > x + w) && (wx + ww > x + 
w)) ||
-               ((wy < y) && (wy + wh < y)) || ((wy > y+ h) && (wy + wh > y + 
h)))
+           evas_object_geometry_get(parent, &r2.x, &r2.y, &r2.w, &r2.h);
+           if (!eina_rectangles_intersect(&r1, &r2))
              return EINA_FALSE;
         }
    } while (parent && (parent != elm_widget_top_get(widget)));
@@ -4770,7 +4771,7 @@ _elm_widget_onscreen_is(Evas_Object *widget)
 EAPI Eina_Bool
 _elm_widget_item_onscreen_is(Elm_Object_Item *item)
 {
-   Evas_Coord x, y, w, h, wx, wy, ww, wh;
+   Eina_Rectangle r1, r2;
    Elm_Widget_Item_Data *id = efl_data_scope_get(item, ELM_WIDGET_ITEM_CLASS);
    if (!id || !id->view) return EINA_FALSE;
 
@@ -4780,10 +4781,12 @@ _elm_widget_item_onscreen_is(Elm_Object_Item *item)
    if (!_elm_widget_onscreen_is(id->widget))
      return EINA_FALSE;
 
-   evas_object_geometry_get(id->view, &x, &y, &w, &h);
-   evas_object_geometry_get(id->widget, &wx, &wy, &ww, &wh);
-   if (((wx < x) && (wx + ww < x)) || ((wx > x + w) && (wx + ww > x + w)) ||
-       ((wy < y) && (wy + wh < y)) || ((wy > y+ h) && (wy + wh > y + h)))
+   evas_object_geometry_get(id->view, &r1.x, &r1.y, &r1.w, &r1.h);
+   if (eina_rectangle_is_empty(&r1))
+     return EINA_FALSE;
+
+   evas_object_geometry_get(id->widget, &r2.x, &r2.y, &r2.w, &r2.h);
+   if (!eina_rectangles_intersect(&r1, &r2))
      return EINA_FALSE;
 
    return EINA_TRUE;

-- 


Reply via email to