2007-08-13 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.c: * clutter/clutter-actor.h: * clutter/clutter-event.c: * clutter/clutter-event.h: * clutter/clutter-main.c: * clutter/clutter-main.h: * clutter/clutter-private.h: * clutter/clutter-stage.c: * clutter/clutter-stage.h: * clutter/clutter-types.h: Initial implementation of actors emmitting event signals (423); - Actors set_reactive() to receive mouse events. (call clutter_enable_motion_events() for per action motion events) - clutter_stage_set_key_focus () to direct key events. - Events bubble up to parents (ending at stage) (original source identified by clutter_event_get_source()) TODO: - enter/leave notifys for actors. - stage specific events - fullscreen - grabs * tests/test-events.c: Extend a little to use new API * clutter/cogl/gl/cogl.c: * clutter/glx/clutter-backend-glx.c: Move get_proc_address into cogl and out of backend. (shaders will need it) * clutter/clutter-group.c: (clutter_group_real_lower): Fix a minor compile warning. * TODO: Sync up.
This commit is contained in:
@ -183,6 +183,49 @@ clutter_event_get_coords (ClutterEvent *event,
|
||||
*y = event_y;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_event_get_source:
|
||||
* @event: a #ClutterEvent
|
||||
*
|
||||
* Retrieves the source #ClutterActor the event originated from, or
|
||||
* NULL if the event has no source.
|
||||
*
|
||||
* Since: 0.6
|
||||
*/
|
||||
ClutterActor*
|
||||
clutter_event_get_source (ClutterEvent *event)
|
||||
{
|
||||
ClutterActor *res = NULL;
|
||||
gint event_x, event_y;
|
||||
|
||||
g_return_val_if_fail (event != NULL, NULL);
|
||||
|
||||
event_x = event_y = 0;
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case CLUTTER_KEY_PRESS:
|
||||
case CLUTTER_KEY_RELEASE:
|
||||
res = event->key.source;
|
||||
break;
|
||||
case CLUTTER_BUTTON_PRESS:
|
||||
case CLUTTER_2BUTTON_PRESS:
|
||||
case CLUTTER_BUTTON_RELEASE:
|
||||
res = event->button.source;
|
||||
break;
|
||||
case CLUTTER_MOTION:
|
||||
res = event->motion.source;
|
||||
break;
|
||||
case CLUTTER_SCROLL:
|
||||
res = event->scroll.source;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_button_event_button:
|
||||
* @buttev: a #ClutterButtonEvent
|
||||
|
Reference in New Issue
Block a user