summaryrefslogtreecommitdiff
path: root/legacy/evas/src/lib
diff options
context:
space:
mode:
authorChunEon Park <hermet@hermet.pe.kr>2012-10-26 05:52:42 +0000
committerChunEon Park <hermet@hermet.pe.kr>2012-10-26 05:52:42 +0000
commite524d69b7805c95cc151df7c935603e6f13ba1ae (patch)
treef828b28210577d70e88fd322ca610661ef51189f /legacy/evas/src/lib
parentf31332d6bebdd9c6e327c73fb9fb257577a98235 (diff)
evas/events - refactoring for optimization events handling (lazy processing)
SVN revision: 78500
Diffstat (limited to 'legacy/evas/src/lib')
-rw-r--r--legacy/evas/src/lib/canvas/evas_events.c320
1 files changed, 158 insertions, 162 deletions
diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c
index 0bdbc47..c78f7be 100644
--- a/legacy/evas/src/lib/canvas/evas_events.c
+++ b/legacy/evas/src/lib/canvas/evas_events.c
@@ -732,28 +732,27 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data)
732 EINA_LIST_FOREACH(copy, ll, eo_obj) 732 EINA_LIST_FOREACH(copy, ll, eo_obj)
733 { 733 {
734 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 734 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
735 ev.canvas.x = e->pointer.x; 735 if ((!eina_list_data_find(ins, eo_obj)) || (!e->pointer.inside))
736 ev.canvas.y = e->pointer.y;
737 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
738 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
739 if ((!eina_list_data_find(ins, eo_obj)) ||
740 (!e->pointer.inside))
741 { 736 {
742 if (obj->mouse_in) 737 if (!obj->mouse_in) continue;
738 obj->mouse_in = 0;
739 if (!e->is_frozen)
743 { 740 {
744 obj->mouse_in = 0; 741 ev.canvas.x = e->pointer.x;
745 if (!e->is_frozen) 742 ev.canvas.y = e->pointer.y;
746 { 743 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
747 evas_object_event_callback_call(eo_obj, obj, 744 &ev.canvas.y);
748 EVAS_CALLBACK_MOUSE_OUT, 745 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
749 &ev, event_id); 746 &ev.canvas.y, obj->mouse_grabbed);
750 if ((obj->proxy.is_proxy) && (obj->proxy.src_events)) 747 evas_object_event_callback_call(eo_obj, obj,
751 _evas_event_source_mouse_out_events(eo_obj, &ev, 748 EVAS_CALLBACK_MOUSE_OUT,
752 event_id); 749 &ev, event_id);
753 } 750 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
751 _evas_event_source_mouse_out_events(eo_obj, &ev,
752 event_id);
753 if (e->delete_me) break;
754 } 754 }
755 } 755 }
756 if (e->delete_me) break;
757 } 756 }
758 _evas_post_event_callback_call(eo_e, e); 757 _evas_post_event_callback_call(eo_e, e);
759 758
@@ -780,28 +779,28 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data)
780 EINA_LIST_FOREACH(ins, l, eo_obj_itr) 779 EINA_LIST_FOREACH(ins, l, eo_obj_itr)
781 { 780 {
782 Evas_Object_Protected_Data *obj_itr = eo_data_get(eo_obj_itr, EVAS_OBJ_CLASS); 781 Evas_Object_Protected_Data *obj_itr = eo_data_get(eo_obj_itr, EVAS_OBJ_CLASS);
783 ev_in.canvas.x = e->pointer.x;
784 ev_in.canvas.y = e->pointer.y;
785 _evas_event_framespace_adjust(eo_obj_itr, &ev_in.canvas.x, &ev_in.canvas.y);
786 _evas_event_havemap_adjust(eo_obj_itr, obj_itr, &ev_in.canvas.x, &ev_in.canvas.y, obj_itr->mouse_grabbed);
787 if (!eina_list_data_find(e->pointer.object.in, eo_obj_itr)) 782 if (!eina_list_data_find(e->pointer.object.in, eo_obj_itr))
788 { 783 {
789 if (!obj_itr->mouse_in) 784 if (obj_itr->mouse_in) continue;
790 { 785 obj_itr->mouse_in = 1;
791 obj_itr->mouse_in = 1; 786 if (e->is_frozen) continue;
792 if (!e->is_frozen) 787 ev_in.canvas.x = e->pointer.x;
793 { 788 ev_in.canvas.y = e->pointer.y;
794 evas_object_event_callback_call(eo_obj_itr, obj_itr, 789 _evas_event_framespace_adjust(eo_obj_itr, &ev_in.canvas.x,
795 EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id); 790 &ev_in.canvas.y);
796 if ((obj_itr->proxy.is_proxy) && 791 _evas_event_havemap_adjust(eo_obj_itr, obj_itr,
797 (obj_itr->proxy.src_events)) 792 &ev_in.canvas.x, &ev_in.canvas.y,
798 _evas_event_source_mouse_in_events(eo_obj_itr, 793 obj_itr->mouse_grabbed);
799 &ev_in, 794 evas_object_event_callback_call(eo_obj_itr, obj_itr,
800 event_id); 795 EVAS_CALLBACK_MOUSE_IN,
801 } 796 &ev_in, event_id);
802 } 797 if ((obj_itr->proxy.is_proxy) &&
798 (obj_itr->proxy.src_events))
799 _evas_event_source_mouse_in_events(eo_obj_itr,
800 &ev_in,
801 event_id);
802 if (e->delete_me) break;
803 } 803 }
804 if (e->delete_me) break;
805 } 804 }
806 post_called = 1; 805 post_called = 1;
807 _evas_post_event_callback_call(eo_e, e); 806 _evas_post_event_callback_call(eo_e, e);
@@ -888,10 +887,6 @@ _canvas_event_feed_mouse_up(Eo *eo_e, void *_pd, va_list *list)
888 EINA_LIST_FOREACH(copy, l, eo_obj) 887 EINA_LIST_FOREACH(copy, l, eo_obj)
889 { 888 {
890 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 889 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
891 ev.canvas.x = e->pointer.x;
892 ev.canvas.y = e->pointer.y;
893 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
894 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
895 if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) && 890 if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) &&
896 (obj->mouse_grabbed > 0)) 891 (obj->mouse_grabbed > 0))
897 { 892 {
@@ -903,15 +898,22 @@ _canvas_event_feed_mouse_up(Eo *eo_e, void *_pd, va_list *list)
903 if ((!e->is_frozen) && 898 if ((!e->is_frozen) &&
904 (!evas_event_freezes_through(eo_obj, obj))) 899 (!evas_event_freezes_through(eo_obj, obj)))
905 { 900 {
901 ev.canvas.x = e->pointer.x;
902 ev.canvas.y = e->pointer.y;
903 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
904 &ev.canvas.y);
905 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
906 &ev.canvas.y,
907 obj->mouse_grabbed);
906 evas_object_event_callback_call(eo_obj, obj, 908 evas_object_event_callback_call(eo_obj, obj,
907 EVAS_CALLBACK_MOUSE_UP, 909 EVAS_CALLBACK_MOUSE_UP,
908 &ev, event_id); 910 &ev, event_id);
909 if ((obj->proxy.is_proxy) && (obj->proxy.src_events)) 911 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
910 _evas_event_source_mouse_up_events(eo_obj, &ev, 912 _evas_event_source_mouse_up_events(eo_obj, &ev,
911 event_id); 913 event_id);
914 if (e->delete_me) break;
912 } 915 }
913 } 916 }
914 if (e->delete_me) break;
915 if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) 917 if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
916 { 918 {
917 if (e->pointer.nogrep > 0) e->pointer.nogrep--; 919 if (e->pointer.nogrep > 0) e->pointer.nogrep--;
@@ -1021,19 +1023,20 @@ _canvas_event_feed_mouse_wheel(Eo *eo_e, void *_pd, va_list *list)
1021 EINA_LIST_FOREACH(copy, l, eo_obj) 1023 EINA_LIST_FOREACH(copy, l, eo_obj)
1022 { 1024 {
1023 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1025 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1024 ev.canvas.x = e->pointer.x; 1026 if (!evas_event_freezes_through(eo_obj, obj))
1025 ev.canvas.y = e->pointer.y;
1026 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
1027 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
1028 if ((!e->is_frozen) && !evas_event_freezes_through(eo_obj, obj))
1029 { 1027 {
1028 ev.canvas.x = e->pointer.x;
1029 ev.canvas.y = e->pointer.y;
1030 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
1031 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
1032 obj->mouse_grabbed);
1030 evas_object_event_callback_call(eo_obj, obj, 1033 evas_object_event_callback_call(eo_obj, obj,
1031 EVAS_CALLBACK_MOUSE_WHEEL, &ev, 1034 EVAS_CALLBACK_MOUSE_WHEEL, &ev,
1032 event_id); 1035 event_id);
1033 if ((obj->proxy.is_proxy) && (obj->proxy.src_events)) 1036 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
1034 _evas_event_source_wheel_events(eo_obj, &ev, event_id); 1037 _evas_event_source_wheel_events(eo_obj, &ev, event_id);
1038 if (e->delete_me || e->is_frozen) break;
1035 } 1039 }
1036 if (e->delete_me) break;
1037 } 1040 }
1038 if (copy) copy = eina_list_free(copy); 1041 if (copy) copy = eina_list_free(copy);
1039 _evas_post_event_callback_call(eo_e, e); 1042 _evas_post_event_callback_call(eo_e, e);
@@ -1119,12 +1122,6 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
1119 EINA_LIST_FOREACH(copy, l, eo_obj) 1122 EINA_LIST_FOREACH(copy, l, eo_obj)
1120 { 1123 {
1121 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1124 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1122 ev.cur.canvas.x = e->pointer.x;
1123 ev.cur.canvas.y = e->pointer.y;
1124 _evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
1125 _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x,
1126 &ev.cur.canvas.y,
1127 obj->mouse_grabbed);
1128 if ((!e->is_frozen) && 1125 if ((!e->is_frozen) &&
1129 (evas_object_clippers_is_visible(eo_obj, obj) || 1126 (evas_object_clippers_is_visible(eo_obj, obj) ||
1130 obj->mouse_grabbed) && 1127 obj->mouse_grabbed) &&
@@ -1133,13 +1130,22 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
1133 (!evas_object_is_source_invisible(eo_obj, obj)) && 1130 (!evas_object_is_source_invisible(eo_obj, obj)) &&
1134 (!obj->clip.clipees)) 1131 (!obj->clip.clipees))
1135 { 1132 {
1133 ev.cur.canvas.x = e->pointer.x;
1134 ev.cur.canvas.y = e->pointer.y;
1135 _evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x,
1136 &ev.cur.canvas.y);
1137 _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x,
1138 &ev.cur.canvas.y,
1139 obj->mouse_grabbed);
1140
1136 if ((px != x) || (py != y)) 1141 if ((px != x) || (py != y))
1137 { 1142 {
1138 evas_object_event_callback_call(eo_obj, obj, 1143 evas_object_event_callback_call(eo_obj, obj,
1139 EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); 1144 EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
1140 if ((obj->proxy.is_proxy) && (obj->proxy.src_events)) 1145 if ((obj->proxy.is_proxy) &&
1141 _evas_event_source_mouse_move_events(eo_obj, &ev, 1146 (obj->proxy.src_events))
1142 event_id); 1147 _evas_event_source_mouse_move_events(eo_obj, &ev,
1148 event_id);
1143 } 1149 }
1144 } 1150 }
1145 else 1151 else
@@ -1180,33 +1186,28 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
1180 while (outs) 1186 while (outs)
1181 { 1187 {
1182 Evas_Object *eo_obj; 1188 Evas_Object *eo_obj;
1183
1184 eo_obj = outs->data; 1189 eo_obj = outs->data;
1185 outs = eina_list_remove(outs, eo_obj); 1190 outs = eina_list_remove(outs, eo_obj);
1186 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1191 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1187 if ((obj->mouse_grabbed == 0) && (!e->delete_me)) 1192 if ((obj->mouse_grabbed == 0) && (!e->delete_me))
1188 { 1193 {
1194 if (!obj->mouse_in) continue;
1195 obj->mouse_in = 0;
1196 if (obj->delete_me || e->is_frozen) continue;
1189 ev.canvas.x = e->pointer.x; 1197 ev.canvas.x = e->pointer.x;
1190 ev.canvas.y = e->pointer.y; 1198 ev.canvas.y = e->pointer.y;
1191 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y); 1199 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
1192 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); 1200 &ev.canvas.y);
1201 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
1202 &ev.canvas.y,
1203 obj->mouse_grabbed);
1193 e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj); 1204 e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj);
1194 if (obj->mouse_in) 1205 evas_object_event_callback_call(eo_obj, obj,
1195 { 1206 EVAS_CALLBACK_MOUSE_OUT,
1196 obj->mouse_in = 0; 1207 &ev, event_id);
1197 if (!obj->delete_me) 1208 if ((obj->proxy.is_proxy) &&
1198 { 1209 (obj->proxy.src_events))
1199 if (!e->is_frozen) 1210 _evas_event_source_mouse_out_events(eo_obj, &ev, event_id);
1200 {
1201 evas_object_event_callback_call(eo_obj,
1202 obj,
1203 EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
1204 if ((obj->proxy.is_proxy) &&
1205 (obj->proxy.src_events))
1206 _evas_event_source_mouse_out_events(eo_obj, &ev, event_id);
1207 }
1208 }
1209 }
1210 } 1211 }
1211 } 1212 }
1212 _evas_post_event_callback_call(eo_e, e); 1213 _evas_post_event_callback_call(eo_e, e);
@@ -1307,19 +1308,23 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
1307 if (obj->mouse_in) 1308 if (obj->mouse_in)
1308 { 1309 {
1309 obj->mouse_in = 0; 1310 obj->mouse_in = 0;
1311 if (e->is_frozen) continue;
1310 ev2.canvas.x = e->pointer.x; 1312 ev2.canvas.x = e->pointer.x;
1311 ev2.canvas.y = e->pointer.y; 1313 ev2.canvas.y = e->pointer.y;
1312 _evas_event_framespace_adjust(eo_obj, &ev2.canvas.x, &ev2.canvas.y); 1314 _evas_event_framespace_adjust(eo_obj, &ev2.canvas.x,
1313 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); 1315 &ev2.canvas.y);
1316 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
1317 &ev2.canvas.y,
1318 obj->mouse_grabbed);
1314 evas_object_event_callback_call(eo_obj, obj, 1319 evas_object_event_callback_call(eo_obj, obj,
1315 EVAS_CALLBACK_MOUSE_OUT, 1320 EVAS_CALLBACK_MOUSE_OUT,
1316 &ev2, event_id); 1321 &ev2, event_id);
1317 if ((obj->proxy.is_proxy) && (obj->proxy.src_events)) 1322 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
1318 _evas_event_source_mouse_out_events(eo_obj, &ev2, 1323 _evas_event_source_mouse_out_events(eo_obj, &ev2,
1319 event_id); 1324 event_id);
1325 if (e->delete_me) break;
1320 } 1326 }
1321 } 1327 }
1322 if (e->delete_me) break;
1323 } 1328 }
1324 _evas_post_event_callback_call(eo_e, e); 1329 _evas_post_event_callback_call(eo_e, e);
1325 1330
@@ -1331,28 +1336,30 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
1331 EINA_LIST_FOREACH(ins, l, eo_obj) 1336 EINA_LIST_FOREACH(ins, l, eo_obj)
1332 { 1337 {
1333 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1338 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1334 ev3.canvas.x = e->pointer.x;
1335 ev3.canvas.y = e->pointer.y;
1336 _evas_event_framespace_adjust(eo_obj, &ev3.canvas.x, &ev3.canvas.y);
1337 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
1338 /* if its not in the old list of ins send an enter event */ 1339 /* if its not in the old list of ins send an enter event */
1339 if (!eina_list_data_find(e->pointer.object.in, eo_obj)) 1340 if (!eina_list_data_find(e->pointer.object.in, eo_obj))
1340 { 1341 {
1341 if (!obj->mouse_in) 1342 if (!obj->mouse_in)
1342 { 1343 {
1343 obj->mouse_in = 1; 1344 obj->mouse_in = 1;
1344 if (!e->is_frozen) 1345 if (e->is_frozen) continue;
1345 { 1346 ev3.canvas.x = e->pointer.x;
1346 evas_object_event_callback_call(eo_obj, obj, 1347 ev3.canvas.y = e->pointer.y;
1347 EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2); 1348 _evas_event_framespace_adjust(eo_obj, &ev3.canvas.x,
1348 if ((obj->proxy.is_proxy) && 1349 &ev3.canvas.y);
1349 (obj->proxy.src_events)) 1350 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
1350 _evas_event_source_mouse_in_events(eo_obj, &ev3, 1351 &ev3.canvas.y,
1351 event_id2); 1352 obj->mouse_grabbed);
1352 } 1353 evas_object_event_callback_call(eo_obj, obj,
1354 EVAS_CALLBACK_MOUSE_IN,
1355 &ev3, event_id2);
1356 if ((obj->proxy.is_proxy) &&
1357 (obj->proxy.src_events))
1358 _evas_event_source_mouse_in_events(eo_obj, &ev3,
1359 event_id2);
1360 if (e->delete_me) break;
1353 } 1361 }
1354 } 1362 }
1355 if (e->delete_me) break;
1356 } 1363 }
1357 if (e->pointer.mouse_grabbed == 0) 1364 if (e->pointer.mouse_grabbed == 0)
1358 { 1365 {
@@ -1493,23 +1500,20 @@ nogrep:
1493 /* otherwise it has left the object */ 1500 /* otherwise it has left the object */
1494 else 1501 else
1495 { 1502 {
1496 if (obj->mouse_in) 1503 if (!obj->mouse_in) continue;
1497 { 1504 obj->mouse_in = 0;
1498 obj->mouse_in = 0; 1505 if (e->is_frozen) continue;
1499 ev2.canvas.x = e->pointer.x; 1506 ev2.canvas.x = e->pointer.x;
1500 ev2.canvas.y = e->pointer.y; 1507 ev2.canvas.y = e->pointer.y;
1501 _evas_event_framespace_adjust(eo_obj, &ev2.canvas.x, &ev2.canvas.y); 1508 _evas_event_framespace_adjust(eo_obj, &ev2.canvas.x,
1502 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); 1509 &ev2.canvas.y);
1503 if (!e->is_frozen) 1510 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
1504 { 1511 &ev2.canvas.y, obj->mouse_grabbed);
1505 evas_object_event_callback_call(eo_obj, obj, 1512 evas_object_event_callback_call(eo_obj, obj,
1506 EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id); 1513 EVAS_CALLBACK_MOUSE_OUT, &ev2,
1507 if ((obj->proxy.is_proxy) && 1514 event_id);
1508 (obj->proxy.src_events)) 1515 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
1509 _evas_event_source_mouse_out_events(eo_obj, &ev2, 1516 _evas_event_source_mouse_out_events(eo_obj, &ev2, event_id);
1510 event_id);
1511 }
1512 }
1513 } 1517 }
1514 if (e->delete_me) break; 1518 if (e->delete_me) break;
1515 } 1519 }
@@ -1523,28 +1527,25 @@ nogrep:
1523 EINA_LIST_FOREACH(newin, l, eo_obj) 1527 EINA_LIST_FOREACH(newin, l, eo_obj)
1524 { 1528 {
1525 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1529 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1526 ev3.canvas.x = e->pointer.x;
1527 ev3.canvas.y = e->pointer.y;
1528 _evas_event_framespace_adjust(eo_obj, &ev3.canvas.x, &ev3.canvas.y);
1529 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
1530 /* if its not in the old list of ins send an enter event */ 1530 /* if its not in the old list of ins send an enter event */
1531 if (!eina_list_data_find(e->pointer.object.in, eo_obj)) 1531 if (!eina_list_data_find(e->pointer.object.in, eo_obj))
1532 { 1532 {
1533 if (!obj->mouse_in) 1533 if (obj->mouse_in) continue;
1534 { 1534 obj->mouse_in = 1;
1535 obj->mouse_in = 1; 1535 if (e->is_frozen) continue;
1536 if (!e->is_frozen) 1536 ev3.canvas.x = e->pointer.x;
1537 { 1537 ev3.canvas.y = e->pointer.y;
1538 evas_object_event_callback_call(eo_obj, obj, 1538 _evas_event_framespace_adjust(eo_obj, &ev3.canvas.x,
1539 EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2); 1539 &ev3.canvas.y);
1540 if ((obj->proxy.is_proxy) && 1540 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
1541 (obj->proxy.src_events)) 1541 &ev3.canvas.y, obj->mouse_grabbed);
1542 _evas_event_source_mouse_in_events(eo_obj, &ev3, 1542 evas_object_event_callback_call(eo_obj, obj,
1543 event_id2); 1543 EVAS_CALLBACK_MOUSE_IN, &ev3,
1544 } 1544 event_id2);
1545 } 1545 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
1546 _evas_event_source_mouse_in_events(eo_obj, &ev3, event_id2);
1547 if (e->delete_me) break;
1546 } 1548 }
1547 if (e->delete_me) break;
1548 } 1549 }
1549 /* free our old list of ins */ 1550 /* free our old list of ins */
1550 eina_list_free(e->pointer.object.in); 1551 eina_list_free(e->pointer.object.in);
@@ -1609,23 +1610,22 @@ _canvas_event_feed_mouse_in(Eo *eo_e, void *_pd, va_list *list)
1609 EINA_LIST_FOREACH(ins, l, eo_obj) 1610 EINA_LIST_FOREACH(ins, l, eo_obj)
1610 { 1611 {
1611 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1612 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1612 ev.canvas.x = e->pointer.x;
1613 ev.canvas.y = e->pointer.y;
1614 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
1615 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
1616 if (!eina_list_data_find(e->pointer.object.in, eo_obj)) 1613 if (!eina_list_data_find(e->pointer.object.in, eo_obj))
1617 { 1614 {
1618 if (!obj->mouse_in) 1615 if (obj->mouse_in) continue;
1619 { 1616 obj->mouse_in = 1;
1620 obj->mouse_in = 1; 1617 ev.canvas.x = e->pointer.x;
1621 evas_object_event_callback_call(eo_obj, obj, 1618 ev.canvas.y = e->pointer.y;
1622 EVAS_CALLBACK_MOUSE_IN, &ev, 1619 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
1623 event_id); 1620 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
1624 if ((obj->proxy.is_proxy) && (obj->proxy.src_events)) 1621 obj->mouse_grabbed);
1625 _evas_event_source_mouse_in_events(eo_obj, &ev, event_id); 1622 evas_object_event_callback_call(eo_obj, obj,
1626 } 1623 EVAS_CALLBACK_MOUSE_IN, &ev,
1624 event_id);
1625 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
1626 _evas_event_source_mouse_in_events(eo_obj, &ev, event_id);
1627 if (e->delete_me || e->is_frozen) break;
1627 } 1628 }
1628 if (e->delete_me || e->is_frozen) break;
1629 } 1629 }
1630 /* free our old list of ins */ 1630 /* free our old list of ins */
1631 e->pointer.object.in = eina_list_free(e->pointer.object.in); 1631 e->pointer.object.in = eina_list_free(e->pointer.object.in);
@@ -1689,28 +1689,24 @@ _canvas_event_feed_mouse_out(Eo *eo_e, void *_pd, va_list *list)
1689 EINA_LIST_FOREACH(copy, l, eo_obj) 1689 EINA_LIST_FOREACH(copy, l, eo_obj)
1690 { 1690 {
1691 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1691 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1692 ev.canvas.x = e->pointer.x; 1692 if (!obj->mouse_in) continue;
1693 ev.canvas.y = e->pointer.y; 1693 obj->mouse_in = 0;
1694 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y); 1694 if ((!obj->delete_me) && (!e->is_frozen))
1695 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
1696 if (obj->mouse_in)
1697 { 1695 {
1698 obj->mouse_in = 0; 1696 ev.canvas.x = e->pointer.x;
1699 if (!obj->delete_me) 1697 ev.canvas.y = e->pointer.y;
1700 { 1698 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
1701 if (!e->is_frozen) 1699 &ev.canvas.y);
1702 { 1700 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
1703 evas_object_event_callback_call(eo_obj, obj, 1701 &ev.canvas.y, obj->mouse_grabbed);
1704 EVAS_CALLBACK_MOUSE_OUT, &ev, event_id); 1702 evas_object_event_callback_call(eo_obj, obj,
1705 if ((obj->proxy.is_proxy) && 1703 EVAS_CALLBACK_MOUSE_OUT,
1706 (obj->proxy.src_events)) 1704 &ev, event_id);
1707 _evas_event_source_mouse_out_events(eo_obj, &ev, 1705 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
1708 event_id); 1706 _evas_event_source_mouse_out_events(eo_obj, &ev, event_id);
1709 } 1707 if (e->delete_me) break;
1710 }
1711 obj->mouse_grabbed = 0;
1712 } 1708 }
1713 if (e->delete_me) break; 1709 obj->mouse_grabbed = 0;
1714 } 1710 }
1715 if (copy) copy = eina_list_free(copy); 1711 if (copy) copy = eina_list_free(copy);
1716 /* free our old list of ins */ 1712 /* free our old list of ins */