summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2016-08-29 17:04:31 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2016-08-30 15:13:40 +0900
commit2edf50cb10f6ce5e6fc8b04492413c41678e7d85 (patch)
tree1a73fb0d7553816201cedd3861e99138db8c57ac
parent68be4f49ed924977ae72d1d109fb553cdcfc8001 (diff)
evas events: Properly signal to clients which values are set
Since pointer events are all the same thing, users may not know what values are valid for what kind of event. Eventually we want to expose more information, but we also need a way to inform the caller about the validity of the values we get.
-rw-r--r--src/lib/efl/interfaces/efl_common_internal.h6
-rw-r--r--src/lib/evas/canvas/efl_input_pointer.c11
-rw-r--r--src/lib/evas/canvas/evas_events.c91
3 files changed, 105 insertions, 3 deletions
diff --git a/src/lib/efl/interfaces/efl_common_internal.h b/src/lib/efl/interfaces/efl_common_internal.h
index 07d62367d4..d6c51de0ae 100644
--- a/src/lib/efl/interfaces/efl_common_internal.h
+++ b/src/lib/efl/interfaces/efl_common_internal.h
@@ -107,13 +107,15 @@ struct _Efl_Input_Hold_Data
107static inline Eina_Bool 107static inline Eina_Bool
108_efl_input_value_has(const Efl_Input_Pointer_Data *pd, Efl_Input_Value key) 108_efl_input_value_has(const Efl_Input_Pointer_Data *pd, Efl_Input_Value key)
109{ 109{
110 return (pd->value_flags & (1 << (int) key)) != 0; 110 return (pd->value_flags & (1u << (int) key)) != 0;
111} 111}
112 112
113static inline void 113static inline void
114_efl_input_value_mark(Efl_Input_Pointer_Data *pd, Efl_Input_Value key) 114_efl_input_value_mark(Efl_Input_Pointer_Data *pd, Efl_Input_Value key)
115{ 115{
116 pd->value_flags |= (1 << (int) key); 116 pd->value_flags |= (1u << (int) key);
117} 117}
118 118
119#define _efl_input_value_mask(key) (1u << (int) key)
120
119#endif 121#endif
diff --git a/src/lib/evas/canvas/efl_input_pointer.c b/src/lib/evas/canvas/efl_input_pointer.c
index dd055a1572..cd06f7d5e6 100644
--- a/src/lib/evas/canvas/efl_input_pointer.c
+++ b/src/lib/evas/canvas/efl_input_pointer.c
@@ -147,6 +147,7 @@ _efl_input_pointer_action_get(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd)
147EOLIAN static void 147EOLIAN static void
148_efl_input_pointer_button_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int but) 148_efl_input_pointer_button_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int but)
149{ 149{
150 _efl_input_value_mark(pd, EFL_INPUT_VALUE_BUTTON);
150 pd->button = but; 151 pd->button = but;
151} 152}
152 153
@@ -161,6 +162,7 @@ _efl_input_pointer_button_pressed_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Dat
161{ 162{
162 if (button < 0) return; 163 if (button < 0) return;
163 if (button > 31) return; 164 if (button > 31) return;
165 _efl_input_value_mark(pd, EFL_INPUT_VALUE_BUTTONS_PRESSED);
164 if (pressed) 166 if (pressed)
165 pd->button_flags |= (1 << button); 167 pd->button_flags |= (1 << button);
166 else 168 else
@@ -178,6 +180,8 @@ _efl_input_pointer_button_pressed_get(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Dat
178EOLIAN static void 180EOLIAN static void
179_efl_input_pointer_position_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int x, int y) 181_efl_input_pointer_position_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int x, int y)
180{ 182{
183 _efl_input_value_mark(pd, EFL_INPUT_VALUE_X);
184 _efl_input_value_mark(pd, EFL_INPUT_VALUE_Y);
181 pd->cur.x = (double) x; 185 pd->cur.x = (double) x;
182 pd->cur.y = (double) y; 186 pd->cur.y = (double) y;
183} 187}
@@ -192,6 +196,8 @@ _efl_input_pointer_position_get(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd,
192EOLIAN static void 196EOLIAN static void
193_efl_input_pointer_previous_position_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int x, int y) 197_efl_input_pointer_previous_position_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int x, int y)
194{ 198{
199 _efl_input_value_mark(pd, EFL_INPUT_VALUE_PREVIOUS_X);
200 _efl_input_value_mark(pd, EFL_INPUT_VALUE_PREVIOUS_Y);
195 pd->prev.x = (double) x; 201 pd->prev.x = (double) x;
196 pd->prev.y = (double) y; 202 pd->prev.y = (double) y;
197} 203}
@@ -264,6 +270,7 @@ _efl_input_pointer_efl_input_event_event_flags_get(Eo *obj EINA_UNUSED, Efl_Inpu
264EOLIAN static void 270EOLIAN static void
265_efl_input_pointer_efl_input_event_timestamp_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, double ms) 271_efl_input_pointer_efl_input_event_timestamp_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, double ms)
266{ 272{
273 _efl_input_value_mark(pd, EFL_INPUT_VALUE_TIMESTAMP);
267 pd->timestamp = (unsigned int) ms; 274 pd->timestamp = (unsigned int) ms;
268} 275}
269 276
@@ -276,6 +283,7 @@ _efl_input_pointer_efl_input_event_timestamp_get(Eo *obj EINA_UNUSED, Efl_Input_
276EOLIAN static void 283EOLIAN static void
277_efl_input_pointer_wheel_direction_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, Efl_Orient dir) 284_efl_input_pointer_wheel_direction_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, Efl_Orient dir)
278{ 285{
286 _efl_input_value_mark(pd, EFL_INPUT_VALUE_WHEEL_DIRECTION);
279 pd->wheel.dir = dir; 287 pd->wheel.dir = dir;
280} 288}
281 289
@@ -288,6 +296,7 @@ _efl_input_pointer_wheel_direction_get(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Da
288EOLIAN static void 296EOLIAN static void
289_efl_input_pointer_wheel_delta_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int dist) 297_efl_input_pointer_wheel_delta_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int dist)
290{ 298{
299 _efl_input_value_mark(pd, EFL_INPUT_VALUE_WHEEL_DELTA);
291 pd->wheel.z = dist; 300 pd->wheel.z = dist;
292} 301}
293 302
@@ -306,6 +315,7 @@ _efl_input_pointer_tool_get(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd)
306EOLIAN static void 315EOLIAN static void
307_efl_input_pointer_tool_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int id) 316_efl_input_pointer_tool_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, int id)
308{ 317{
318 _efl_input_value_mark(pd, EFL_INPUT_VALUE_TOOL);
309 pd->tool = id; 319 pd->tool = id;
310} 320}
311 321
@@ -465,6 +475,7 @@ _efl_input_pointer_value_set(Eo *obj EINA_UNUSED, Efl_Input_Pointer_Data *pd, Ef
465 return EINA_FALSE; 475 return EINA_FALSE;
466 } 476 }
467 477
478 _efl_input_value_mark(pd, key);
468 return EINA_TRUE; 479 return EINA_TRUE;
469} 480}
470 481
diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c
index 2075eb2170..b390c609a4 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -1209,6 +1209,13 @@ _canvas_event_feed_mouse_down_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
1209 Evas *eo_e; 1209 Evas *eo_e;
1210 int addgrab = 0; 1210 int addgrab = 0;
1211 1211
1212 static const int value_flags =
1213 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
1214 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
1215 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
1216 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL) |
1217 _efl_input_value_mask(EFL_INPUT_VALUE_BUTTON);
1218
1212 if (!e || !ev) return; 1219 if (!e || !ev) return;
1213 1220
1214 b = ev->button; 1221 b = ev->button;
@@ -1232,6 +1239,8 @@ _canvas_event_feed_mouse_down_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
1232 ev->locks = &(e->locks); 1239 ev->locks = &(e->locks);
1233 ev->event_flags = e->default_event_flags; 1240 ev->event_flags = e->default_event_flags;
1234 ev->tool = 0; 1241 ev->tool = 0;
1242 ev->action = EFL_POINTER_ACTION_DOWN;
1243 ev->value_flags |= value_flags;
1235 if (ev->device) efl_ref(ev->device); 1244 if (ev->device) efl_ref(ev->device);
1236 1245
1237 _evas_walk(e); 1246 _evas_walk(e);
@@ -1408,6 +1417,13 @@ _canvas_event_feed_mouse_up_internal(Evas_Public_Data *e, Efl_Input_Pointer_Data
1408 int event_id, b; 1417 int event_id, b;
1409 Evas *eo_e; 1418 Evas *eo_e;
1410 1419
1420 static const int value_flags =
1421 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
1422 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
1423 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
1424 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL) |
1425 _efl_input_value_mask(EFL_INPUT_VALUE_BUTTON);
1426
1411 if (!e || !ev) return; 1427 if (!e || !ev) return;
1412 1428
1413 b = ev->button; 1429 b = ev->button;
@@ -1432,6 +1448,7 @@ _canvas_event_feed_mouse_up_internal(Evas_Public_Data *e, Efl_Input_Pointer_Data
1432 ev->locks = &(e->locks); 1448 ev->locks = &(e->locks);
1433 ev->event_flags = e->default_event_flags; 1449 ev->event_flags = e->default_event_flags;
1434 ev->tool = 0; 1450 ev->tool = 0;
1451 ev->value_flags |= value_flags;
1435 if (ev->device) efl_ref(ev->device); 1452 if (ev->device) efl_ref(ev->device);
1436 1453
1437 _evas_walk(e); 1454 _evas_walk(e);
@@ -1552,6 +1569,12 @@ _canvas_event_feed_mouse_cancel_internal(Evas_Public_Data *e, Efl_Input_Pointer_
1552 Evas *eo_e; 1569 Evas *eo_e;
1553 int i; 1570 int i;
1554 1571
1572 static const int value_flags =
1573 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
1574 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
1575 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
1576 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL);
1577
1555 if (!e || !ev) return; 1578 if (!e || !ev) return;
1556 if (e->is_frozen) return; 1579 if (e->is_frozen) return;
1557 1580
@@ -1568,13 +1591,15 @@ _canvas_event_feed_mouse_cancel_internal(Evas_Public_Data *e, Efl_Input_Pointer_
1568 _canvas_event_feed_mouse_updown_legacy(eo_e, i + 1, 0, ev->timestamp, ev->data, 0); 1591 _canvas_event_feed_mouse_updown_legacy(eo_e, i + 1, 0, ev->timestamp, ev->data, 0);
1569 } 1592 }
1570 1593
1594 ev->action = EFL_POINTER_ACTION_CANCEL;
1595 ev->value_flags |= value_flags;
1571 ev->event_flags = flags; 1596 ev->event_flags = flags;
1572 EINA_LIST_FOREACH_SAFE(e->touch_points, l, ll, point) 1597 EINA_LIST_FOREACH_SAFE(e->touch_points, l, ll, point)
1573 { 1598 {
1574 if ((point->state == EVAS_TOUCH_POINT_DOWN) || 1599 if ((point->state == EVAS_TOUCH_POINT_DOWN) ||
1575 (point->state == EVAS_TOUCH_POINT_MOVE)) 1600 (point->state == EVAS_TOUCH_POINT_MOVE))
1576 { 1601 {
1577 ev->button = point->id; 1602 ev->tool = point->id;
1578 ev->cur.x = point->x; 1603 ev->cur.x = point->x;
1579 ev->cur.y = point->y; 1604 ev->cur.y = point->y;
1580 _canvas_event_feed_multi_up_internal(e, ev); 1605 _canvas_event_feed_multi_up_internal(e, ev);
@@ -1616,6 +1641,13 @@ _canvas_event_feed_mouse_wheel_internal(Eo *eo_e, Efl_Input_Pointer_Data *pe)
1616 Evas_Object *eo_obj; 1641 Evas_Object *eo_obj;
1617 int event_id = 0; 1642 int event_id = 0;
1618 1643
1644 static const int value_flags =
1645 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
1646 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
1647 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
1648 _efl_input_value_mask(EFL_INPUT_VALUE_WHEEL_DELTA) |
1649 _efl_input_value_mask(EFL_INPUT_VALUE_WHEEL_DIRECTION);
1650
1619 if (e->is_frozen) return; 1651 if (e->is_frozen) return;
1620 e->last_timestamp = pe->timestamp; 1652 e->last_timestamp = pe->timestamp;
1621 1653
@@ -1633,6 +1665,7 @@ _canvas_event_feed_mouse_wheel_internal(Eo *eo_e, Efl_Input_Pointer_Data *pe)
1633 ev->event_flags = e->default_event_flags; 1665 ev->event_flags = e->default_event_flags;
1634 ev->device = efl_ref(_evas_device_top_get(eo_e)); 1666 ev->device = efl_ref(_evas_device_top_get(eo_e));
1635 ev->action = EFL_POINTER_ACTION_WHEEL; 1667 ev->action = EFL_POINTER_ACTION_WHEEL;
1668 ev->value_flags |= value_flags;
1636 1669
1637 _evas_walk(e); 1670 _evas_walk(e);
1638 copy = evas_event_list_copy(e->pointer.object.in); 1671 copy = evas_event_list_copy(e->pointer.object.in);
@@ -1691,6 +1724,18 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
1691 int event_id; 1724 int event_id;
1692 int x, y, px, py; 1725 int x, y, px, py;
1693 1726
1727 // inform which values are valid
1728 static const int value_flags =
1729 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
1730 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
1731 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
1732 _efl_input_value_mask(EFL_INPUT_VALUE_PREVIOUS_X) |
1733 _efl_input_value_mask(EFL_INPUT_VALUE_PREVIOUS_Y) |
1734 _efl_input_value_mask(EFL_INPUT_VALUE_DX) |
1735 _efl_input_value_mask(EFL_INPUT_VALUE_DY) |
1736 _efl_input_value_mask(EFL_INPUT_VALUE_BUTTONS_PRESSED) |
1737 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL);
1738
1694 if (!e || !ev) return; 1739 if (!e || !ev) return;
1695 if (e->is_frozen) return; 1740 if (e->is_frozen) return;
1696 1741
@@ -1714,6 +1759,7 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
1714 ev->event_flags = e->default_event_flags; 1759 ev->event_flags = e->default_event_flags;
1715 ev->pressed_buttons = e->pointer.button; 1760 ev->pressed_buttons = e->pointer.button;
1716 ev->tool = 0; 1761 ev->tool = 0;
1762 ev->value_flags |= value_flags;
1717 if (ev->device) efl_ref(ev->device); 1763 if (ev->device) efl_ref(ev->device);
1718 1764
1719 _evas_walk(e); 1765 _evas_walk(e);
@@ -2073,6 +2119,13 @@ _canvas_event_feed_mouse_in_internal(Evas *eo_e, Efl_Input_Pointer_Data *ev)
2073 Evas_Object *eo_obj; 2119 Evas_Object *eo_obj;
2074 int event_id; 2120 int event_id;
2075 2121
2122 static const int value_flags =
2123 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
2124 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
2125 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
2126 _efl_input_value_mask(EFL_INPUT_VALUE_BUTTONS_PRESSED) |
2127 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL);
2128
2076 if (!e || !ev) return; 2129 if (!e || !ev) return;
2077 2130
2078 e->pointer.inside = 1; 2131 e->pointer.inside = 1;
@@ -2089,6 +2142,7 @@ _canvas_event_feed_mouse_in_internal(Evas *eo_e, Efl_Input_Pointer_Data *ev)
2089 ev->modifiers = &(e->modifiers); 2142 ev->modifiers = &(e->modifiers);
2090 ev->locks = &(e->locks); 2143 ev->locks = &(e->locks);
2091 ev->event_flags = e->default_event_flags; 2144 ev->event_flags = e->default_event_flags;
2145 ev->value_flags |= value_flags;
2092 if (ev->device) efl_ref(ev->device); 2146 if (ev->device) efl_ref(ev->device);
2093 2147
2094 event_id = _evas_object_event_new(); 2148 event_id = _evas_object_event_new();
@@ -2133,6 +2187,13 @@ _canvas_event_feed_mouse_out_internal(Evas *eo_e, Efl_Input_Pointer_Data *ev)
2133 Evas_Object *eo_obj; 2187 Evas_Object *eo_obj;
2134 int event_id; 2188 int event_id;
2135 2189
2190 static const int value_flags =
2191 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
2192 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
2193 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
2194 _efl_input_value_mask(EFL_INPUT_VALUE_BUTTONS_PRESSED) |
2195 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL);
2196
2136 if (!e || !ev) return; 2197 if (!e || !ev) return;
2137 e->pointer.inside = 0; 2198 e->pointer.inside = 0;
2138 2199
@@ -2149,6 +2210,7 @@ _canvas_event_feed_mouse_out_internal(Evas *eo_e, Efl_Input_Pointer_Data *ev)
2149 ev->modifiers = &(e->modifiers); 2210 ev->modifiers = &(e->modifiers);
2150 ev->locks = &(e->locks); 2211 ev->locks = &(e->locks);
2151 ev->event_flags = e->default_event_flags; 2212 ev->event_flags = e->default_event_flags;
2213 ev->value_flags |= value_flags;
2152 if (ev->device) efl_ref(ev->device); 2214 if (ev->device) efl_ref(ev->device);
2153 2215
2154 _evas_walk(e); 2216 _evas_walk(e);
@@ -2231,6 +2293,13 @@ _canvas_event_feed_multi_down_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
2231 int event_id; 2293 int event_id;
2232 int addgrab = 0; 2294 int addgrab = 0;
2233 2295
2296 static const int value_flags =
2297 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
2298 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
2299 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
2300 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL) |
2301 _efl_input_value_mask(EFL_INPUT_VALUE_BUTTON);
2302
2234 if (!e || !ev) return; 2303 if (!e || !ev) return;
2235 2304
2236 eo_e = e->evas; 2305 eo_e = e->evas;
@@ -2248,6 +2317,7 @@ _canvas_event_feed_multi_down_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
2248 ev->modifiers = &(e->modifiers); 2317 ev->modifiers = &(e->modifiers);
2249 ev->locks = &(e->locks); 2318 ev->locks = &(e->locks);
2250 ev->event_flags = e->default_event_flags; 2319 ev->event_flags = e->default_event_flags;
2320 ev->value_flags |= value_flags;
2251 if (ev->device) efl_ref(ev->device); 2321 if (ev->device) efl_ref(ev->device);
2252 2322
2253 _evas_walk(e); 2323 _evas_walk(e);
@@ -2298,6 +2368,12 @@ _canvas_event_feed_multi_up_internal(Evas_Public_Data *e, Efl_Input_Pointer_Data
2298 Evas *eo_e; 2368 Evas *eo_e;
2299 int event_id; 2369 int event_id;
2300 2370
2371 static const int value_flags =
2372 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
2373 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
2374 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
2375 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL);
2376
2301 if (!e || !ev) return; 2377 if (!e || !ev) return;
2302 2378
2303 eo_e = e->evas; 2379 eo_e = e->evas;
@@ -2316,6 +2392,7 @@ _canvas_event_feed_multi_up_internal(Evas_Public_Data *e, Efl_Input_Pointer_Data
2316 ev->modifiers = &(e->modifiers); 2392 ev->modifiers = &(e->modifiers);
2317 ev->locks = &(e->locks); 2393 ev->locks = &(e->locks);
2318 ev->event_flags = e->default_event_flags; 2394 ev->event_flags = e->default_event_flags;
2395 ev->value_flags |= value_flags;
2319 if (ev->device) efl_ref(ev->device); 2396 if (ev->device) efl_ref(ev->device);
2320 2397
2321 _evas_walk(e); 2398 _evas_walk(e);
@@ -2453,6 +2530,13 @@ _canvas_event_feed_multi_move_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
2453 Evas *eo_e; 2530 Evas *eo_e;
2454 int event_id; 2531 int event_id;
2455 2532
2533 /* FIXME: Add previous x,y information (from evas touch point list) */
2534 static const int value_flags =
2535 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP) |
2536 _efl_input_value_mask(EFL_INPUT_VALUE_X) |
2537 _efl_input_value_mask(EFL_INPUT_VALUE_Y) |
2538 _efl_input_value_mask(EFL_INPUT_VALUE_TOOL);
2539
2456 if (!e || !ev) return; 2540 if (!e || !ev) return;
2457 2541
2458 eo_e = e->evas; 2542 eo_e = e->evas;
@@ -2468,6 +2552,7 @@ _canvas_event_feed_multi_move_internal(Evas_Public_Data *e, Efl_Input_Pointer_Da
2468 ev->locks = &(e->locks); 2552 ev->locks = &(e->locks);
2469 ev->event_flags = e->default_event_flags; 2553 ev->event_flags = e->default_event_flags;
2470 ev->action = EFL_POINTER_ACTION_MOVE; 2554 ev->action = EFL_POINTER_ACTION_MOVE;
2555 ev->value_flags |= value_flags;
2471 if (ev->device) efl_ref(ev->device); 2556 if (ev->device) efl_ref(ev->device);
2472 2557
2473 point = ev->cur; 2558 point = ev->cur;
@@ -2886,6 +2971,9 @@ _canvas_event_feed_axis_update_internal(Evas_Public_Data *e, Efl_Input_Pointer_D
2886 int event_id = 0; 2971 int event_id = 0;
2887 Evas *eo_e; 2972 Evas *eo_e;
2888 2973
2974 static const int value_flags =
2975 _efl_input_value_mask(EFL_INPUT_VALUE_TIMESTAMP);
2976
2889 if (!e || !ev) return; 2977 if (!e || !ev) return;
2890 if (e->is_frozen) return; 2978 if (e->is_frozen) return;
2891 2979
@@ -2893,6 +2981,7 @@ _canvas_event_feed_axis_update_internal(Evas_Public_Data *e, Efl_Input_Pointer_D
2893 e->last_timestamp = ev->timestamp; 2981 e->last_timestamp = ev->timestamp;
2894 2982
2895 ev->action = EFL_POINTER_ACTION_AXIS; 2983 ev->action = EFL_POINTER_ACTION_AXIS;
2984 ev->value_flags |= value_flags;
2896 event_id = _evas_object_event_new(); 2985 event_id = _evas_object_event_new();
2897 evt = ev->eo; 2986 evt = ev->eo;
2898 2987