+2013-04-03 Rafael Antognolli
+
+ * Evas: Added evas_event_input_mouse_move() for internal use only.
+
2013-04-29 ChunEon Park (Hermet)
* Evas: Added evas_object_image_source_clip_set()/get().
EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_UP,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_CANCEL,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL,
+ EVAS_CANVAS_SUB_ID_EVENT_INPUT_MOUSE_MOVE,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_MOVE,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_IN,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT,
#define evas_canvas_event_feed_mouse_wheel(direction, z, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL), EO_TYPECHECK(int, direction), EO_TYPECHECK(int, z), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
/**
+ * @def evas_canvas_event_input_mouse_move
+ * @since 1.8
+ *
+ * Mouse move event feed from input.
+ *
+ * @param[in] x
+ * @param[in] y
+ * @param[in] timestamp
+ * @param[in] data
+ *
+ * @see evas_event_input_mouse_move
+ */
+#define evas_canvas_event_input_mouse_move(x, y, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MOUSE_MOVE), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+
+/**
* @def evas_canvas_event_feed_mouse_move
* @since 1.8
*
EAPI void evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
/**
+ * Mouse move event feed from input.
+ *
+ * @param e The given canvas pointer.
+ * @param x The horizontal position of the mouse pointer relative to the 0,0 of
+ * the window/surface.
+ * @param y The vertical position of the mouse pointer relative to the 0,0 of
+ * the window/surface.
+ * @param timestamp The timestamp of the mouse move event.
+ * @param data The data for canvas.
+ *
+ * Similar to the evas_event_feed_mouse_move(), this function will inform Evas
+ * about mouse move events which were received by the input system, relative to
+ * the 0,0 of the window, not to the canvas 0,0. It will take care of doing any
+ * special transformation like adding the framespace offset to the mouse event.
+ *
+ * @since 1.8
+ * @see evas_event_feed_mouse_move
+ */
+EAPI void evas_event_input_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
+
+/**
* Mouse move event feed.
*
* @param e The given canvas pointer.
_evas_unwalk(e);
}
-EAPI void
-evas_event_feed_mouse_move(Evas *eo_e, int x, int y, unsigned int timestamp, const void *data)
-{
- MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
-
- eo_do(eo_e, evas_canvas_event_feed_mouse_move(x, y, timestamp, data));
-}
-
-void
-_canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
+static void
+_canvas_event_feed_mouse_move_internal(Eo *eo_e, void *_pd, int x, int y, unsigned int timestamp, const void *data)
{
- int x = va_arg(*list, int);
- int y = va_arg(*list, int);
- unsigned int timestamp = va_arg(*list, unsigned int);
- const void *data = va_arg(*list, const void *);
-
Evas_Public_Data *e = _pd;
Evas_Object *nogrep_obj = NULL;
int px, py;
}
EAPI void
+evas_event_input_mouse_move(Evas *eo_e, int x, int y, unsigned int timestamp, const void *data)
+{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_input_mouse_move(x, y, timestamp, data));
+}
+
+void
+_canvas_event_input_mouse_move(Eo *eo_e, void *_pd, va_list *list)
+{
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+ Evas_Public_Data *e = _pd;
+
+ _canvas_event_feed_mouse_move_internal(eo_e, _pd, x - e->framespace.x, y - e->framespace.y, timestamp, data);
+}
+
+EAPI void
+evas_event_feed_mouse_move(Evas *eo_e, int x, int y, unsigned int timestamp, const void *data)
+{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_feed_mouse_move(x, y, timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
+{
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ _canvas_event_feed_mouse_move_internal(eo_e, _pd, x, y, timestamp, data);
+}
+
+EAPI void
evas_event_feed_mouse_in(Evas *eo_e, unsigned int timestamp, const void *data)
{
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_UP), _canvas_event_feed_mouse_up),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_CANCEL), _canvas_event_feed_mouse_cancel),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL), _canvas_event_feed_mouse_wheel),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MOUSE_MOVE), _canvas_event_input_mouse_move),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_MOVE), _canvas_event_feed_mouse_move),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_IN), _canvas_event_feed_mouse_in),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT), _canvas_event_feed_mouse_out),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_UP, "Mouse up event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_CANCEL, "Mouse cancel event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL, "Mouse wheel event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MOUSE_MOVE, "Mouse move event fed from input (only Ecore_Evas_Input should use it)."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_MOVE, "Mouse move event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_IN, "Mouse in event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT, "Mouse out event feed."),
void _canvas_event_feed_mouse_up(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_mouse_cancel(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_mouse_wheel(Eo *e, void *_pd, va_list *list);
+void _canvas_event_input_mouse_move(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_mouse_move(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_mouse_in(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_mouse_out(Eo *e, void *_pd, va_list *list);