From: Tomeu Vizoso Date: Mon, 4 Jun 2012 11:15:13 +0000 (+0200) Subject: events: Deliver touch events to actors X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ec01a2e42645b4fe9ce23335983d326249afff3;p=profile%2Fivi%2Fclutter.git events: Deliver touch events to actors https://bugzilla.gnome.org/show_bug.cgi?id=677390 --- diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 7e4bef8..744301b 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -2614,6 +2614,40 @@ _clutter_process_event_details (ClutterActor *stage, case CLUTTER_TOUCH_BEGIN: case CLUTTER_TOUCH_UPDATE: case CLUTTER_TOUCH_END: + { + ClutterActor *actor; + gfloat x, y; + + clutter_event_get_coords (event, &x, &y); + + /* Only do a pick to find the source if source is not already set + * (as it could be in a synthetic event) + */ + if (event->any.source == NULL) + { + actor = _clutter_stage_do_pick (CLUTTER_STAGE (stage), + x, y, + CLUTTER_PICK_REACTIVE); + if (actor == NULL) + break; + + event->any.source = actor; + } + else + { + /* use the source already set in the synthetic event */ + actor = event->any.source; + } + + CLUTTER_NOTE (EVENT, + "Reactive event received at %.2f, %.2f - actor: %p", + x, y, + actor); + + emit_pointer_event (event, device); + break; + } + case CLUTTER_TOUCH_CANCEL: break;