ami pushed a commit to branch master.

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

commit b734c132f93f86b34a2bdf3e12ee62c22404d295
Author: Amitesh Singh <amitesh...@samsung.com>
Date:   Fri Dec 8 16:04:18 2017 +0900

    efl.canvas.object: implement pointer_inside of Efl.Canvas.Pointer.
    
    remove eo apis pointer_in, pointer_device_in, pointer_inside_get &
    pointer_inside_by_device_get and add legacy APIs for
    pointer_inside_get & pointer_inside_by_device_get.
    These four APIs do almost same things.
---
 src/lib/elementary/els_cursor.c          |  2 +-
 src/lib/evas/Evas_Legacy.h               | 33 ++++++++++++++++
 src/lib/evas/canvas/efl_canvas_object.eo | 68 +-------------------------------
 src/lib/evas/canvas/evas_events.c        | 17 ++++----
 src/lib/evas/canvas/evas_object_main.c   | 34 +++++++---------
 src/lib/evas/include/evas_private.h      |  1 +
 6 files changed, 59 insertions(+), 96 deletions(-)

diff --git a/src/lib/elementary/els_cursor.c b/src/lib/elementary/els_cursor.c
index 69d541835e..a90c7daf25 100644
--- a/src/lib/elementary/els_cursor.c
+++ b/src/lib/elementary/els_cursor.c
@@ -570,7 +570,7 @@ _elm_cursor_cur_set(Elm_Cursor *cur)
           }
      }
 
-   if (efl_canvas_object_pointer_in_get(cur->eventarea))
+   if (efl_canvas_pointer_inside_get(cur->eventarea, NULL))
      _elm_cursor_set(cur);
 }
 
diff --git a/src/lib/evas/Evas_Legacy.h b/src/lib/evas/Evas_Legacy.h
index de7bf35d45..94b06d0f12 100644
--- a/src/lib/evas/Evas_Legacy.h
+++ b/src/lib/evas/Evas_Legacy.h
@@ -2210,6 +2210,39 @@ EAPI void evas_object_scale_set(Evas_Object *obj, double 
scale);
  */
 EAPI double evas_object_scale_get(const Evas_Object *obj);
 
+/**
+ * @brief Returns whether the mouse pointer is logically inside the object.
+ *
+ * @param[in] dev The pointer device.
+ *
+ * @return @c true if the pointer is inside, @c false otherwise.
+ *
+ * @since 1.20
+ *
+ * @ingroup Evas_Object
+ */
+EAPI Eina_Bool evas_object_pointer_inside_by_device_get(const Evas_Object 
*obj, Efl_Input_Device * dev);
+
+/**
+ * @brief Returns whether the default mouse pointer is logically inside the
+ * object.
+ *
+ * When this function is called it will return a value of either @c false or
+ * @c true, depending on if event_feed_mouse_in or event_feed_mouse_out have
+ * been called to feed in a mouse enter event into the object.
+ *
+ * A return value of @c true indicates the mouse is logically inside the
+ * object, and @c false implies it is logically outside the object.
+ *
+ * If @c e is not a valid object, the return value is undefined.
+ *
+ * @return @c true if the mouse pointer is inside the object, @c false
+ * otherwise
+ *
+ * @ingroup Evas_Object
+ */
+EAPI Eina_Bool evas_object_pointer_inside_get(const Evas_Object *obj) 
EINA_WARN_UNUSED_RESULT;
+
 
 #include "canvas/efl_canvas_object.eo.legacy.h"
 
diff --git a/src/lib/evas/canvas/efl_canvas_object.eo 
b/src/lib/evas/canvas/efl_canvas_object.eo
index 7deae67d95..86c74b2431 100644
--- a/src/lib/evas/canvas/efl_canvas_object.eo
+++ b/src/lib/evas/canvas/efl_canvas_object.eo
@@ -3,7 +3,7 @@ import efl_animation_types;
 
 abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Stack, Efl.Animator,
                             Efl.Input.Interface, Efl.Gfx.Size.Hint,
-                            Efl.Gfx.Map, Efl.Loop_User, Efl.Ui.Base)
+                            Efl.Gfx.Map, Efl.Loop_User, Efl.Ui.Base, 
Efl.Canvas.Pointer)
 {
    [[Efl canvas object abstract class]]
    legacy_prefix: evas_object;
@@ -56,41 +56,6 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
             pointer_mode: Efl.Input.Object_Pointer_Mode; [[Input pointer mode]]
          }
       }
-      @property pointer_in {
-         [[Read-only value indicating whether the main pointer is in the 
object.
-
-           This shall be true between pointer,in and pointer,out events (coming
-           in matching numbers). Note that group objects may receive multiple
-           pointer,in in a row. See algo @.pointer_device_in.get
-
-           @since 1.19
-         ]]
-         get {
-            legacy: null;
-         }
-         values {
-            in: bool; [[If $true the main pointer has entered this object.]]
-         }
-      }
-      @property pointer_device_in {
-         [[Read-only value indicating whether a pointer is in the object.
-
-           This shall be true between pointer,in and pointer,out events (coming
-           in matching numbers). Note that group objects may receive multiple
-           pointer,in in a row.
-
-           @since 1.19
-         ]]
-         get {
-            legacy: null;
-         }
-         keys {
-            pointer: Efl.Input.Device; [[The pointer. Use $null for the defaul 
pointer]]
-         }
-         values {
-            in: bool; [[If $true the pointer has entered this object.]]
-         }
-      }
       @property render_op {
          [[Render mode to be used for compositing the Evas object.
 
@@ -586,36 +551,6 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
             enable: bool; [[Enable "no-render" mode.]]
          }
       }
-      @property pointer_inside_by_device {
-         [[Returns whether the mouse pointer is logically inside the
-           object. @since 1.20]]
-         keys {
-            dev: Efl.Input.Device; [[The pointer device.]]
-         }
-         get {}
-         values {
-            in: bool; [[$true if the pointer is inside, $false otherwise.]]
-         }
-      }
-      @property pointer_inside {
-         get {
-            [[Returns whether the default mouse pointer is logically inside the
-              object.
-
-              When this function is called it will return a value of either
-              $false or $true, depending on if event_feed_mouse_in or
-              event_feed_mouse_out have been called to feed in a mouse
-              enter event into the object.
-
-              A return value of $true indicates the mouse is logically
-              inside the object, and $false implies it is logically
-              outside the object.
-
-              If $e is not a valid object, the return value is undefined.
-            ]]
-            return: bool @warn_unused; [[$true if the mouse pointer is inside 
the object, $false otherwise]]
-         }
-      }
       pointer_coords_inside_get {
          [[Returns whether the coords are logically inside the
            object.
@@ -681,5 +616,6 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
       Efl.Gfx.scale { set; get; }
       Efl.Input.Interface.seat_event_filter { get; set; }
       Efl.Loop_User.loop { get; }
+      Efl.Canvas.Pointer.pointer_inside { get; }
    }
 }
diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index 8011ae3195..7e15ead38b 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -3868,9 +3868,9 @@ _efl_canvas_object_pointer_mode_get(Eo *eo_obj, 
Evas_Object_Protected_Data *obj)
 }
 
 EOLIAN Eina_Bool
-_efl_canvas_object_pointer_device_in_get(Eo *eo_obj,
-                                         Evas_Object_Protected_Data *obj,
-                                         Efl_Input_Device *pointer)
+_efl_canvas_object_efl_canvas_pointer_pointer_inside_get(Eo *eo_obj,
+                                                         
Evas_Object_Protected_Data *obj,
+                                                         Efl_Input_Device 
*pointer)
 {
    Evas_Object_Protected_Data *in, *parent;
    Eo *eo_in, *eo_parent;
@@ -3880,7 +3880,6 @@ _efl_canvas_object_pointer_device_in_get(Eo *eo_obj,
 
    EVAS_OBJECT_DATA_ALIVE_CHECK(obj, EINA_FALSE);
 
-
    if (!pointer)
      pointer = obj->layer->evas->default_mouse;
 
@@ -3893,6 +3892,10 @@ _efl_canvas_object_pointer_device_in_get(Eo *eo_obj,
    if (!obj->is_smart)
      return obj_pdata->mouse_in;
 
+   /* This is to keep the legacy APIs evas_object_pointer_inside_by_device_get 
& 
+    * evas_object_pointer_inside_get. */
+   if (obj->is_pointer_inside_legacy) return EINA_FALSE;
+
    /* For smart objects, this is a bit expensive obj->mouse_in will not be set.
     * Alternatively we could count the number of in and out events propagated
     * to the smart object, assuming they always match. */
@@ -3917,12 +3920,6 @@ _efl_canvas_object_pointer_device_in_get(Eo *eo_obj,
    return EINA_FALSE;
 }
 
-EOLIAN Eina_Bool
-_efl_canvas_object_pointer_in_get(Eo *eo_obj, Evas_Object_Protected_Data *obj)
-{
-   return _efl_canvas_object_pointer_device_in_get(eo_obj, obj, NULL);
-}
-
 EAPI void
 evas_event_refeed_event(Eo *eo_e, void *event_copy, Evas_Callback_Type 
event_type)
 {
diff --git a/src/lib/evas/canvas/evas_object_main.c 
b/src/lib/evas/canvas/evas_object_main.c
index 7ffd1d7f7e..0b6a89d0d1 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -2662,19 +2662,6 @@ _efl_canvas_object_precise_is_inside_get(Eo *eo_obj 
EINA_UNUSED, Evas_Object_Pro
 }
 
 EOLIAN static Eina_Bool
-_efl_canvas_object_pointer_inside_by_device_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj, Efl_Input_Device *dev)
-{
-   Evas_Pointer_Data *pdata;
-   Evas_Object_Pointer_Data *obj_pdata;
-
-   if (!obj->layer) return EINA_FALSE;
-   pdata = _evas_pointer_data_by_device_get(obj->layer->evas, dev);
-   if (!pdata) return EINA_FALSE;
-   obj_pdata = _evas_object_pointer_data_get(pdata, obj);
-   return obj_pdata ? obj_pdata->mouse_in : EINA_FALSE;
-}
-
-EOLIAN static Eina_Bool
 _efl_canvas_object_pointer_coords_inside_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj, Evas_Coord x, Evas_Coord y)
 {
    Eina_Rectangle c;
@@ -2695,12 +2682,6 @@ _efl_canvas_object_pointer_coords_inside_get(Eo *eo_obj 
EINA_UNUSED, Evas_Object
    return RECTS_INTERSECT(x, y, 1, 1, c.x, c.y, c.w, c.h);
 }
 
-EOLIAN static Eina_Bool
-_efl_canvas_object_pointer_inside_get(Eo *eo_obj, Evas_Object_Protected_Data 
*obj)
-{
-   return _efl_canvas_object_pointer_inside_by_device_get(eo_obj, obj, NULL);
-}
-
 static void
 _is_frame_flag_set(Evas_Object_Protected_Data *obj, Eina_Bool is_frame)
 {
@@ -2980,6 +2961,21 @@ evas_object_scale_get(const Evas_Object *obj)
    return efl_gfx_scale_get(obj);
 }
 
+EAPI Eina_Bool
+evas_object_pointer_inside_by_device_get(const Evas_Object *eo_obj, 
Efl_Input_Device *dev)
+{
+   Evas_Object_Protected_Data *obj = EVAS_OBJ_GET_OR_RETURN(eo_obj, 
EINA_FALSE);
+
+   obj->is_pointer_inside_legacy = EINA_TRUE;
+   return efl_canvas_pointer_inside_get(eo_obj, dev);
+}
+
+EAPI Eina_Bool
+evas_object_pointer_inside_get(const Evas_Object *eo_obj)
+{
+   return evas_object_pointer_inside_by_device_get(eo_obj, NULL);
+}
+
 /* Internal EO APIs and hidden overrides */
 
 EOAPI EFL_VOID_FUNC_BODY(efl_canvas_object_legacy_ctor)
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index 6753931f34..a9bd98196c 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1209,6 +1209,7 @@ struct _Evas_Object_Protected_Data
    } parent_cache;
 
    Eina_Bool                   events_filter_enabled : 1;
+   Eina_Bool                   is_pointer_inside_legacy : 1;
 };
 
 struct _Evas_Data_Node

-- 


Reply via email to