summaryrefslogtreecommitdiff
path: root/legacy/evas/src/lib
diff options
context:
space:
mode:
authorChunEon Park <hermet@hermet.pe.kr>2012-10-28 14:51:42 +0000
committerChunEon Park <hermet@hermet.pe.kr>2012-10-28 14:51:42 +0000
commit85543152348134aaa42be85a4c5b98db754d7335 (patch)
tree8fece3cd19a98b74d0bced6d060e1f82288515d5 /legacy/evas/src/lib
parente48939bb652d884b4b3a572a9dd9df8dbb36faf0 (diff)
evas/event - clean the code and do stop when evas event is frozen.
SVN revision: 78591
Diffstat (limited to 'legacy/evas/src/lib')
-rw-r--r--legacy/evas/src/lib/canvas/evas_events.c60
1 files changed, 28 insertions, 32 deletions
diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c
index b8bcdb6..11b2899 100644
--- a/legacy/evas/src/lib/canvas/evas_events.c
+++ b/legacy/evas/src/lib/canvas/evas_events.c
@@ -2186,44 +2186,40 @@ _canvas_event_feed_mouse_out(Eo *eo_e, void *_pd, va_list *list)
2186 ev.event_flags = e->default_event_flags; 2186 ev.event_flags = e->default_event_flags;
2187 ev.dev = _evas_device_top_get(eo_e); 2187 ev.dev = _evas_device_top_get(eo_e);
2188 if (ev.dev) _evas_device_ref(ev.dev); 2188 if (ev.dev) _evas_device_ref(ev.dev);
2189 2189
2190 _evas_walk(e); 2190 _evas_walk(e);
2191 /* if our mouse button is inside any objects */ 2191 /* if our mouse button is inside any objects */
2192 { 2192 /* go thru old list of in objects */
2193 /* go thru old list of in objects */ 2193 Eina_List *l, *copy;
2194 Eina_List *l, *copy; 2194 Evas_Object *eo_obj;
2195 Evas_Object *eo_obj;
2196 2195
2197 copy = evas_event_list_copy(e->pointer.object.in); 2196 copy = evas_event_list_copy(e->pointer.object.in);
2198 EINA_LIST_FOREACH(copy, l, eo_obj) 2197 EINA_LIST_FOREACH(copy, l, eo_obj)
2198 {
2199 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
2200 if (!obj->mouse_in) continue;
2201 obj->mouse_in = 0;
2202 if (!obj->delete_me)
2199 { 2203 {
2200 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 2204 ev.canvas.x = e->pointer.x;
2201 if (!obj->mouse_in) continue; 2205 ev.canvas.y = e->pointer.y;
2202 obj->mouse_in = 0; 2206 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
2203 if ((!obj->delete_me) && (!e->is_frozen)) 2207 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
2204 { 2208 obj->mouse_grabbed);
2205 ev.canvas.x = e->pointer.x; 2209 evas_object_event_callback_call(eo_obj, obj,
2206 ev.canvas.y = e->pointer.y; 2210 EVAS_CALLBACK_MOUSE_OUT, &ev,
2207 _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, 2211 event_id);
2208 &ev.canvas.y); 2212 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
2209 _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, 2213 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id);
2210 &ev.canvas.y, obj->mouse_grabbed); 2214 if (e->delete_me || e->is_frozen) break;
2211 evas_object_event_callback_call(eo_obj, obj,
2212 EVAS_CALLBACK_MOUSE_OUT,
2213 &ev, event_id);
2214 if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
2215 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev,
2216 event_id);
2217 if (e->delete_me) break;
2218 }
2219 obj->mouse_grabbed = 0;
2220 } 2215 }
2221 if (copy) copy = eina_list_free(copy); 2216 obj->mouse_grabbed = 0;
2222 /* free our old list of ins */
2223 e->pointer.object.in = eina_list_free(e->pointer.object.in);
2224 e->pointer.mouse_grabbed = 0;
2225 _evas_post_event_callback_call(eo_e, e);
2226 } 2217 }
2218 if (copy) copy = eina_list_free(copy);
2219 /* free our old list of ins */
2220 e->pointer.object.in = eina_list_free(e->pointer.object.in);
2221 e->pointer.mouse_grabbed = 0;
2222 _evas_post_event_callback_call(eo_e, e);
2227 if (ev.dev) _evas_device_unref(ev.dev); 2223 if (ev.dev) _evas_device_unref(ev.dev);
2228 _evas_unwalk(e); 2224 _evas_unwalk(e);
2229} 2225}