diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c index 132576e67..f80fbae9b 100644 --- a/clutter/clutter/clutter-main.c +++ b/clutter/clutter/clutter-main.c @@ -683,7 +683,9 @@ emit_event_chain (ClutterEvent *event) return; } - _clutter_actor_handle_event (event->any.source, NULL, event); + _clutter_actor_handle_event (event->any.source, + clutter_stage_get_grab_actor (event->any.stage), + event); } /* diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c index ce44b3bcc..fd280dbee 100644 --- a/clutter/clutter/clutter-stage.c +++ b/clutter/clutter/clutter-stage.c @@ -3846,3 +3846,15 @@ clutter_grab_dismiss (ClutterGrab *grab) g_free (grab); } + +ClutterActor * +clutter_stage_get_grab_actor (ClutterStage *stage) +{ + ClutterStagePrivate *priv = stage->priv; + + if (!priv->topmost_grab) + return NULL; + + /* Return active grab */ + return priv->topmost_grab->actor; +} diff --git a/clutter/clutter/clutter-stage.h b/clutter/clutter/clutter-stage.h index b45c50ccd..fc90f6910 100644 --- a/clutter/clutter/clutter-stage.h +++ b/clutter/clutter/clutter-stage.h @@ -274,6 +274,9 @@ CLUTTER_EXPORT ClutterGrab * clutter_stage_grab (ClutterStage *stage, ClutterActor *actor); +CLUTTER_EXPORT +ClutterActor * clutter_stage_get_grab_actor (ClutterStage *stage); + G_END_DECLS #endif /* __CLUTTER_STAGE_H__ */