From b313edd3e46df3e2acd7c3f5aac339e177e10b18 Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Tue, 13 Nov 2012 10:59:38 +0000 Subject: [PATCH] evas/event - don't transform the output in the source events. and use the Point structure for clean code. Signed-Off-By: Leandro Dorileo Signed-Off-By: ChunEon Park SVN revision: 79224 --- src/lib/evas/canvas/evas_events.c | 137 +++++++----------------------- 1 file changed, 32 insertions(+), 105 deletions(-) diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index 01f7cd0fa0..ba643b7045 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -194,29 +194,23 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Point output = ev->output; Evas_Coord_Point canvas = ev->canvas; if (obj->delete_me || src->delete_me || e->is_frozen) return; _transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y); - ev->output.x = ev->canvas.x; - ev->output.y = ev->canvas.y; - if (src->proxy.src_event_in) src->proxy.src_event_in = eina_list_free(src->proxy.src_event_in); int no_rep = 0; Eina_List *l; Evas_Object *eo_child; + Evas_Object_Protected_Data *child; if (src->is_smart) { - src->proxy.src_event_in = - _evas_event_object_list_raw_in_get(eo_e, src->proxy.src_event_in, - evas_object_smart_members_get_direct(eo_src), - NULL, ev->canvas.x, ev->canvas.y, &no_rep, EINA_TRUE); + src->proxy.src_event_in = _evas_event_object_list_raw_in_get(eo_e, src->proxy.src_event_in, evas_object_smart_members_get_direct(eo_src), NULL, ev->canvas.x, ev->canvas.y, &no_rep, EINA_TRUE); } else src->proxy.src_event_in = eina_list_append(src->proxy.src_event_in, eo_src); @@ -226,8 +220,6 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event EINA_LIST_FOREACH(src->proxy.src_event_in, l, eo_child) { - Evas_Object_Protected_Data *child; - child = eo_data_get(eo_child, EVAS_OBJ_CLASS); if ((child->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) || (child->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)) @@ -243,17 +235,12 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event } } - Evas_Coord point_x = ev->canvas.x; - Evas_Coord point_y = ev->canvas.y; - + Evas_Coord_Point point = ev->canvas; Eina_List *copy = evas_event_list_copy(src->proxy.src_event_in); EINA_LIST_FOREACH(copy, l, eo_child) { - Evas_Object_Protected_Data *child; - child = eo_data_get(eo_child, EVAS_OBJ_CLASS); - ev->canvas.x = point_x; - ev->canvas.y = point_y; + ev->canvas = point; _evas_event_framespace_adjust(eo_child, &ev->canvas.x, &ev->canvas.y); _evas_event_havemap_adjust(eo_child, child, &ev->canvas.x, @@ -268,7 +255,6 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event } eina_list_free(copy); ev->canvas = canvas; - ev->output = output; } static void @@ -278,21 +264,17 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Position cur_pos = ev->cur; + Evas_Coord_Point canvas = ev->cur.canvas; if (obj->delete_me || src->delete_me || e->is_frozen) return; _transform_to_src_space(obj, src, &ev->cur.canvas.x, &ev->cur.canvas.y); - ev->cur.output.x = ev->cur.canvas.x; - ev->cur.output.y = ev->cur.canvas.y; - //FIXME: transform previous coords also. Eina_List *l; Evas_Object *eo_child; Evas_Object_Protected_Data *child; - Evas_Coord point_x = ev->cur.canvas.x; - Evas_Coord point_y = ev->cur.canvas.y; + Evas_Coord_Point point = ev->cur.canvas; if (e->pointer.mouse_grabbed) { @@ -308,8 +290,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event (!evas_event_freezes_through(eo_child, child)) && (!child->clip.clipees)) { - ev->cur.canvas.x = point_x; - ev->cur.canvas.y = point_y; + ev->cur.canvas = point; _evas_event_framespace_adjust(eo_child, &ev->cur.canvas.x, &ev->cur.canvas.y); _evas_event_havemap_adjust(eo_child, child, &ev->cur.canvas.x, @@ -338,8 +319,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event if (child->mouse_in) continue; child->mouse_in = 0; if (child->delete_me || e->is_frozen) continue; - ev->cur.canvas.x = cur_pos.canvas.x; - ev->cur.canvas.y = cur_pos.canvas.y; + ev->cur.canvas = canvas; _evas_event_framespace_adjust(eo_child, &ev->cur.canvas.x, &ev->cur.canvas.y); _evas_event_havemap_adjust(eo_child, child, &ev->cur.canvas.x, @@ -369,8 +349,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event { child = eo_data_get(eo_child, EVAS_OBJ_CLASS); - ev->cur.canvas.x = point_x; - ev->cur.canvas.y = point_y; + ev->cur.canvas = point; if (evas_object_is_in_output_rect(eo_child, child, ev->cur.canvas.x, @@ -398,8 +377,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event { child->mouse_in = 0; if (e->is_frozen) continue; - ev->cur.canvas.x = point_x; - ev->cur.canvas.y = point_y; + ev->cur.canvas = point; _evas_event_framespace_adjust(eo_child, &ev->cur.canvas.x, &ev->cur.canvas.y); @@ -427,8 +405,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event { child->mouse_in = 1; if (e->is_frozen) continue; - ev->cur.canvas.x = point_x; - ev->cur.canvas.y = point_y; + ev->cur.canvas = point; _evas_event_framespace_adjust(eo_child, &ev->cur.canvas.x, &ev->cur.canvas.y); @@ -454,8 +431,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event if (ins) eina_list_free(ins); } } - - ev->cur = cur_pos; + ev->cur.canvas = canvas; } static void @@ -465,21 +441,16 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_M Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Point output = ev->output; Evas_Coord_Point canvas = ev->canvas; if (obj->delete_me || src->delete_me || e->is_frozen) return; _transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y); - ev->output.x = ev->canvas.x; - ev->output.y = ev->canvas.y; - Eina_List *l; Evas_Object *eo_child; Evas_Object_Protected_Data *child; - Evas_Coord point_x = ev->canvas.x; - Evas_Coord point_y = ev->canvas.y; + Evas_Coord_Point point = ev->canvas; Eina_List *copy = evas_event_list_copy(src->proxy.src_event_in); EINA_LIST_FOREACH(copy, l, eo_child) @@ -493,8 +464,7 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_M e->pointer.mouse_grabbed--; } - ev->canvas.x = point_x; - ev->canvas.y = point_y; + ev->canvas = point; _evas_event_framespace_adjust(eo_child, &ev->canvas.x, &ev->canvas.y); @@ -515,7 +485,6 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_M eina_list_free(copy); ev->canvas = canvas; - ev->output = output; } static void @@ -547,29 +516,23 @@ _evas_event_source_wheel_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_Mous Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Point output = ev->output; Evas_Coord_Point canvas = ev->canvas; if (obj->delete_me || src->delete_me || obj->layer->evas->is_frozen) return; _transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y); - ev->output.x = ev->canvas.x; - ev->output.y = ev->canvas.y; - Eina_List *l; Evas_Object *eo_child; Evas_Object_Protected_Data *child; - Evas_Coord point_x = ev->canvas.x; - Evas_Coord point_y = ev->canvas.y; + Evas_Coord_Point point = ev->canvas; Eina_List *copy = evas_event_list_copy(src->proxy.src_event_in); EINA_LIST_FOREACH(copy, l, eo_child) { if (src->delete_me) return; child = eo_data_get(eo_child, EVAS_OBJ_CLASS); - ev->canvas.x = point_x; - ev->canvas.y = point_y; + ev->canvas = point; _evas_event_framespace_adjust(eo_child, &ev->canvas.x, &ev->canvas.y); @@ -583,7 +546,6 @@ _evas_event_source_wheel_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_Mous } eina_list_free(copy); ev->canvas = canvas; - ev->output = output; } static void @@ -593,7 +555,6 @@ _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Point output = ev->output; Evas_Coord_Precision_Point canvas = ev->canvas; if (obj->delete_me || src->delete_me || obj->layer->evas->is_frozen) return; @@ -601,19 +562,15 @@ _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event _transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y); //FIXME: transform precision - ev->output.x = ev->canvas.x; - ev->output.y = ev->canvas.y; - Eina_List *l; Evas_Object *eo_child; + Evas_Object_Protected_Data *child = NULL; int addgrab = 0; if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1; EINA_LIST_FOREACH(src->proxy.src_event_in, l, eo_child) { - Evas_Object_Protected_Data *child; - child = eo_data_get(eo_child, EVAS_OBJ_CLASS); if (child->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) { @@ -622,17 +579,12 @@ _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event } } + Evas_Coord_Precision_Point point = ev->canvas; + Eina_List *copy = evas_event_list_copy(src->proxy.src_event_in); EINA_LIST_FOREACH(copy, l, eo_child) { - Evas_Coord point_x = ev->canvas.x; - Evas_Coord point_y = ev->canvas.y; - Evas_Object_Protected_Data *child; - - child = eo_data_get(eo_child, EVAS_OBJ_CLASS); - - ev->canvas.x = point_x; - ev->canvas.y = point_y; + ev->canvas = point; _evas_event_framespace_adjust(eo_child, &ev->canvas.x, &ev->canvas.y); @@ -640,6 +592,7 @@ _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event &ev->canvas.x, &ev->canvas.y, child->mouse_grabbed); + child = eo_data_get(eo_child, EVAS_OBJ_CLASS); evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MULTI_DOWN, ev, event_id); if (e->delete_me) break; @@ -647,7 +600,6 @@ _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event eina_list_free(copy); ev->canvas = canvas; - ev->output = output; } static void @@ -657,7 +609,6 @@ _evas_event_source_multi_up_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_M Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Point output = ev->output; Evas_Coord_Precision_Point canvas = ev->canvas; if (obj->delete_me || src->delete_me || obj->layer->evas->is_frozen) return; @@ -665,11 +616,7 @@ _evas_event_source_multi_up_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_M _transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y); //FIXME: transform precision - ev->output.x = ev->canvas.x; - ev->output.y = ev->canvas.y; - - Evas_Coord point_x = ev->canvas.x; - Evas_Coord point_y = ev->canvas.y; + Evas_Coord_Precision_Point point = ev->canvas; Eina_List *copy = evas_event_list_copy(src->proxy.src_event_in); @@ -678,8 +625,7 @@ _evas_event_source_multi_up_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_M Evas_Object_Protected_Data *child = NULL; EINA_LIST_FOREACH(copy, l, eo_child) { - ev->canvas.x = point_x; - ev->canvas.y = point_y; + ev->canvas = point; if ((child->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) && (child->mouse_grabbed > 0)) { @@ -701,7 +647,6 @@ _evas_event_source_multi_up_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_M eina_list_free(copy); ev->canvas = canvas; - ev->output = output; } static void @@ -711,18 +656,15 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Precision_Position cur_pos = ev->cur; + Evas_Coord_Precision_Point canvas = ev->cur.canvas; if (obj->delete_me || src->delete_me || e->is_frozen) return; _transform_to_src_space(obj, src, &ev->cur.canvas.x, &ev->cur.canvas.y); - ev->cur.output.x = ev->cur.canvas.x; - ev->cur.output.y = ev->cur.canvas.y; //FIXME: transform precision - Evas_Coord point_x = ev->cur.canvas.x; - Evas_Coord point_y = ev->cur.canvas.y; + Evas_Coord_Precision_Point point = ev->cur.canvas; _evas_object_event_new(); event_id = _evas_event_counter; @@ -742,8 +684,7 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event (!evas_event_freezes_through(eo_child, child)) && (!child->clip.clipees)))) { - ev->cur.canvas.x = point_x; - ev->cur.canvas.y = point_y; + ev->cur.canvas = point; _evas_event_framespace_adjust(eo_child, &ev->cur.canvas.x, &ev->cur.canvas.y); @@ -775,8 +716,7 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event EINA_LIST_FOREACH(copy, l, eo_child) { child = eo_data_get(eo_child, EVAS_OBJ_CLASS); - ev->cur.canvas.x = point_x; - ev->cur.canvas.y = point_y; + ev->cur.canvas = point; if (evas_object_is_in_output_rect(eo_child, child, ev->cur.canvas.x, @@ -815,7 +755,7 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event eina_list_free(ins); } - ev->cur = cur_pos; + ev->cur.canvas = canvas; } static void @@ -825,15 +765,12 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_ Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Point output = ev->output; Evas_Coord_Point canvas = ev->canvas; if (obj->delete_me || src->delete_me || e->is_frozen) return; _transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y); - ev->output.x = ev->canvas.x; - ev->output.y = ev->canvas.y; Eina_List *ins = NULL; if (src->is_smart) { @@ -844,8 +781,7 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_ else ins = eina_list_append(ins, eo_src); - Evas_Coord point_x = ev->canvas.x; - Evas_Coord point_y = ev->canvas.y; + Evas_Coord_Point point = ev->canvas; Eina_List *l; Evas_Object *eo_child; EINA_LIST_FOREACH(ins, l, eo_child) @@ -857,8 +793,7 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_ if(child->mouse_in) continue; child->mouse_in = 1; - ev->canvas.x = point_x; - ev->canvas.y = point_y; + ev->canvas = point; _evas_event_framespace_adjust(eo_child, &ev->canvas.x, &ev->canvas.y); @@ -875,7 +810,6 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_ src->proxy.src_event_in = ins; ev->canvas = canvas; - ev->output = output; } static void @@ -885,21 +819,16 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_ Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS); Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - Evas_Point output = ev->output; Evas_Coord_Point canvas = ev->canvas; if (obj->delete_me || src->delete_me || e->is_frozen) return; _transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y); - ev->output.x = ev->canvas.x; - ev->output.y = ev->canvas.y; - Eina_List *l; Evas_Object *eo_child; Eina_List *copy = evas_event_list_copy(src->proxy.src_event_in); - Evas_Coord point_x = ev->canvas.x; - Evas_Coord point_y = ev->canvas.y; + Evas_Coord_Point point = ev->canvas; EINA_LIST_FOREACH(copy, l, eo_child) { @@ -910,8 +839,7 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_ if (child->delete_me) continue; - ev->canvas.x = point_x; - ev->canvas.y = point_y; + ev->canvas = point; _evas_event_framespace_adjust(eo_child, &ev->canvas.x, &ev->canvas.y); _evas_event_havemap_adjust(eo_child, child, &ev->canvas.x, @@ -925,7 +853,6 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_ src->proxy.src_event_in = eina_list_free(src->proxy.src_event_in); ev->canvas = canvas; - ev->output = output; } static Eina_List *