mirror of
https://github.com/brl/mutter.git
synced 2025-04-15 22:59:40 +00:00
gesture-action: Clean up
The GestureAction is marked as abstract, but it has a constructor. It should be possible to create simple gesture recognizers through signal handling alone, so we might as well have GestureAction be a concrete class from the start. http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
This commit is contained in:
parent
ba72235b66
commit
0058c78b79
@ -68,11 +68,11 @@ struct _ClutterGestureActionPrivate
|
|||||||
guint actor_capture_id;
|
guint actor_capture_id;
|
||||||
gulong stage_capture_id;
|
gulong stage_capture_id;
|
||||||
|
|
||||||
gboolean in_drag;
|
|
||||||
|
|
||||||
gfloat press_x, press_y;
|
gfloat press_x, press_y;
|
||||||
gfloat last_motion_x, last_motion_y;
|
gfloat last_motion_x, last_motion_y;
|
||||||
gfloat release_x, release_y;
|
gfloat release_x, release_y;
|
||||||
|
|
||||||
|
guint in_drag : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@ -87,8 +87,7 @@ enum
|
|||||||
|
|
||||||
static guint gesture_signals[LAST_SIGNAL] = { 0, };
|
static guint gesture_signals[LAST_SIGNAL] = { 0, };
|
||||||
|
|
||||||
G_DEFINE_ABSTRACT_TYPE (ClutterGestureAction, clutter_gesture_action,
|
G_DEFINE_TYPE (ClutterGestureAction, clutter_gesture_action, CLUTTER_TYPE_ACTION);
|
||||||
CLUTTER_TYPE_ACTION);
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
signal_accumulator (GSignalInvocationHint *ihint,
|
signal_accumulator (GSignalInvocationHint *ihint,
|
||||||
@ -213,17 +212,17 @@ actor_captured_event_cb (ClutterActor *actor,
|
|||||||
if (priv->stage == NULL)
|
if (priv->stage == NULL)
|
||||||
priv->stage = clutter_actor_get_stage (actor);
|
priv->stage = clutter_actor_get_stage (actor);
|
||||||
|
|
||||||
priv->stage_capture_id = g_signal_connect_after (priv->stage,
|
priv->stage_capture_id =
|
||||||
"captured-event",
|
g_signal_connect_after (priv->stage, "captured-event",
|
||||||
G_CALLBACK (stage_captured_event_cb),
|
G_CALLBACK (stage_captured_event_cb),
|
||||||
action);
|
action);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_gesture_action_set_actor (ClutterActorMeta *meta,
|
clutter_gesture_action_set_actor (ClutterActorMeta *meta,
|
||||||
ClutterActor *actor)
|
ClutterActor *actor)
|
||||||
{
|
{
|
||||||
ClutterGestureActionPrivate *priv = CLUTTER_GESTURE_ACTION (meta)->priv;
|
ClutterGestureActionPrivate *priv = CLUTTER_GESTURE_ACTION (meta)->priv;
|
||||||
ClutterActorMetaClass *meta_class =
|
ClutterActorMetaClass *meta_class =
|
||||||
@ -245,9 +244,12 @@ clutter_gesture_action_set_actor (ClutterActorMeta *meta,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (actor != NULL)
|
if (actor != NULL)
|
||||||
priv->actor_capture_id = g_signal_connect (actor, "captured-event",
|
{
|
||||||
G_CALLBACK (actor_captured_event_cb),
|
priv->actor_capture_id =
|
||||||
meta);
|
g_signal_connect (actor, "captured-event",
|
||||||
|
G_CALLBACK (actor_captured_event_cb),
|
||||||
|
meta);
|
||||||
|
}
|
||||||
|
|
||||||
meta_class->set_actor (meta, actor);
|
meta_class->set_actor (meta, actor);
|
||||||
}
|
}
|
||||||
@ -268,6 +270,8 @@ clutter_gesture_action_class_init (ClutterGestureActionClass *klass)
|
|||||||
*
|
*
|
||||||
* The ::gesture_begin signal is emitted when the #ClutterActor to which
|
* The ::gesture_begin signal is emitted when the #ClutterActor to which
|
||||||
* a #ClutterGestureAction has been applied starts receiving a gesture.
|
* a #ClutterGestureAction has been applied starts receiving a gesture.
|
||||||
|
*
|
||||||
|
* Since: 1.8
|
||||||
*/
|
*/
|
||||||
gesture_signals[GESTURE_BEGIN] =
|
gesture_signals[GESTURE_BEGIN] =
|
||||||
g_signal_new (I_("gesture-begin"),
|
g_signal_new (I_("gesture-begin"),
|
||||||
@ -286,6 +290,8 @@ clutter_gesture_action_class_init (ClutterGestureActionClass *klass)
|
|||||||
*
|
*
|
||||||
* The ::gesture-progress signal is emitted for each motion event after
|
* The ::gesture-progress signal is emitted for each motion event after
|
||||||
* the #ClutterGestureAction::gesture-begin signal has been emitted.
|
* the #ClutterGestureAction::gesture-begin signal has been emitted.
|
||||||
|
*
|
||||||
|
* Since: 1.8
|
||||||
*/
|
*/
|
||||||
gesture_signals[GESTURE_PROGRESS] =
|
gesture_signals[GESTURE_PROGRESS] =
|
||||||
g_signal_new (I_("gesture-progress"),
|
g_signal_new (I_("gesture-progress"),
|
||||||
@ -349,6 +355,10 @@ clutter_gesture_action_init (ClutterGestureAction *self)
|
|||||||
{
|
{
|
||||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, CLUTTER_TYPE_GESTURE_ACTION,
|
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, CLUTTER_TYPE_GESTURE_ACTION,
|
||||||
ClutterGestureActionPrivate);
|
ClutterGestureActionPrivate);
|
||||||
|
|
||||||
|
self->priv->press_x = self->priv->press_y = 0.f;
|
||||||
|
self->priv->last_motion_x = self->priv->last_motion_y = 0.f;
|
||||||
|
self->priv->release_x = self->priv->release_y = 0.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -476,7 +486,7 @@ clutter_gesture_action_get_release_coords (ClutterGestureAction *action,
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_gesture_action_set_required_devices (ClutterGestureAction *action,
|
clutter_gesture_action_set_required_devices (ClutterGestureAction *action,
|
||||||
guint n_required_devices)
|
guint n_required_devices)
|
||||||
{
|
{
|
||||||
if (n_required_devices != 1)
|
if (n_required_devices != 1)
|
||||||
{
|
{
|
||||||
|
@ -77,9 +77,9 @@ struct _ClutterGestureActionClass
|
|||||||
ClutterActor *actor);
|
ClutterActor *actor);
|
||||||
gboolean (* gesture_progress) (ClutterGestureAction *action,
|
gboolean (* gesture_progress) (ClutterGestureAction *action,
|
||||||
ClutterActor *actor);
|
ClutterActor *actor);
|
||||||
void (* gesture_end) (ClutterGestureAction *action,
|
void (* gesture_end) (ClutterGestureAction *action,
|
||||||
ClutterActor *actor);
|
ClutterActor *actor);
|
||||||
void (* gesture_cancel) (ClutterGestureAction *action,
|
void (* gesture_cancel) (ClutterGestureAction *action,
|
||||||
ClutterActor *actor);
|
ClutterActor *actor);
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
@ -92,28 +92,26 @@ struct _ClutterGestureActionClass
|
|||||||
void (* _clutter_gesture_action7) (void);
|
void (* _clutter_gesture_action7) (void);
|
||||||
};
|
};
|
||||||
|
|
||||||
GType clutter_gesture_action_get_type (void) G_GNUC_CONST;
|
GType clutter_gesture_action_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
ClutterAction *clutter_gesture_action_new (void);
|
ClutterAction * clutter_gesture_action_new (void);
|
||||||
|
|
||||||
void clutter_gesture_action_get_press_coords (ClutterGestureAction *action,
|
void clutter_gesture_action_get_press_coords (ClutterGestureAction *action,
|
||||||
guint device,
|
guint device,
|
||||||
gfloat *press_x,
|
gfloat *press_x,
|
||||||
gfloat *press_y);
|
gfloat *press_y);
|
||||||
|
void clutter_gesture_action_get_motion_coords (ClutterGestureAction *action,
|
||||||
|
guint device,
|
||||||
|
gfloat *motion_x,
|
||||||
|
gfloat *motion_y);
|
||||||
|
void clutter_gesture_action_get_release_coords (ClutterGestureAction *action,
|
||||||
|
guint device,
|
||||||
|
gfloat *release_x,
|
||||||
|
gfloat *release_y);
|
||||||
|
|
||||||
void clutter_gesture_action_get_motion_coords (ClutterGestureAction *action,
|
void clutter_gesture_action_set_required_devices (ClutterGestureAction *action,
|
||||||
guint device,
|
guint n_required_devices);
|
||||||
gfloat *motion_x,
|
guint clutter_gesture_action_get_required_devices (ClutterGestureAction *action);
|
||||||
gfloat *motion_y);
|
|
||||||
|
|
||||||
void clutter_gesture_action_get_release_coords (ClutterGestureAction *action,
|
|
||||||
guint device,
|
|
||||||
gfloat *release_x,
|
|
||||||
gfloat *release_y);
|
|
||||||
|
|
||||||
void clutter_gesture_action_set_required_devices (ClutterGestureAction *action,
|
|
||||||
guint n_required_devices);
|
|
||||||
guint clutter_gesture_action_get_required_devices (ClutterGestureAction *action);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user