summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2016-11-07 18:41:55 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2016-11-08 14:15:14 +0900
commit0c850f67ceb772c92637e7826baf9f39bbc8001a (patch)
treeb49bf4bc764b35051e5a74e1ef96cfa8ad4ffa7c
parent8687a23820f6287ba1e69024cb98cd526003eef7 (diff)
downloadefl-0c850f67ceb772c92637e7826baf9f39bbc8001a.tar.gz
evas: Fix previous pointer position in output coords
This fixes the test "Window Socket" map resize. I broke that in 40fec5f608da4c5188a2afc7cc293d4f Makes me wonder if the previous position should be exposed in EO as well.
-rw-r--r--src/lib/evas/canvas/evas_events.c2
-rw-r--r--src/lib/evas/canvas/evas_events_legacy.c8
-rw-r--r--src/lib/evas/include/evas_private.h1
3 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c
index fd2f89fbc7..b345a7aa5c 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -1732,6 +1732,8 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
e->last_timestamp = ev->timestamp;
// prev pos
+ e->pointer.prev.x = e->pointer.x;
+ e->pointer.prev.y = e->pointer.y;
px = ev->prev.x = e->pointer.x;
py = ev->prev.y = e->pointer.y;
diff --git a/src/lib/evas/canvas/evas_events_legacy.c b/src/lib/evas/canvas/evas_events_legacy.c
index 9c57bb444e..aa7b1b752b 100644
--- a/src/lib/evas/canvas/evas_events_legacy.c
+++ b/src/lib/evas/canvas/evas_events_legacy.c
@@ -41,6 +41,8 @@ efl_input_pointer_legacy_info_fill(Evas *eo_evas, Efl_Input_Key *eo_ev, Evas_Cal
if (!ev || !evas) return NULL;
#define COORD_DUP(e) do { (e)->output.x = evas->pointer.x; (e)->output.y = evas->pointer.y; } while (0)
+#define COORD_DUP_CUR(e) do { (e)->cur.output.x = evas->pointer.x; (e)->cur.output.y = evas->pointer.y; } while (0)
+#define COORD_DUP_PREV(e) do { (e)->prev.output.x = evas->pointer.prev.x; (e)->prev.output.y = evas->pointer.prev.y; } while (0)
#define TYPE_CHK(typ) do { if (type != EVAS_CALLBACK_ ## typ) return NULL; } while (0)
switch (ev->action)
@@ -196,10 +198,10 @@ efl_input_pointer_legacy_info_fill(Evas *eo_evas, Efl_Input_Key *eo_ev, Evas_Cal
e->buttons = ev->pressed_buttons;
e->cur.canvas.x = ev->cur.x;
e->cur.canvas.y = ev->cur.y;
- COORD_DUP(&e->cur);
e->prev.canvas.x = ev->prev.x;
e->prev.canvas.y = ev->prev.y;
- COORD_DUP(&e->prev);
+ COORD_DUP_CUR(e);
+ COORD_DUP_PREV(e);
e->data = ev->data;
e->timestamp = ev->timestamp;
e->event_flags = ev->event_flags;
@@ -225,7 +227,7 @@ efl_input_pointer_legacy_info_fill(Evas *eo_evas, Efl_Input_Key *eo_ev, Evas_Cal
e->cur.canvas.ysub = ev->cur.y;
e->cur.canvas.x = ev->cur.x;
e->cur.canvas.y = ev->cur.y;
- COORD_DUP(&e->cur);
+ COORD_DUP_CUR(e);
e->data = ev->data;
e->timestamp = ev->timestamp;
e->event_flags = ev->event_flags;
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index 5271ac5805..5d7168451c 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -800,6 +800,7 @@ struct _Evas_Public_Data
int downs;
DATA32 button;
Evas_Coord x, y;
+ Evas_Point prev;
int nogrep;
struct {
Eina_List *in;