diff --git a/legacy/evas/ChangeLog b/legacy/evas/ChangeLog index fae3a1c1b8..3e5d06f44c 100644 --- a/legacy/evas/ChangeLog +++ b/legacy/evas/ChangeLog @@ -413,3 +413,8 @@ * Polygon: Implemented "is_inside". +2011-07-05 Hyoyoung Chang + + * Fix bug where event causes event in callback on same object, but + with same event counter, so also filter out same event types. + diff --git a/legacy/evas/src/lib/canvas/evas_callbacks.c b/legacy/evas/src/lib/canvas/evas_callbacks.c index 1c083bccab..b87b3d8b6c 100644 --- a/legacy/evas/src/lib/canvas/evas_callbacks.c +++ b/legacy/evas/src/lib/canvas/evas_callbacks.c @@ -170,8 +170,10 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void Evas *e; if ((obj->delete_me) || (!obj->layer)) return; - if (obj->last_event == _evas_event_counter) return; + if ((obj->last_event == _evas_event_counter) && + (obj->last_event_type == type)) return; obj->last_event = _evas_event_counter; + obj->last_event_type = type; if (!(e = obj->layer->evas)) return; _evas_walk(e); diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 3a1fef8cb5..53f06f7b0a 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -499,6 +499,7 @@ struct _Evas_Object int mouse_grabbed; int last_event; + Evas_Callback_Type last_event_type; struct { int in_move, in_resize;