summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2011-07-01 14:17:54 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2011-07-01 14:17:54 +0800
commit6f06ab7c2f4763223b4c5493bab32fda8cbc241a (patch)
treea47b2d2d6615890f4b567fb7a2daeeb45bd364ab
parent9dab0b59aca77c3d8b483410f5ef5d6f7c2e2823 (diff)
parenteae2ab6516c114ad3e9452dbbbc3111b9f047e6d (diff)
downloadclutter-6f06ab7c2f4763223b4c5493bab32fda8cbc241a.tar.gz
Merge branch 'clutter-1.99' into msvc-support-2.0
-rw-r--r--clutter/Makefile.am14
-rw-r--r--clutter/clutter-actor-private.h6
-rw-r--r--clutter/clutter-actor.c202
-rw-r--r--clutter/clutter-debug.h3
-rw-r--r--clutter/clutter-device-manager.c2
-rw-r--r--clutter/clutter-drag-action.c48
-rw-r--r--clutter/clutter-drop-action.c469
-rw-r--r--clutter/clutter-drop-action.h113
-rw-r--r--clutter/clutter-effect.h3
-rw-r--r--clutter/clutter-gesture-action.c2
-rw-r--r--clutter/clutter-group.c12
-rw-r--r--clutter/clutter-keysyms.h106
-rw-r--r--clutter/clutter-main.c72
-rw-r--r--clutter/clutter-main.h4
-rw-r--r--clutter/clutter-marshal.list1
-rw-r--r--clutter/clutter-paint-volume.c36
-rw-r--r--clutter/clutter-private.h21
-rw-r--r--clutter/clutter-stage-private.h12
-rw-r--r--clutter/clutter-stage.c110
-rw-r--r--clutter/clutter-stage.h4
-rw-r--r--clutter/clutter-texture.c14
-rw-r--r--clutter/clutter-types.h4
-rw-r--r--clutter/clutter.h1
-rw-r--r--clutter/cogl/clutter-glx-texture-pixmap.c158
-rw-r--r--clutter/cogl/clutter-glx-texture-pixmap.h92
-rw-r--r--clutter/cogl/clutter-glx.h46
-rw-r--r--clutter/cogl/clutter-stage-cogl.c17
-rw-r--r--clutter/osx/clutter-backend-osx.c3
-rw-r--r--clutter/win32/clutter-backend-win32.c3
-rw-r--r--clutter/x11/clutter-backend-x11.c23
-rw-r--r--clutter/x11/clutter-stage-x11.c31
-rw-r--r--clutter/x11/clutter-x11.h8
-rw-r--r--configure.ac34
-rw-r--r--doc/reference/clutter/Makefile.am28
-rw-r--r--doc/reference/clutter/clutter-docs.xml.in2
-rw-r--r--doc/reference/clutter/clutter-sections.txt46
-rw-r--r--doc/reference/clutter/clutter.types1
-rw-r--r--doc/reference/clutter/constraints-example.pngbin5985 -> 6199 bytes
-rw-r--r--po/es.po1103
-rw-r--r--tests/interactive/Makefile.am3
-rw-r--r--tests/interactive/test-drop.c245
-rw-r--r--tests/interactive/test-events.c11
-rw-r--r--tests/interactive/test-grab.c10
43 files changed, 1873 insertions, 1250 deletions
diff --git a/clutter/Makefile.am b/clutter/Makefile.am
index 29cf3e3e4..5c7cb44ef 100644
--- a/clutter/Makefile.am
+++ b/clutter/Makefile.am
@@ -77,6 +77,7 @@ source_h = \
$(srcdir)/clutter-desaturate-effect.h \
$(srcdir)/clutter-device-manager.h \
$(srcdir)/clutter-drag-action.h \
+ $(srcdir)/clutter-drop-action.h \
$(srcdir)/clutter-effect.h \
$(srcdir)/clutter-event.h \
$(srcdir)/clutter-feature.h \
@@ -149,6 +150,7 @@ source_c = \
$(srcdir)/clutter-desaturate-effect.c \
$(srcdir)/clutter-device-manager.c \
$(srcdir)/clutter-drag-action.c \
+ $(srcdir)/clutter-drop-action.c \
$(srcdir)/clutter-effect.c \
$(srcdir)/clutter-event.c \
$(srcdir)/clutter-feature.c \
@@ -343,18 +345,6 @@ cogl_source_h_priv = \
cogl_source_c_priv =
-if SUPPORT_X11
-# For compatability with the old GLX backend
-#
-# Note: there wasn't actually anything GLX specific so we can add
-# the compatability if clutter supports x11
-glx_source_c = $(srcdir)/cogl/clutter-glx-texture-pixmap.c
-glx_source_h = $(srcdir)/cogl/clutter-glx-texture-pixmap.h \
- $(srcdir)/cogl/clutter-glx.h
-clutterglx_includedir = $(clutter_includedir)/glx
-clutterglx_include_HEADERS = $(glx_source_h)
-endif
-
if SUPPORT_GLX
backend_source_h += $(cogl_source_h)
backend_source_c += $(cogl_source_c)
diff --git a/clutter/clutter-actor-private.h b/clutter/clutter-actor-private.h
index d1cf0b29a..3af853f4f 100644
--- a/clutter/clutter-actor-private.h
+++ b/clutter/clutter-actor-private.h
@@ -121,9 +121,9 @@ ClutterActor *_clutter_actor_get_stage_internal (ClutterActor *actor);
void _clutter_actor_apply_modelview_transform (ClutterActor *self,
CoglMatrix *matrix);
-void _clutter_actor_apply_modelview_transform_recursive (ClutterActor *self,
- ClutterActor *ancestor,
- CoglMatrix *matrix);
+void _clutter_actor_apply_relative_transformation_matrix (ClutterActor *self,
+ ClutterActor *ancestor,
+ CoglMatrix *matrix);
void _clutter_actor_rerealize (ClutterActor *self,
ClutterCallback callback,
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index ca73928dd..2151eb876 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -412,6 +412,11 @@ struct _ClutterActorPrivate
guint last_paint_volume_valid : 1;
guint in_clone_paint : 1;
guint transform_valid : 1;
+ /* This is TRUE if anything has queued a redraw since we were last
+ painted. In this case effect_to_redraw will point to an effect
+ the redraw was queued from or it will be NULL if the redraw was
+ queued without an effect. */
+ guint is_dirty : 1;
gfloat clip[4];
@@ -482,7 +487,9 @@ struct _ClutterActorPrivate
redraw can be queued to start from a particular effect. This is
used by parametrised effects that can cache an image of the
actor. If a parameter of the effect changes then it only needs to
- redraw the cached image, not the actual actor */
+ redraw the cached image, not the actual actor. The pointer is
+ only valid if is_dirty == TRUE. If the pointer is NULL then the
+ whole actor is dirty. */
ClutterEffect *effect_to_redraw;
ClutterPaintVolume paint_volume;
@@ -669,9 +676,9 @@ static gboolean clutter_anchor_coord_is_zero (const AnchorCoord *coord);
static void _clutter_actor_queue_only_relayout (ClutterActor *self);
-static void _clutter_actor_get_relative_modelview (ClutterActor *self,
- ClutterActor *ancestor,
- CoglMatrix *matrix);
+static void _clutter_actor_get_relative_transformation_matrix (ClutterActor *self,
+ ClutterActor *ancestor,
+ CoglMatrix *matrix);
static ClutterPaintVolume *_clutter_actor_get_paint_volume_mutable (ClutterActor *self);
@@ -1901,6 +1908,14 @@ clutter_actor_real_queue_redraw (ClutterActor *self,
if (CLUTTER_ACTOR_IN_DESTRUCTION (self))
return;
+ /* If the queue redraw is coming from a child then the actor has
+ become dirty and any queued effect is no longer valid */
+ if (self != origin)
+ {
+ self->priv->is_dirty = TRUE;
+ self->priv->effect_to_redraw = NULL;
+ }
+
/* If the actor isn't visible, we still had to emit the signal
* to allow for a ClutterClone, but the appearance of the parent
* won't change so we don't have to propagate up the hierarchy.
@@ -1925,14 +1940,6 @@ clutter_actor_real_queue_redraw (ClutterActor *self,
self->priv->propagated_one_redraw = TRUE;
- /* If the queue redraw is coming from a child actor then we'll
- assume the queued effect is no longer valid. If this actor has
- had a redraw queued then that will mean it will instead redraw
- the whole actor. If it hasn't had a redraw queued then it will
- stay that way */
- if (self != origin)
- self->priv->effect_to_redraw = NULL;
-
/* notify parents, if they are all visible eventually we'll
* queue redraw on the stage, which queues the redraw idle.
*/
@@ -2013,7 +2020,7 @@ clutter_actor_apply_relative_transform_to_point (ClutterActor *self,
return;
}
- _clutter_actor_get_relative_modelview (self, ancestor, &matrix);
+ _clutter_actor_get_relative_transformation_matrix (self, ancestor, &matrix);
cogl_matrix_transform_point (&matrix, &vertex->x, &vertex->y, &vertex->z, &w);
}
@@ -2030,10 +2037,6 @@ _clutter_actor_fully_transform_vertices (ClutterActor *self,
g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE);
- /* NB: _clutter_actor_apply_modelview_transform_recursive will never
- * include the transformation between stage coordinates and OpenGL
- * eye coordinates, we have to explicitly use the
- * stage->apply_transform to get that... */
stage = _clutter_actor_get_stage_internal (self);
/* We really can't do anything meaningful in this case so don't try
@@ -2041,10 +2044,10 @@ _clutter_actor_fully_transform_vertices (ClutterActor *self,
if (stage == NULL)
return FALSE;
- /* Setup the modelview */
- cogl_matrix_init_identity (&modelview);
- _clutter_actor_apply_modelview_transform (stage, &modelview);
- _clutter_actor_apply_modelview_transform_recursive (self, stage, &modelview);
+ /* Note: we pass NULL as the ancestor because we don't just want the modelview
+ * that gets us to stage coordinates, we want to go all the way to eye
+ * coordinates */
+ _clutter_actor_apply_relative_transformation_matrix (self, NULL, &modelview);
/* Fetch the projection and viewport */
_clutter_stage_get_projection_matrix (CLUTTER_STAGE (stage), &projection);
@@ -2086,37 +2089,43 @@ clutter_actor_apply_transform_to_point (ClutterActor *self,
_clutter_actor_fully_transform_vertices (self, point, vertex, 1);
}
-/* _clutter_actor_get_relative_modelview:
- *
- * Retrieves the modelview transformation relative to some ancestor
- * actor, or the stage if NULL is given for the ancestor.
- *
- * Note: This will never include the transformations from
- * stage::apply_transform since that would give you a modelview
- * transform relative to the OpenGL window coordinate space that the
- * stage lies within.
- *
- * If you need to do a full modelview + projective transform and get
- * to window coordinates then you should explicitly apply the stage
- * transform to an identity matrix and use
- * _clutter_actor_apply_modelview_transform like:
- *
- * cogl_matrix_init_identity (&mtx);
- * stage = _clutter_actor_get_stage_internal (self);
- * _clutter_actor_apply_modelview_transform (stage, &mtx);
- */
-/* FIXME: We should be caching the stage relative modelview along with the
- * actor itself */
+/*
+ * _clutter_actor_get_relative_transformation_matrix:
+ * @self: The actor whose coordinate space you want to transform from.
+ * @ancestor: The ancestor actor whose coordinate space you want to transform too
+ * or %NULL if you want to transform all the way to eye coordinates.
+ * @matrix: A #CoglMatrix to store the transformation
+ *
+ * This gets a transformation @matrix that will transform coordinates from the
+ * coordinate space of @self into the coordinate space of @ancestor.
+ *
+ * For example if you need a matrix that can transform the local actor
+ * coordinates of @self into stage coordinates you would pass the actor's stage
+ * pointer as the @ancestor.
+ *
+ * If you pass %NULL then the transformation will take you all the way through
+ * to eye coordinates. This can be useful if you want to extract the entire
+ * modelview transform that Clutter applies before applying the projection
+ * transformation. If you want to explicitly set a modelview on a CoglFramebuffer
+ * using cogl_set_modelview_matrix() for example then you would want a matrix
+ * that transforms into eye coordinates.
+ *
+ * <note>This function explicitly initializes the given @matrix. If you just
+ * want clutter to multiply a relative transformation with an existing matrix
+ * you can use clutter_actor_apply_relative_transformation_matrix() instead.
+ * </note>
+ *
+ */
+/* XXX: We should consider caching the stage relative modelview along with
+ * the actor itself */
static void
-_clutter_actor_get_relative_modelview (ClutterActor *self,
- ClutterActor *ancestor,
- CoglMatrix *matrix)
+_clutter_actor_get_relative_transformation_matrix (ClutterActor *self,
+ ClutterActor *ancestor,
+ CoglMatrix *matrix)
{
- g_return_if_fail (ancestor != NULL);
-
cogl_matrix_init_identity (matrix);
- _clutter_actor_apply_modelview_transform_recursive (self, ancestor, matrix);
+ _clutter_actor_apply_relative_transformation_matrix (self, ancestor, matrix);
}
/* Project the given @box into stage window coordinates, writing the
@@ -2224,7 +2233,8 @@ clutter_actor_get_allocation_vertices (ClutterActor *self,
vertices[3].y = box.y2;
vertices[3].z = 0;
- _clutter_actor_get_relative_modelview (self, ancestor, &modelview);
+ _clutter_actor_get_relative_transformation_matrix (self, ancestor,
+ &modelview);
cogl_matrix_transform_points (&modelview,
3,
@@ -2370,14 +2380,37 @@ _clutter_actor_apply_modelview_transform (ClutterActor *self,
CLUTTER_ACTOR_GET_CLASS (self)->apply_transform (self, matrix);
}
-/* Recursively applies the transforms associated with this actor and
- * its ancestors to the given matrix. Use NULL if you want this
- * to go all the way down to the stage.
+/*
+ * clutter_actor_apply_relative_transformation_matrix:
+ * @self: The actor whose coordinate space you want to transform from.
+ * @ancestor: The ancestor actor whose coordinate space you want to transform too
+ * or %NULL if you want to transform all the way to eye coordinates.
+ * @matrix: A #CoglMatrix to apply the transformation too.
+ *
+ * This multiplies a transform with @matrix that will transform coordinates
+ * from the coordinate space of @self into the coordinate space of @ancestor.
+ *
+ * For example if you need a matrix that can transform the local actor
+ * coordinates of @self into stage coordinates you would pass the actor's stage
+ * pointer as the @ancestor.
+ *
+ * If you pass %NULL then the transformation will take you all the way through
+ * to eye coordinates. This can be useful if you want to extract the entire
+ * modelview transform that Clutter applies before applying the projection
+ * transformation. If you want to explicitly set a modelview on a CoglFramebuffer
+ * using cogl_set_modelview_matrix() for example then you would want a matrix
+ * that transforms into eye coordinates.
+ *
+ * <note>This function doesn't initialize the given @matrix, it simply
+ * multiplies the requested transformation matrix with the existing contents of
+ * @matrix. You can use cogl_matrix_init_identity() to initialize the @matrix
+ * before calling this function, or you can use
+ * clutter_actor_get_relative_transformation_matrix() instead.</note>
*/
void
-_clutter_actor_apply_modelview_transform_recursive (ClutterActor *self,
- ClutterActor *ancestor,
- CoglMatrix *matrix)
+_clutter_actor_apply_relative_transformation_matrix (ClutterActor *self,
+ ClutterActor *ancestor,
+ CoglMatrix *matrix)
{
ClutterActor *parent;
@@ -2391,8 +2424,8 @@ _clutter_actor_apply_modelview_transform_recursive (ClutterActor *self,
parent = clutter_actor_get_parent (self);
if (parent != NULL)
- _clutter_actor_apply_modelview_transform_recursive (parent, ancestor,
- matrix);
+ _clutter_actor_apply_relative_transformation_matrix (parent, ancestor,
+ matrix);
_clutter_actor_apply_modelview_transform (self, matrix);
}
@@ -2404,7 +2437,7 @@ _clutter_actor_draw_paint_volume_full (ClutterActor *self,
const CoglColor *color)
{
static CoglMaterial *outline = NULL;
- CoglHandle vbo;
+ CoglPrimitive *prim;
ClutterVertex line_ends[12 * 2];
int n_vertices;
@@ -2436,20 +2469,13 @@ _clutter_actor_draw_paint_volume_full (ClutterActor *self,
line_ends[22] = pv->vertices[3]; line_ends[23] = pv->vertices[7];
}
- vbo = cogl_vertex_buffer_new (n_vertices);
- cogl_vertex_buffer_add (vbo,
- "gl_Vertex",
- 3, /* n_components */
- COGL_ATTRIBUTE_TYPE_FLOAT,
- FALSE, /* normalized */
- 0, /* stride */
- line_ends);
+ prim = cogl_primitive_new_p3 (COGL_VERTICES_MODE_LINES, n_vertices,
+ (CoglVertexP3 *)line_ends);
cogl_material_set_color (outline, color);
cogl_set_source (outline);
- cogl_vertex_buffer_draw (vbo, COGL_VERTICES_MODE_LINES,
- 0 , n_vertices);
- cogl_object_unref (vbo);
+ cogl_primitive_draw (prim);
+ cogl_object_unref (prim);
if (label)
{
@@ -2685,6 +2711,10 @@ needs_flatten_effect (ClutterActor *self)
{
ClutterActorPrivate *priv = self->priv;
+ if (G_UNLIKELY (clutter_paint_debug_flags &
+ CLUTTER_DEBUG_DISABLE_OFFSCREEN_REDIRECT))
+ return FALSE;
+
switch (priv->offscreen_redirect)
{
case CLUTTER_OFFSCREEN_REDIRECT_AUTOMATIC_FOR_OPACITY:
@@ -2787,6 +2817,9 @@ clutter_actor_paint (ClutterActor *self)
pick_mode = _clutter_context_get_pick_mode ();
+ if (pick_mode == CLUTTER_PICK_NONE)
+ priv->propagated_one_redraw = FALSE;
+
/* It's an important optimization that we consider painting of
* actors with 0 opacity to be a NOP... */
if (pick_mode == CLUTTER_PICK_NONE &&
@@ -2795,10 +2828,7 @@ clutter_actor_paint (ClutterActor *self)
/* Use the override opacity if its been set */
((priv->opacity_override >= 0) ?
priv->opacity_override : priv->opacity) == 0)
- {
- priv->propagated_one_redraw = FALSE;
- return;
- }
+ return;
/* if we aren't paintable (not in a toplevel with all
* parents paintable) then do nothing.
@@ -2886,7 +2916,8 @@ clutter_actor_paint (ClutterActor *self)
success = cull_actor (self, &result);
- if (G_UNLIKELY (clutter_paint_debug_flags & CLUTTER_DEBUG_REDRAWS))
+ if (G_UNLIKELY (clutter_paint_debug_flags & CLUTTER_DEBUG_REDRAWS &&
+ pick_mode == CLUTTER_PICK_NONE))
_clutter_actor_paint_cull_result (self, success, result);
else if (result == CLUTTER_CULL_RESULT_OUT && success)
goto done;
@@ -2902,10 +2933,16 @@ clutter_actor_paint (ClutterActor *self)
clutter_actor_continue_paint (self);
- if (G_UNLIKELY (clutter_paint_debug_flags & CLUTTER_DEBUG_PAINT_VOLUMES))
+ if (G_UNLIKELY (clutter_paint_debug_flags & CLUTTER_DEBUG_PAINT_VOLUMES &&
+ pick_mode == CLUTTER_PICK_NONE))
_clutter_actor_draw_paint_volume (self);
done:
+ /* If we make it here then the actor has run through a complete
+ paint run including all the effects so it's no longer dirty */
+ if (pick_mode == CLUTTER_PICK_NONE)
+ priv->is_dirty = FALSE;
+
if (clip_set)
cogl_clip_pop();
@@ -2949,11 +2986,7 @@ clutter_actor_continue_paint (ClutterActor *self)
if (priv->next_effect_to_paint == NULL)
{
if (_clutter_context_get_pick_mode () == CLUTTER_PICK_NONE)
- {
- priv->propagated_one_redraw = FALSE;
-
- g_signal_emit (self, actor_signals[PAINT], 0);
- }
+ g_signal_emit (self, actor_signals[PAINT], 0);
else
{
ClutterColor col = { 0, };
@@ -2981,7 +3014,7 @@ clutter_actor_continue_paint (ClutterActor *self)
if (_clutter_context_get_pick_mode () == CLUTTER_PICK_NONE)
{
- if (priv->propagated_one_redraw)
+ if (priv->is_dirty)
{
/* If there's an effect queued with this redraw then all
effects up to that one will be considered dirty. It
@@ -5390,7 +5423,6 @@ _clutter_actor_queue_redraw_full (ClutterActor *self,
ClutterPaintVolume *pv;
gboolean should_free_pv;
ClutterActor *stage;
- gboolean was_dirty;
/* Here's an outline of the actor queue redraw mechanism:
*
@@ -5513,8 +5545,6 @@ _clutter_actor_queue_redraw_full (ClutterActor *self,
should_free_pv = FALSE;
}
- was_dirty = priv->queue_redraw_entry != NULL;
-
self->priv->queue_redraw_entry =
_clutter_stage_queue_actor_redraw (CLUTTER_STAGE (stage),
priv->queue_redraw_entry,
@@ -5526,7 +5556,7 @@ _clutter_actor_queue_redraw_full (ClutterActor *self,
/* If this is the first redraw queued then we can directly use the
effect parameter */
- if (!was_dirty)
+ if (!priv->is_dirty)
priv->effect_to_redraw = effect;
/* Otherwise we need to merge it with the existing effect parameter */
else if (effect)
@@ -5559,6 +5589,8 @@ _clutter_actor_queue_redraw_full (ClutterActor *self,
/* If no effect is specified then we need to redraw the whole
actor */
priv->effect_to_redraw = NULL;
+
+ priv->is_dirty = TRUE;
}
/**
diff --git a/clutter/clutter-debug.h b/clutter/clutter-debug.h
index f3ee80515..9ee1e4447 100644
--- a/clutter/clutter-debug.h
+++ b/clutter/clutter-debug.h
@@ -39,7 +39,8 @@ typedef enum {
CLUTTER_DEBUG_DISABLE_CLIPPED_REDRAWS = 1 << 1,
CLUTTER_DEBUG_REDRAWS = 1 << 2,
CLUTTER_DEBUG_PAINT_VOLUMES = 1 << 3,
- CLUTTER_DEBUG_DISABLE_CULLING = 1 << 4
+ CLUTTER_DEBUG_DISABLE_CULLING = 1 << 4,
+ CLUTTER_DEBUG_DISABLE_OFFSCREEN_REDIRECT = 1 << 5
} ClutterDrawDebugFlag;
#ifdef CLUTTER_ENABLE_DEBUG
diff --git a/clutter/clutter-device-manager.c b/clutter/clutter-device-manager.c
index 489aa9b4d..cf0d4fca0 100644
--- a/clutter/clutter-device-manager.c
+++ b/clutter/clutter-device-manager.c
@@ -422,7 +422,7 @@ _clutter_device_manager_update_devices (ClutterDeviceManager *device_manager)
* since the source of the events will always be set to be
* the stage
*/
- if (!_clutter_stage_get_motion_events_enabled (device->stage))
+ if (!clutter_stage_get_motion_events_enabled (device->stage))
continue;
_clutter_input_device_update (device, TRUE);
diff --git a/clutter/clutter-drag-action.c b/clutter/clutter-drag-action.c
index 99efa2a31..c8302be1b 100644
--- a/clutter/clutter-drag-action.c
+++ b/clutter/clutter-drag-action.c
@@ -78,6 +78,7 @@ struct _ClutterDragActionPrivate
ClutterActor *drag_handle;
ClutterDragAxis drag_axis;
+ ClutterInputDevice *device;
gulong button_press_id;
gulong capture_id;
@@ -164,7 +165,14 @@ emit_drag_begin (ClutterDragAction *action,
ClutterDragActionPrivate *priv = action->priv;
if (priv->stage != NULL)
- _clutter_stage_set_motion_events_enabled (priv->stage, FALSE);
+ {
+ clutter_stage_set_motion_events_enabled (priv->stage, FALSE);
+ _clutter_stage_add_drag_actor (priv->stage,
+ clutter_event_get_device (event),
+ priv->drag_handle != NULL
+ ? priv->drag_handle
+ : actor);
+ }
g_signal_emit (action, drag_signals[DRAG_BEGIN], 0,
actor,
@@ -262,8 +270,10 @@ emit_drag_end (ClutterDragAction *action,
priv->capture_id = 0;
}
- _clutter_stage_set_motion_events_enabled (priv->stage,
- priv->motion_events_enabled);
+ clutter_stage_set_motion_events_enabled (priv->stage,
+ priv->motion_events_enabled);
+ _clutter_stage_remove_drag_actor (priv->stage,
+ clutter_event_get_device (event));
priv->in_drag = FALSE;
}
@@ -281,6 +291,9 @@ on_captured_event (ClutterActor *stage,
if (!priv->in_drag)
return FALSE;
+ if (clutter_event_get_device (event) != priv->device)
+ return FALSE;
+
switch (clutter_event_type (event))
{
case CLUTTER_MOTION:
@@ -335,6 +348,8 @@ on_button_press (ClutterActor *actor,
clutter_event_get_coords (event, &priv->press_x, &priv->press_y);
priv->press_state = clutter_event_get_state (event);
+ priv->device = clutter_event_get_device (event);
+
priv->last_motion_x = priv->press_x;
priv->last_motion_y = priv->press_y;
@@ -345,7 +360,7 @@ on_button_press (ClutterActor *actor,
&priv->transformed_press_y);
priv->motion_events_enabled =
- _clutter_stage_get_motion_events_enabled (priv->stage);
+ clutter_stage_get_motion_events_enabled (priv->stage);
if (priv->x_drag_threshold == 0 || priv->y_drag_threshold == 0)
emit_drag_begin (action, actor, event);
@@ -507,6 +522,8 @@ clutter_drag_action_dispose (GObject *gobject)
priv->button_press_id = 0;
}
+ clutter_drag_action_set_drag_handle (CLUTTER_DRAG_ACTION (gobject), NULL);
+
G_OBJECT_CLASS (clutter_drag_action_parent_class)->dispose (gobject);
}
@@ -828,12 +845,19 @@ clutter_drag_action_get_drag_threshold (ClutterDragAction *action,
*y_threshold = y_res;
}
+static void
+on_drag_handle_destroy (ClutterActor *actor,
+ ClutterDragAction *action)
+{
+ action->priv->drag_handle = NULL;
+}
+
/**
* clutter_drag_action_set_drag_handle:
* @action: a #ClutterDragAction
- * @handle: a #ClutterActor
+ * @handle: (allow-none): a #ClutterActor, or %NULL to unset
*
- * Sets the actor to be used as the drag handle
+ * Sets the actor to be used as the drag handle.
*
* Since: 1.4
*/
@@ -844,15 +868,25 @@ clutter_drag_action_set_drag_handle (ClutterDragAction *action,
ClutterDragActionPrivate *priv;
g_return_if_fail (CLUTTER_IS_DRAG_ACTION (action));
- g_return_if_fail (CLUTTER_IS_ACTOR (handle));
+ g_return_if_fail (handle == NULL || CLUTTER_IS_ACTOR (handle));
priv = action->priv;
if (priv->drag_handle == handle)
return;
+ if (priv->drag_handle != NULL)
+ g_signal_handlers_disconnect_by_func (priv->drag_handle,
+ G_CALLBACK (on_drag_handle_destroy),
+ action);
+
priv->drag_handle = handle;
+ if (priv->drag_handle != NULL)
+ g_signal_connect (priv->drag_handle, "destroy",
+ G_CALLBACK (on_drag_handle_destroy),
+ action);
+
g_object_notify_by_pspec (G_OBJECT (action), drag_props[PROP_DRAG_HANDLE]);
}
diff --git a/clutter/clutter-drop-action.c b/clutter/clutter-drop-action.c
new file mode 100644
index 000000000..b52dc0d91
--- /dev/null
+++ b/clutter/clutter-drop-action.c
@@ -0,0 +1,469 @@
+/*
+ * Clutter.
+ *
+ * An OpenGL based 'interactive canvas' library.
+ *
+ * Copyright © 2011 Intel Corporation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+/**
+ * SECTION:clutter-drop-action
+ * @Title: ClutterDropAction
+ * @short_description: An action for drop targets
+ *
+ * #ClutterDropAction is a #ClutterAction that allows a #ClutterActor
+ * implementation to control what happens when a dragged actor crosses
+ * the target area or when a dragged actor is released (or "dropped")
+ * on the target area.
+ *
+ * A trivial use of #ClutterDropAction consists in connecting to the
+ * #ClutterDropAction::drop signal and handling the drop from there,
+ * for instance:
+ *
+ * |[
+ * ClutterAction *action = clutter_drop_action ();
+ *
+ * g_signal_connect (action, "drop", G_CALLBACK (on_drop), NULL);
+ * clutter_actor_add_action (an_actor, action);
+ * ]|
+ *
+ * The #ClutterDropAction::can-drop can be used to control whether the
+ * #ClutterDropAction::drop signal is going to be emitted; returning %FALSE
+ * from a handler connected to the #ClutterDropAction::can-drop signal will
+ * cause the #ClutterDropAction::drop signal to be skipped when the input
+ * device button is released.
+ *
+ * #ClutterDropAction is available since Clutter 1.8
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "clutter-drop-action.h"
+
+#include "clutter-actor-meta-private.h"
+#include "clutter-actor-private.h"
+#include "clutter-drag-action.h"
+#include "clutter-main.h"
+#include "clutter-marshal.h"
+#include "clutter-stage-private.h"
+
+struct _ClutterDropActionPrivate
+{
+ ClutterActor *actor;
+ ClutterActor *stage;
+
+ gulong mapped_id;
+};
+
+typedef struct _DropTarget {
+ ClutterActor *stage;
+
+ gulong capture_id;
+
+ GHashTable *actions;
+
+ ClutterDropAction *last_action;
+} DropTarget;
+
+enum
+{
+ CAN_DROP,
+ OVER_IN,
+ OVER_OUT,
+ DROP,
+
+ LAST_SIGNAL
+};
+
+static guint drop_signals[LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (ClutterDropAction, clutter_drop_action, CLUTTER_TYPE_ACTION)
+
+static void
+drop_target_free (gpointer _data)
+{
+ DropTarget *data = _data;
+
+ g_signal_handler_disconnect (data->stage, data->capture_id);
+ g_hash_table_destroy (data->actions);
+ g_free (data);
+}
+
+static gboolean
+on_stage_capture (ClutterStage *stage,
+ ClutterEvent *event,
+ gpointer user_data)
+{
+ DropTarget *data = user_data;
+ gfloat event_x, event_y;
+ ClutterInputDevice *device;
+ ClutterActor *actor, *drag_actor;
+ ClutterDropAction *drop_action;
+ gboolean was_reactive;
+
+ if (!(clutter_event_type (event) == CLUTTER_MOTION ||
+ clutter_event_type (event) == CLUTTER_BUTTON_RELEASE))
+ return FALSE;
+
+ if (!(clutter_event_get_state (event) & CLUTTER_BUTTON1_MASK))
+ return FALSE;
+
+ clutter_event_get_coords (event, &event_x, &event_y);
+ device = clutter_event_get_device (event);
+
+ drag_actor = _clutter_stage_get_drag_actor (stage, device);
+ if (drag_actor == NULL)
+ return FALSE;
+
+ /* get the actor under the cursor, excluding the dragged actor; we
+ * use reactivity because it won't cause any scene invalidation
+ */
+ was_reactive = clutter_actor_get_reactive (drag_actor);
+ clutter_actor_set_reactive (drag_actor, FALSE);
+
+ actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_REACTIVE,
+ event_x,
+ event_y);
+ if (actor == NULL || actor == CLUTTER_ACTOR (stage))
+ {
+ if (data->last_action != NULL)
+ {
+ ClutterActorMeta *meta = CLUTTER_ACTOR_META (data->last_action);
+
+ g_signal_emit (data->last_action, drop_signals[OVER_OUT], 0,
+ clutter_actor_meta_get_actor (meta));
+
+ data->last_action = NULL;
+ }
+
+ goto out;
+ }
+
+ drop_action = g_hash_table_lookup (data->actions, actor);
+
+ if (drop_action == NULL)
+ {
+ if (data->last_action != NULL)
+ {
+ ClutterActorMeta *meta = CLUTTER_ACTOR_META (data->last_action);
+
+ g_signal_emit (data->last_action, drop_signals[OVER_OUT], 0,
+ clutter_actor_meta_get_actor (meta));
+
+ data->last_action = NULL;
+ }
+
+ goto out;
+ }
+ else
+ {
+ if (data->last_action != drop_action)
+ {
+ ClutterActorMeta *meta;
+
+ if (data->last_action != NULL)
+ {
+ meta = CLUTTER_ACTOR_META (data->last_action);
+
+ g_signal_emit (data->last_action, drop_signals[OVER_OUT], 0,
+ clutter_actor_meta_get_actor (meta));
+ }
+
+ meta = CLUTTER_ACTOR_META (drop_action);
+
+ g_signal_emit (drop_action, drop_signals[OVER_IN], 0,
+ clutter_actor_meta_get_actor (meta));
+ }
+
+ data->last_action = drop_action;
+ }
+
+out:
+ if (clutter_event_type (event) == CLUTTER_BUTTON_RELEASE)
+ {
+ if (data->last_action != NULL)
+ {
+ ClutterActorMeta *meta = CLUTTER_ACTOR_META (data->last_action);
+ gboolean can_drop = FALSE;
+
+ g_signal_emit (data->last_action, drop_signals[CAN_DROP], 0,
+ clutter_actor_meta_get_actor (meta),
+ event_x, event_y,
+ &can_drop);
+
+ if (can_drop)
+ {
+ g_signal_emit (data->last_action, drop_signals[DROP], 0,
+ clutter_actor_meta_get_actor (meta),
+ event_x, event_y);
+ }
+ }
+
+ data->last_action = NULL;
+ }
+
+ if (drag_actor != NULL)
+ clutter_actor_set_reactive (drag_actor, was_reactive);
+
+ return FALSE;
+}
+
+static void
+drop_action_register (ClutterDropAction *self)
+{
+ ClutterDropActionPrivate *priv = self->priv;
+ DropTarget *data;
+
+ g_assert (priv->stage != NULL);
+
+ data = g_object_get_data (G_OBJECT (priv->stage), "__clutter_drop_targets");
+ if (data == NULL)
+ {
+ data = g_new0 (DropTarget, 1);
+
+ data->stage = priv->stage;
+ data->actions = g_hash_table_new (NULL, NULL);
+ data->capture_id = g_signal_connect (priv->stage, "captured-event",
+ G_CALLBACK (on_stage_capture),
+ data);
+ g_object_set_data_full (G_OBJECT (priv->stage), "__clutter_drop_targets",
+ data,
+ drop_target_free);
+ }
+
+ g_hash_table_replace (data->actions, priv->actor, self);
+}
+
+static void
+drop_action_unregister (ClutterDropAction *self)
+{
+ ClutterDropActionPrivate *priv = self->priv;
+ DropTarget *data;
+
+ data = g_object_get_data (G_OBJECT (priv->stage), "__clutter_drop_targets");
+ if (data == NULL)
+ return;
+
+ g_hash_table_remove (data->actions, priv->actor);
+ if (g_hash_table_size (data->actions) == 0)
+ g_object_set_data (G_OBJECT (data->stage), "__clutter_drop_targets", NULL);
+}
+
+static void
+on_actor_mapped (ClutterActor *actor,
+ GParamSpec *pspec,
+ ClutterDropAction *self)
+{
+ if (CLUTTER_ACTOR_IS_MAPPED (actor))
+ {
+ if (self->priv->stage == NULL)
+ self->priv->stage = clutter_actor_get_stage (actor);
+
+ drop_action_register (self);
+ }
+ else
+ drop_action_unregister (self);
+}
+
+static void
+clutter_drop_action_set_actor (ClutterActorMeta *meta,
+ ClutterActor *actor)
+{
+ ClutterDropActionPrivate *priv = CLUTTER_DROP_ACTION (meta)->priv;
+
+ if (priv->actor != NULL)
+ {
+ drop_action_unregister (CLUTTER_DROP_ACTION (meta));
+
+ if (priv->mapped_id != 0)
+ g_signal_handler_disconnect (priv->actor, priv->mapped_id);
+
+ priv->stage = NULL;
+ priv->actor = NULL;
+ priv->mapped_id = 0;
+ }
+
+ priv->actor = actor;
+
+ if (priv->actor != NULL)
+ {
+ priv->stage = clutter_actor_get_stage (actor);
+ priv->mapped_id = g_signal_connect (actor, "notify::mapped",
+ G_CALLBACK (on_actor_mapped),
+ meta);
+
+ if (priv->stage != NULL)
+ drop_action_register (CLUTTER_DROP_ACTION (meta));
+ }
+
+ CLUTTER_ACTOR_META_CLASS (clutter_drop_action_parent_class)->set_actor (meta, actor);
+}
+
+static gboolean
+signal_accumulator (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer user_data)
+{
+ gboolean continue_emission;
+
+ continue_emission = g_value_get_boolean (handler_return);
+ g_value_set_boolean (return_accu, continue_emission);
+
+ return continue_emission;
+}
+
+static gboolean
+clutter_drop_action_real_can_drop (ClutterDropAction *action,
+ ClutterActor *actor,
+ gfloat event_x,
+ gfloat event_y)
+{
+ return TRUE;
+}
+
+static void
+clutter_drop_action_class_init (ClutterDropActionClass *klass)
+{
+ ClutterActorMetaClass *meta_class = CLUTTER_ACTOR_META_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (ClutterDropActionPrivate));
+
+ meta_class->set_actor = clutter_drop_action_set_actor;
+
+ klass->can_drop = clutter_drop_action_real_can_drop;
+
+ /**
+ * ClutterDropAction::can-drop:
+ * @action: the #ClutterDropAction that emitted the signal
+ * @actor: the #ClutterActor attached to the @action
+ *
+ * The ::can-drop signal is emitted when the dragged actor is dropped
+ * on @actor. The return value of the ::can-drop signal will determine
+ * whether or not the #ClutterDropAction::drop signal is going to be
+ * emitted on @action.
+ *
+ * The default implementation of #ClutterDropAction returns %TRUE for
+ * this signal.
+ *
+ * Return value: %TRUE if the drop is accepted, and %FALSE otherwise
+ *
+ * Since: 1.8
+ */
+ drop_signals[CAN_DROP] =
+ g_signal_new (I_("can-drop"),
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ClutterDropActionClass, can_drop),
+ signal_accumulator, NULL,
+ _clutter_marshal_BOOLEAN__OBJECT_FLOAT_FLOAT,
+ G_TYPE_BOOLEAN, 3,
+ CLUTTER_TYPE_ACTOR,
+ G_TYPE_FLOAT,
+ G_TYPE_FLOAT);
+
+ /**
+ * ClutterDropAction::over-in:
+ * @action: the #ClutterDropAction that emitted the signal
+ * @actor: the #ClutterActor attached to the @action
+ *
+ * The ::over-in signal is emitted when the dragged actor crosses
+ * into @actor.
+ *
+ * Since: 1.8
+ */
+ drop_signals[OVER_IN] =
+ g_signal_new (I_("over-in"),
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ClutterDropActionClass, over_in),
+ NULL, NULL,
+ _clutter_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ CLUTTER_TYPE_ACTOR);
+
+ /**
+ * ClutterDropAction::over-out:
+ * @action: the #ClutterDropAction that emitted the signal
+ * @actor: the #ClutterActor attached to the @action
+ *
+ * The ::over-out signal is emitted when the dragged actor crosses
+ * outside @actor.
+ *
+ * Since: 1.8
+ */
+ drop_signals[OVER_OUT] =
+ g_signal_new (I_("over-out"),
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ClutterDropActionClass, over_out),
+ NULL, NULL,
+ _clutter_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ CLUTTER_TYPE_ACTOR);
+
+ /**
+ * ClutterDropAction::drop:
+ * @action: the #ClutterDropAction that emitted the signal
+ * @actor: the #ClutterActor attached to the @action
+ *
+ * The ::drop signal is emitted when the dragged actor is dropped
+ * on @actor. This signal is only emitted if at least an handler of
+ * #ClutterDropAction::can-drop returns %TRUE.
+ *
+ * Since: 1.8
+ */
+ drop_signals[DROP] =
+ g_signal_new (I_("drop"),
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ClutterDropActionClass, drop),
+ NULL, NULL,
+ _clutter_marshal_VOID__OBJECT_FLOAT_FLOAT,
+ G_TYPE_NONE, 3,
+ CLUTTER_TYPE_ACTOR,
+ G_TYPE_FLOAT,
+ G_TYPE_FLOAT);
+}
+
+static void
+clutter_drop_action_init (ClutterDropAction *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, CLUTTER_TYPE_DROP_ACTION,
+ ClutterDropActionPrivate);
+}
+
+/**
+ * clutter_drop_action_new:
+ *
+ * Creates a new #ClutterDropAction.
+ *
+ * Use clutter_actor_add_action() to add the action to a #ClutterActor.
+ *
+ * Return value: the newly created #ClutterDropAction
+ *
+ * Since: 1.8
+ */
+ClutterAction *
+clutter_drop_action_new (void)
+{
+ return g_object_new (CLUTTER_TYPE_DROP_ACTION, NULL);
+}
diff --git a/clutter/clutter-drop-action.h b/clutter/clutter-drop-action.h
new file mode 100644
index 000000000..732baad57
--- /dev/null
+++ b/clutter/clutter-drop-action.h
@@ -0,0 +1,113 @@
+/*
+ * Clutter.
+ *
+ * An OpenGL based 'interactive canvas' library.
+ *
+ * Copyright © 2011 Intel Corporation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+#if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
+#error "Only <clutter/clutter.h> can be directly included."
+#endif
+
+#ifndef __CLUTTER_DROP_ACTION_H__
+#define __CLUTTER_DROP_ACTION_H__
+
+#include <clutter/clutter-action.h>
+
+G_BEGIN_DECLS
+
+#define CLUTTER_TYPE_DROP_ACTION (clutter_drop_action_get_type ())
+#define CLUTTER_DROP_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_DROP_ACTION, ClutterDropAction))
+#define CLUTTER_IS_DROP_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_DROP_ACTION))
+#define CLUTTER_DROP_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_DROP_ACTION, ClutterDropActionClass))
+#define CLUTTER_IS_DROP_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_DROP_ACTION))
+#define CLUTTER_DROP_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_DROP_ACTION, ClutterDropActionClass))
+
+typedef struct _ClutterDropAction ClutterDropAction;
+typedef struct _ClutterDropActionPrivate ClutterDropActionPrivate;
+typedef struct _ClutterDropActionClass ClutterDropActionClass;
+
+/**
+ * ClutterDropAction:
+ *
+ * The <structname>ClutterDropAction</structname> structure contains only
+ * private data and should be accessed using the provided API.
+ *
+ * Since: 1.8
+ */
+struct _ClutterDropAction
+{
+ /*< private >*/
+ ClutterAction parent_instance;
+
+ ClutterDropActionPrivate *priv;
+};
+
+/**
+ * ClutterDropActionClass:
+ * @can_drop: class handler for the #ClutterDropAction::can-drop signal
+ * @over_in: class handler for the #ClutterDropAction::over-in signal
+ * @over_out: class handler for the #ClutterDropAction::over-out signal
+ * @drop: class handler for the #ClutterDropAction::drop signal
+ *
+ * The <structname>ClutterDropActionClass</structname> structure contains
+ * only private data.
+ *
+ * Since: 1.8
+ */
+struct _ClutterDropActionClass
+{
+ /*< private >*/
+ ClutterActionClass parent_class;
+
+ /*< public >*/
+ gboolean (* can_drop) (ClutterDropAction *action,
+ ClutterActor *actor,
+ gfloat event_x,
+ gfloat event_y);
+
+ void (* over_in) (ClutterDropAction *action,
+ ClutterActor *actor);
+ void (* over_out) (ClutterDropAction *action,
+ ClutterActor *actor);
+
+ void (* drop) (ClutterDropAction *action,
+ ClutterActor *actor,
+ gfloat event_x,
+ gfloat event_y);
+
+ /*< private >*/
+ void (*_clutter_drop_action1) (void);
+ void (*_clutter_drop_action2) (void);
+ void (*_clutter_drop_action3) (void);
+ void (*_clutter_drop_action4) (void);
+ void (*_clutter_drop_action5) (void);
+ void (*_clutter_drop_action6) (void);
+ void (*_clutter_drop_action7) (void);
+ void (*_clutter_drop_action8) (void);
+};
+
+GType clutter_drop_action_get_type (void) G_GNUC_CONST;
+
+ClutterAction * clutter_drop_action_new (void);
+
+G_END_DECLS
+
+#endif /* __CLUTTER_DROP_ACTION_H__ */
diff --git a/clutter/clutter-effect.h b/clutter/clutter-effect.h
index c5ba3458d..6453ddb62 100644
--- a/clutter/clutter-effect.h
+++ b/clutter/clutter-effect.h
@@ -75,6 +75,7 @@ struct _ClutterEffect
* @post_paint: virtual function
* @get_paint_volume: virtual function
* @paint: virtual function
+ * @pick: virtual function
*
* The #ClutterEffectClass structure contains only private data
*
@@ -105,7 +106,7 @@ struct _ClutterEffectClass
GType clutter_effect_get_type (void) G_GNUC_CONST;
-void clutter_effect_queue_rerun (ClutterEffect *effect);
+void clutter_effect_queue_repaint (ClutterEffect *effect);
/*
* ClutterActor API
diff --git a/clutter/clutter-gesture-action.c b/clutter/clutter-gesture-action.c
index d5523c17e..b22c4ba49 100644
--- a/clutter/clutter-gesture-action.c
+++ b/clutter/clutter-gesture-action.c
@@ -264,7 +264,7 @@ clutter_gesture_action_class_init (ClutterGestureActionClass *klass)
meta_class->set_actor = clutter_gesture_action_set_actor;
/**
- * ClutterGestureAction::gesture_begin:
+ * ClutterGestureAction::gesture-begin:
* @action: the #ClutterGestureAction that emitted the signal
* @actor: the #ClutterActor attached to the @action
*
diff --git a/clutter/clutter-group.c b/clutter/clutter-group.c
index d6c98973e..41cb7d097 100644
--- a/clutter/clutter-group.c
+++ b/clutter/clutter-group.c
@@ -350,12 +350,14 @@ clutter_group_dispose (GObject *object)
ClutterGroup *self = CLUTTER_GROUP (object);
ClutterGroupPrivate *priv = self->priv;
- if (priv->children)
+ /* Note: we are careful to consider that destroying children could
+ * have the side-effect of destroying other children so
+ * priv->children may be modified during clutter_actor_destroy. */
+ while (priv->children)
{
- g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL);
- g_list_free (priv->children);
-
- priv->children = NULL;
+ ClutterActor *child = priv->children->data;
+ priv->children = g_list_delete_link (priv->children, priv->children);
+ clutter_actor_destroy (child);
}
if (priv->layout)
diff --git a/clutter/clutter-keysyms.h b/clutter/clutter-keysyms.h
index fa6d2e6af..cea021319 100644
--- a/clutter/clutter-keysyms.h
+++ b/clutter/clutter-keysyms.h
@@ -615,9 +615,9 @@
#define CLUTTER_KEY_nacute 0x1f1
#define CLUTTER_KEY_ncaron 0x1f2
#define CLUTTER_KEY_odoubleacute 0x1f5
-#define CLUTTER_KEY_udoubleacute 0x1fb
#define CLUTTER_KEY_rcaron 0x1f8
#define CLUTTER_KEY_uring 0x1f9
+#define CLUTTER_KEY_udoubleacute 0x1fb
#define CLUTTER_KEY_tcedilla 0x1fe
#define CLUTTER_KEY_abovedot 0x1ff
#define CLUTTER_KEY_Hstroke 0x2a1
@@ -678,32 +678,32 @@
#define CLUTTER_KEY_uogonek 0x3f9
#define CLUTTER_KEY_utilde 0x3fd
#define CLUTTER_KEY_umacron 0x3fe
+#define CLUTTER_KEY_Wcircumflex 0x1000174
+#define CLUTTER_KEY_wcircumflex 0x1000175
+#define CLUTTER_KEY_Ycircumflex 0x1000176
+#define CLUTTER_KEY_ycircumflex 0x1000177
#define CLUTTER_KEY_Babovedot 0x1001e02
#define CLUTTER_KEY_babovedot 0x1001e03
#define CLUTTER_KEY_Dabovedot 0x1001e0a
-#define CLUTTER_KEY_Wgrave 0x1001e80
-#define CLUTTER_KEY_Wacute 0x1001e82
#define CLUTTER_KEY_dabovedot 0x1001e0b
-#define CLUTTER_KEY_Ygrave 0x1001ef2
#define CLUTTER_KEY_Fabovedot 0x1001e1e
#define CLUTTER_KEY_fabovedot 0x1001e1f
#define CLUTTER_KEY_Mabovedot 0x1001e40
#define CLUTTER_KEY_mabovedot 0x1001e41
#define CLUTTER_KEY_Pabovedot 0x1001e56
-#define CLUTTER_KEY_wgrave 0x1001e81
#define CLUTTER_KEY_pabovedot 0x1001e57
-#define CLUTTER_KEY_wacute 0x1001e83
#define CLUTTER_KEY_Sabovedot 0x1001e60
-#define CLUTTER_KEY_ygrave 0x1001ef3
-#define CLUTTER_KEY_Wdiaeresis 0x1001e84
-#define CLUTTER_KEY_wdiaeresis 0x1001e85
#define CLUTTER_KEY_sabovedot 0x1001e61
-#define CLUTTER_KEY_Wcircumflex 0x1000174
#define CLUTTER_KEY_Tabovedot 0x1001e6a
-#define CLUTTER_KEY_Ycircumflex 0x1000176
-#define CLUTTER_KEY_wcircumflex 0x1000175
#define CLUTTER_KEY_tabovedot 0x1001e6b
-#define CLUTTER_KEY_ycircumflex 0x1000177
+#define CLUTTER_KEY_Wgrave 0x1001e80
+#define CLUTTER_KEY_wgrave 0x1001e81
+#define CLUTTER_KEY_Wacute 0x1001e82
+#define CLUTTER_KEY_wacute 0x1001e83
+#define CLUTTER_KEY_Wdiaeresis 0x1001e84
+#define CLUTTER_KEY_wdiaeresis 0x1001e85
+#define CLUTTER_KEY_Ygrave 0x1001ef2
+#define CLUTTER_KEY_ygrave 0x1001ef3
#define CLUTTER_KEY_OE 0x13bc
#define CLUTTER_KEY_oe 0x13bd
#define CLUTTER_KEY_Ydiaeresis 0x13be
@@ -2036,6 +2036,86 @@
#define CLUTTER_KEY_braille_dots_1345678 0x10028fd
#define CLUTTER_KEY_braille_dots_2345678 0x10028fe
#define CLUTTER_KEY_braille_dots_12345678 0x10028ff
+#define CLUTTER_KEY_Sinh_ng 0x1000d82
+#define CLUTTER_KEY_Sinh_h2 0x1000d83
+#define CLUTTER_KEY_Sinh_a 0x1000d85
+#define CLUTTER_KEY_Sinh_aa 0x1000d86
+#define CLUTTER_KEY_Sinh_ae 0x1000d87
+#define CLUTTER_KEY_Sinh_aee 0x1000d88
+#define CLUTTER_KEY_Sinh_i 0x1000d89
+#define CLUTTER_KEY_Sinh_ii 0x1000d8a
+#define CLUTTER_KEY_Sinh_u 0x1000d8b
+#define CLUTTER_KEY_Sinh_uu 0x1000d8c
+#define CLUTTER_KEY_Sinh_ri 0x1000d8d
+#define CLUTTER_KEY_Sinh_rii 0x1000d8e
+#define CLUTTER_KEY_Sinh_lu 0x1000d8f
+#define CLUTTER_KEY_Sinh_luu 0x1000d90
+#define CLUTTER_KEY_Sinh_e 0x1000d91
+#define CLUTTER_KEY_Sinh_ee 0x1000d92
+#define CLUTTER_KEY_Sinh_ai 0x1000d93
+#define CLUTTER_KEY_Sinh_o 0x1000d94
+#define CLUTTER_KEY_Sinh_oo 0x1000d95
+#define CLUTTER_KEY_Sinh_au 0x1000d96
+#define CLUTTER_KEY_Sinh_ka 0x1000d9a
+#define CLUTTER_KEY_Sinh_kha 0x1000d9b
+#define CLUTTER_KEY_Sinh_ga 0x1000d9c
+#define CLUTTER_KEY_Sinh_gha 0x1000d9d
+#define CLUTTER_KEY_Sinh_ng2 0x1000d9e
+#define CLUTTER_KEY_Sinh_nga 0x1000d9f
+#define CLUTTER_KEY_Sinh_ca 0x1000da0
+#define CLUTTER_KEY_Sinh_cha 0x1000da1
+#define CLUTTER_KEY_Sinh_ja 0x1000da2
+#define CLUTTER_KEY_Sinh_jha 0x1000da3
+#define CLUTTER_KEY_Sinh_nya 0x1000da4
+#define CLUTTER_KEY_Sinh_jnya 0x1000da5
+#define CLUTTER_KEY_Sinh_nja 0x1000da6
+#define CLUTTER_KEY_Sinh_tta 0x1000da7
+#define CLUTTER_KEY_Sinh_ttha 0x1000da8
+#define CLUTTER_KEY_Sinh_dda 0x1000da9
+#define CLUTTER_KEY_Sinh_ddha 0x1000daa
+#define CLUTTER_KEY_Sinh_nna 0x1000dab
+#define CLUTTER_KEY_Sinh_ndda 0x1000dac
+#define CLUTTER_KEY_Sinh_tha 0x1000dad
+#define CLUTTER_KEY_Sinh_thha 0x1000dae
+#define CLUTTER_KEY_Sinh_dha 0x1000daf
+#define CLUTTER_KEY_Sinh_dhha 0x1000db0
+#define CLUTTER_KEY_Sinh_na 0x1000db1
+#define CLUTTER_KEY_Sinh_ndha 0x1000db3
+#define CLUTTER_KEY_Sinh_pa 0x1000db4
+#define CLUTTER_KEY_Sinh_pha 0x1000db5
+#define CLUTTER_KEY_Sinh_ba 0x1000db6
+#define CLUTTER_KEY_Sinh_bha 0x1000db7
+#define CLUTTER_KEY_Sinh_ma 0x1000db8
+#define CLUTTER_KEY_Sinh_mba 0x1000db9
+#define CLUTTER_KEY_Sinh_ya 0x1000dba
+#define CLUTTER_KEY_Sinh_ra 0x1000dbb
+#define CLUTTER_KEY_Sinh_la 0x1000dbd
+#define CLUTTER_KEY_Sinh_va 0x1000dc0
+#define CLUTTER_KEY_Sinh_sha 0x1000dc1
+#define CLUTTER_KEY_Sinh_ssha 0x1000dc2
+#define CLUTTER_KEY_Sinh_sa 0x1000dc3
+#define CLUTTER_KEY_Sinh_ha 0x1000dc4
+#define CLUTTER_KEY_Sinh_lla 0x1000dc5
+#define CLUTTER_KEY_Sinh_fa 0x1000dc6
+#define CLUTTER_KEY_Sinh_al 0x1000dca
+#define CLUTTER_KEY_Sinh_aa2 0x1000dcf
+#define CLUTTER_KEY_Sinh_ae2 0x1000dd0
+#define CLUTTER_KEY_Sinh_aee2 0x1000dd1
+#define CLUTTER_KEY_Sinh_i2 0x1000dd2
+#define CLUTTER_KEY_Sinh_ii2 0x1000dd3
+#define CLUTTER_KEY_Sinh_u2 0x1000dd4
+#define CLUTTER_KEY_Sinh_uu2 0x1000dd6
+#define CLUTTER_KEY_Sinh_ru2 0x1000dd8
+#define CLUTTER_KEY_Sinh_e2 0x1000dd9
+#define CLUTTER_KEY_Sinh_ee2 0x1000dda
+#define CLUTTER_KEY_Sinh_ai2 0x1000ddb
+#define CLUTTER_KEY_Sinh_o2 0x1000ddc
+#define CLUTTER_KEY_Sinh_oo2 0x1000ddd
+#define CLUTTER_KEY_Sinh_au2 0x1000dde
+#define CLUTTER_KEY_Sinh_lu2 0x1000ddf
+#define CLUTTER_KEY_Sinh_ruu2 0x1000df2
+#define CLUTTER_KEY_Sinh_luu2 0x1000df3
+#define CLUTTER_KEY_Sinh_kunddaliya 0x1000df4
#define CLUTTER_KEY_ModeLock 0x1008ff01
#define CLUTTER_KEY_MonBrightnessUp 0x1008ff02
#define CLUTTER_KEY_MonBrightnessDown 0x1008ff03
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index 58c0b551b..a6f4d6cbb 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -179,7 +179,8 @@ static const GDebugKey clutter_paint_debug_keys[] = {
{ "disable-clipped-redraws", CLUTTER_DEBUG_DISABLE_CLIPPED_REDRAWS },
{ "redraws", CLUTTER_DEBUG_REDRAWS },
{ "paint-volumes", CLUTTER_DEBUG_PAINT_VOLUMES },
- { "disable-culling", CLUTTER_DEBUG_DISABLE_CULLING }
+ { "disable-culling", CLUTTER_DEBUG_DISABLE_CULLING },
+ { "disable-offscreen-redirect", CLUTTER_DEBUG_DISABLE_OFFSCREEN_REDIRECT }
};
#ifdef CLUTTER_ENABLE_PROFILE
@@ -241,67 +242,6 @@ clutter_redraw (ClutterStage *stage)
clutter_stage_ensure_redraw (stage);
}
-/**
- * clutter_set_motion_events_enabled:
- * @enable: %TRUE to enable per-actor motion events
- *
- * Sets whether per-actor motion events should be enabled or not (the
- * default is to enable them).
- *
- * If @enable is %FALSE the following events will not work:
- * <itemizedlist>
- * <listitem><para>ClutterActor::motion-event, unless on the
- * #ClutterStage</para></listitem>
- * <listitem><para>ClutterActor::enter-event</para></listitem>
- * <listitem><para>ClutterActor::leave-event</para></listitem>
- * </itemizedlist>
- *
- * Since: 0.6
- */
-void
-clutter_set_motion_events_enabled (gboolean enable)
-{
- ClutterStageManager *stage_manager;
- ClutterMainContext *context;
- const GSList *l;
-
- enable = !!enable;
-
- context = _clutter_context_get_default ();
- if (context->motion_events_per_actor == enable)
- return;
-
- /* store the flag for later query and for newly created stages */
- context->motion_events_per_actor = enable;
-
- /* propagate the change to all stages */
- stage_manager = clutter_stage_manager_get_default ();
-
- for (l = clutter_stage_manager_peek_stages (stage_manager);
- l != NULL;
- l = l->next)
- {
- _clutter_stage_set_motion_events_enabled (l->data, enable);
- }
-}
-
-/**
- * clutter_get_motion_events_enabled:
- *
- * Gets whether the per-actor motion events are enabled.
- *
- * Return value: %TRUE if the motion events are enabled
- *
- * Since: 0.6
- */
-gboolean
-clutter_get_motion_events_enabled (void)
-{
- ClutterMainContext *context = _clutter_context_get_default ();
-
- return context->motion_events_per_actor;
-}
-
ClutterActor *
_clutter_get_actor_by_id (ClutterStage *stage,
guint32 actor_id)
@@ -1084,7 +1024,6 @@ _clutter_context_get_default (void)
ctx->backend = g_object_new (_clutter_backend_impl_get_type (), NULL);
ctx->is_initialized = FALSE;
- ctx->motion_events_per_actor = TRUE;
#ifdef CLUTTER_ENABLE_DEBUG
ctx->timer = g_timer_new ();
@@ -1232,7 +1171,10 @@ clutter_init_real (GError **error)
/* The same is true when drawing the outlines of paint volumes... */
if (clutter_paint_debug_flags & CLUTTER_DEBUG_PAINT_VOLUMES)
- clutter_paint_debug_flags |= CLUTTER_DEBUG_DISABLE_CLIPPED_REDRAWS;
+ {
+ clutter_paint_debug_flags |=
+ CLUTTER_DEBUG_DISABLE_CLIPPED_REDRAWS | CLUTTER_DEBUG_DISABLE_CULLING;
+ }
/* this will take care of initializing Cogl's state and
* query the GL machinery for features
@@ -2125,7 +2067,7 @@ _clutter_process_event_details (ClutterActor *stage,
case CLUTTER_MOTION:
/* only the stage gets motion events if they are enabled */
- if (!_clutter_stage_get_motion_events_enabled (CLUTTER_STAGE (stage)) &&
+ if (!clutter_stage_get_motion_events_enabled (CLUTTER_STAGE (stage)) &&
event->any.source == NULL)
{
/* Only stage gets motion events */
diff --git a/clutter/clutter-main.h b/clutter/clutter-main.h
index d42c9f36b..33a45e92a 100644
--- a/clutter/clutter-main.h
+++ b/clutter/clutter-main.h
@@ -132,9 +132,6 @@ guint clutter_threads_add_repaint_func (GSourceFunc func,
GDestroyNotify notify);
void clutter_threads_remove_repaint_func (guint handle_id);
-void clutter_set_motion_events_enabled (gboolean enable);
-gboolean clutter_get_motion_events_enabled (void);
-
void clutter_set_default_frame_rate (guint frames_per_sec);
guint clutter_get_default_frame_rate (void);
@@ -154,7 +151,6 @@ ClutterInputDevice *clutter_get_input_device_for_id (gint id_);
void clutter_grab_pointer_for_device (ClutterActor *actor,
gint id_);
-
void clutter_ungrab_pointer_for_device (gint id_);
PangoFontMap * clutter_get_font_map (void);
diff --git a/clutter/clutter-marshal.list b/clutter/clutter-marshal.list
index 9d433c68c..d189a82f6 100644
--- a/clutter/clutter-marshal.list
+++ b/clutter/clutter-marshal.list
@@ -2,6 +2,7 @@ BOOLEAN:BOXED
BOOLEAN:OBJECT,ENUM
BOOLEAN:STRING,UINT,FLAGS
BOOLEAN:OBJECT
+BOOLEAN:OBJECT,FLOAT,FLOAT
BOXED:UINT,UINT
DOUBLE:VOID
UINT:VOID
diff --git a/clutter/clutter-paint-volume.c b/clutter/clutter-paint-volume.c
index 2e39ac823..ea2f6cfda 100644
--- a/clutter/clutter-paint-volume.c
+++ b/clutter/clutter-paint-volume.c
@@ -1004,21 +1004,12 @@ _clutter_paint_volume_get_stage_paint_box (ClutterPaintVolume *pv,
_clutter_paint_volume_copy_static (pv, &projected_pv);
- /* NB: _clutter_actor_apply_modelview_transform_recursive will never
- * include the transformation between stage coordinates and OpenGL
- * eye coordinates, we have to explicitly use the
- * stage->apply_transform to get that... */
cogl_matrix_init_identity (&modelview);
/* If the paint volume isn't already in eye coordinates... */
if (pv->actor)
- {
- ClutterActor *stage_actor = CLUTTER_ACTOR (stage);
- _clutter_actor_apply_modelview_transform (stage_actor, &modelview);
- _clutter_actor_apply_modelview_transform_recursive (pv->actor,
- stage_actor,
- &modelview);
- }
+ _clutter_actor_apply_relative_transformation_matrix (pv->actor, NULL,
+ &modelview);
_clutter_stage_get_projection_matrix (stage, &projection);
_clutter_stage_get_viewport (stage,
@@ -1052,27 +1043,8 @@ _clutter_paint_volume_transform_relative (ClutterPaintVolume *pv,
_clutter_paint_volume_set_reference_actor (pv, relative_to_ancestor);
cogl_matrix_init_identity (&matrix);
-
- if (relative_to_ancestor == NULL)
- {
- /* NB: _clutter_actor_apply_modelview_transform_recursive will never
- * include the transformation between stage coordinates and OpenGL
- * eye coordinates, we have to explicitly use the
- * stage->apply_transform to get that... */
- ClutterActor *stage = _clutter_actor_get_stage_internal (actor);
-
- /* We really can't do anything meaningful in this case so don't try
- * to do any transform */
- if (G_UNLIKELY (stage == NULL))
- return;
-
- _clutter_actor_apply_modelview_transform (stage, &matrix);
-
- relative_to_ancestor = stage;
- }
-
- _clutter_actor_apply_modelview_transform_recursive (actor,
- relative_to_ancestor,
+ _clutter_actor_apply_relative_transformation_matrix (actor,
+ relative_to_ancestor,
&matrix);
_clutter_paint_volume_transform (pv, &matrix);
diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h
index b75953e96..bf57b2f5f 100644
--- a/clutter/clutter-private.h
+++ b/clutter/clutter-private.h
@@ -162,7 +162,6 @@ struct _ClutterMainContext
/* boolean flags */
guint is_initialized : 1;
- guint motion_events_per_actor : 1;
guint defer_display_setup : 1;
guint options_parsed : 1;
};
@@ -178,16 +177,16 @@ typedef struct
gboolean _clutter_threads_dispatch (gpointer data);
void _clutter_threads_dispatch_free (gpointer data);
-ClutterMainContext * _clutter_context_get_default (void);
-gboolean _clutter_context_is_initialized (void);
-PangoContext * _clutter_context_create_pango_context (void);
-PangoContext * _clutter_context_get_pango_context (void);
-ClutterPickMode _clutter_context_get_pick_mode (void);
-void _clutter_context_push_shader_stack (ClutterActor *actor);
-ClutterActor * _clutter_context_pop_shader_stack (ClutterActor *actor);
-ClutterActor * _clutter_context_peek_shader_stack (void);
-guint32 _clutter_context_acquire_id (gpointer key);
-void _clutter_context_release_id (guint32 id_);
+ClutterMainContext * _clutter_context_get_default (void);
+gboolean _clutter_context_is_initialized (void);
+PangoContext * _clutter_context_create_pango_context (void);
+PangoContext * _clutter_context_get_pango_context (void);
+ClutterPickMode _clutter_context_get_pick_mode (void);
+void _clutter_context_push_shader_stack (ClutterActor *actor);
+ClutterActor * _clutter_context_pop_shader_stack (ClutterActor *actor);
+ClutterActor * _clutter_context_peek_shader_stack (void);
+guint32 _clutter_context_acquire_id (gpointer key);
+void _clutter_context_release_id (guint32 id_);
const gchar *_clutter_gettext (const gchar *str);
diff --git a/clutter/clutter-stage-private.h b/clutter/clutter-stage-private.h
index d53849ff0..9911f380c 100644
--- a/clutter/clutter-stage-private.h
+++ b/clutter/clutter-stage-private.h
@@ -90,10 +90,6 @@ void _clutter_stage_remove_device (ClutterStage *stage,
gboolean _clutter_stage_has_device (ClutterStage *stage,
ClutterInputDevice *device);
-void _clutter_stage_set_motion_events_enabled (ClutterStage *stage,
- gboolean enabled);
-gboolean _clutter_stage_get_motion_events_enabled (ClutterStage *stage);
-
CoglFramebuffer *_clutter_stage_get_active_framebuffer (ClutterStage *stage);
gint32 _clutter_stage_acquire_pick_id (ClutterStage *stage,
@@ -103,6 +99,14 @@ void _clutter_stage_release_pick_id (ClutterStage *stage,
ClutterActor * _clutter_stage_get_actor_by_pick_id (ClutterStage *stage,
gint32 pick_id);
+void _clutter_stage_add_drag_actor (ClutterStage *stage,
+ ClutterInputDevice *device,
+ ClutterActor *actor);
+ClutterActor * _clutter_stage_get_drag_actor (ClutterStage *stage,
+ ClutterInputDevice *device);
+void _clutter_stage_remove_drag_actor (ClutterStage *stage,
+ ClutterInputDevice *device);
+
G_END_DECLS
#endif /* __CLUTTER_STAGE_PRIVATE_H__ */
diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c
index a032e5cc4..6039b1dc7 100644
--- a/clutter/clutter-stage.c
+++ b/clutter/clutter-stage.c
@@ -1997,7 +1997,7 @@ clutter_stage_init (ClutterStage *self)
priv->use_fog = FALSE;
priv->throttle_motion_events = TRUE;
priv->min_size_changed = FALSE;
- priv->motion_events_enabled = clutter_get_motion_events_enabled ();
+ priv->motion_events_enabled = TRUE;
priv->color = default_stage_color;
@@ -3973,23 +3973,69 @@ _clutter_stage_has_device (ClutterStage *stage,
return g_hash_table_lookup (priv->devices, device) != NULL;
}
+/**
+ * clutter_stage_set_motion_events_enabled:
+ * @stage: a #ClutterStage
+ * @enabled: %TRUE to enable the motion events delivery, and %FALSE
+ * otherwise
+ *
+ * Sets whether per-actor motion events (and relative crossing
+ * events) should be disabled or not.
+ *
+ * The default is %TRUE.
+ *
+ * If @enable is %FALSE the following events will not be delivered
+ * to the actors children of @stage.
+ *
+ * <itemizedlist>
+ * <listitem><para>#ClutterActor::motion-event</para></listitem>
+ * <listitem><para>#ClutterActor::enter-event</para></listitem>
+ * <listitem><para>#ClutterActor::leave-event</para></listitem>
+ * </itemizedlist>
+ *
+ * The events will still be delivered to the #ClutterStage.
+ *
+ * The main side effect of this function is that disabling the motion
+ * events will disable picking to detect the #ClutterActor underneath
+ * the pointer for each motion event. This is useful, for instance,
+ * when dragging a #ClutterActor across the @stage: the actor underneath
+ * the pointer is not going to change, so it's meaningless to perform
+ * a pick.
+ *
+ * Since: 1.8
+ */
void
-_clutter_stage_set_motion_events_enabled (ClutterStage *stage,
- gboolean enabled)
+clutter_stage_set_motion_events_enabled (ClutterStage *stage,
+ gboolean enabled)
{
- ClutterStagePrivate *priv = stage->priv;
+ ClutterStagePrivate *priv;
+
+ g_return_if_fail (CLUTTER_IS_STAGE (stage));
+
+ priv = stage->priv;
enabled = !!enabled;
if (priv->motion_events_enabled != enabled)
- {
- priv->motion_events_enabled = enabled;
- }
+ priv->motion_events_enabled = enabled;
}
+/**
+ * clutter_stage_get_motion_events_enabled:
+ * @stage: a #ClutterStage
+ *
+ * Retrieves the value set using clutter_stage_set_motion_events_enabled().
+ *
+ * Return value: %TRUE if the per-actor motion event delivery is enabled
+ * and %FALSE otherwise
+ *
+ * Since: 1.8
+ */
gboolean
-_clutter_stage_get_motion_events_enabled (ClutterStage *stage)
+clutter_stage_get_motion_events_enabled (ClutterStage *stage)
{
+ g_return_val_if_fail (CLUTTER_IS_STAGE (stage), FALSE);
+
return stage->priv->motion_events_enabled;
}
@@ -4037,3 +4083,51 @@ _clutter_stage_get_actor_by_pick_id (ClutterStage *stage,
return _clutter_id_pool_lookup (priv->pick_id_pool, pick_id);
}
+
+void
+_clutter_stage_add_drag_actor (ClutterStage *stage,
+ ClutterInputDevice *device,
+ ClutterActor *actor)
+{
+ GHashTable *drag_actors;
+
+ drag_actors = g_object_get_data (G_OBJECT (stage), "__clutter_stage_drag_actors");
+ if (drag_actors == NULL)
+ {
+ drag_actors = g_hash_table_new (NULL, NULL);
+ g_object_set_data_full (G_OBJECT (stage), "__clutter_stage_drag_actors",
+ drag_actors,
+ (GDestroyNotify) g_hash_table_destroy);
+ }
+
+ g_hash_table_replace (drag_actors, device, actor);
+}
+
+ClutterActor *
+_clutter_stage_get_drag_actor (ClutterStage *stage,
+ ClutterInputDevice *device)
+{
+ GHashTable *drag_actors;
+
+ drag_actors = g_object_get_data (G_OBJECT (stage), "__clutter_stage_drag_actors");
+ if (drag_actors == NULL)
+ return NULL;
+
+ return g_hash_table_lookup (drag_actors, device);
+}
+
+void
+_clutter_stage_remove_drag_actor (ClutterStage *stage,
+ ClutterInputDevice *device)
+{
+ GHashTable *drag_actors;
+
+ drag_actors = g_object_get_data (G_OBJECT (stage), "__clutter_stage_drag_actors");
+ if (drag_actors == NULL)
+ return;
+
+ g_hash_table_remove (drag_actors, device);
+
+ if (g_hash_table_size (drag_actors) == 0)
+ g_object_set_data (G_OBJECT (stage), "__clutter_stage_drag_actors", NULL);
+}
diff --git a/clutter/clutter-stage.h b/clutter/clutter-stage.h
index 8605e83d7..5971fcd15 100644
--- a/clutter/clutter-stage.h
+++ b/clutter/clutter-stage.h
@@ -236,6 +236,10 @@ void clutter_stage_set_accept_focus (ClutterStage *stage,
gboolean accept_focus);
gboolean clutter_stage_get_accept_focus (ClutterStage *stage);
+void clutter_stage_set_motion_events_enabled (ClutterStage *stage,
+ gboolean enabled);
+gboolean clutter_stage_get_motion_events_enabled (ClutterStage *stage);
+
G_END_DECLS
#endif /* __CLUTTER_STAGE_H__ */
diff --git a/clutter/clutter-texture.c b/clutter/clutter-texture.c
index 167a463dd..656e32dd3 100644
--- a/clutter/clutter-texture.c
+++ b/clutter/clutter-texture.c
@@ -516,18 +516,10 @@ update_fbo (ClutterActor *self)
if ((source_parent = clutter_actor_get_parent (priv->fbo_source)))
{
CoglMatrix modelview;
-
- /* NB: _clutter_actor_apply_modelview_transform_recursive
- * will never include the transformation between stage
- * coordinates and OpenGL window coordinates, we have to
- * explicitly use the stage->apply_transform to get that...
- */
-
cogl_matrix_init_identity (&modelview);
- _clutter_actor_apply_modelview_transform (stage, &modelview);
- _clutter_actor_apply_modelview_transform_recursive (source_parent,
- NULL,
- &modelview);
+ _clutter_actor_apply_relative_transformation_matrix (source_parent,
+ NULL,
+ &modelview);
cogl_set_modelview_matrix (&modelview);
}
}
diff --git a/clutter/clutter-types.h b/clutter/clutter-types.h
index a19a77b55..cc368b944 100644
--- a/clutter/clutter-types.h
+++ b/clutter/clutter-types.h
@@ -532,6 +532,7 @@ typedef enum {
CLUTTER_BUTTON4_MASK = 1 << 11,
CLUTTER_BUTTON5_MASK = 1 << 12,
+#ifndef __GTK_DOC_IGNORE__
CLUTTER_MODIFIER_RESERVED_13_MASK = 1 << 13,
CLUTTER_MODIFIER_RESERVED_14_MASK = 1 << 14,
CLUTTER_MODIFIER_RESERVED_15_MASK = 1 << 15,
@@ -545,12 +546,15 @@ typedef enum {
CLUTTER_MODIFIER_RESERVED_23_MASK = 1 << 23,
CLUTTER_MODIFIER_RESERVED_24_MASK = 1 << 24,
CLUTTER_MODIFIER_RESERVED_25_MASK = 1 << 25,
+#endif
CLUTTER_SUPER_MASK = 1 << 26,
CLUTTER_HYPER_MASK = 1 << 27,
CLUTTER_META_MASK = 1 << 28,
+#ifndef __GTK_DOC_IGNORE__
CLUTTER_MODIFIER_RESERVED_29_MASK = 1 << 29,
+#endif
CLUTTER_RELEASE_MASK = 1 << 30,
diff --git a/clutter/clutter.h b/clutter/clutter.h
index 071c59baa..b1595a265 100644
--- a/clutter/clutter.h
+++ b/clutter/clutter.h
@@ -58,6 +58,7 @@
#include "clutter-desaturate-effect.h"
#include "clutter-device-manager.h"
#include "clutter-drag-action.h"
+#include "clutter-drop-action.h"
#include "clutter-effect.h"
#include "clutter-event.h"
#include "clutter-feature.h"
diff --git a/clutter/cogl/clutter-glx-texture-pixmap.c b/clutter/cogl/clutter-glx-texture-pixmap.c
deleted file mode 100644
index 33fb894dc..000000000
--- a/clutter/cogl/clutter-glx-texture-pixmap.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Clutter.
- *
- * An OpenGL based 'interactive canvas' library.
- *
- * Authored By Johan Bilien <johan.bilien@nokia.com>
- * Matthew Allum <mallum@o-hand.com>
- * Robert Bragg <bob@o-hand.com>
- * Neil Roberts <neil@linux.intel.com>
- *
- * Copyright (C) 2007 OpenedHand
- * Copyright (C) 2010 Intel Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- *
- */
-
-/**
- * SECTION:clutter-glx-texture-pixmap
- * @short_description: A texture which displays the content of an X Pixmap.
- *
- * #ClutterGLXTexturePixmap is a class for displaying the content of an
- * X Pixmap as a ClutterActor. Used together with the X Composite extension,
- * it allows to display the content of X Windows inside Clutter.
- *
- * This class used to be necessary to use the
- * GLX_EXT_texture_from_pixmap extension to get fast texture
- * updates. However since Clutter 1.4 the handling of this extension
- * has moved down to Cogl. ClutterX11TexturePixmap and
- * ClutterGLXTexturePixmap are now equivalent and either one of them
- * may use the extension if it is possible.
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#include <GL/glx.h>
-
-#include "x11/clutter-x11-texture-pixmap.h"
-
-#include <cogl/cogl-texture-pixmap-x11.h>
-
-#include "clutter-glx-texture-pixmap.h"
-
-G_DEFINE_TYPE (ClutterGLXTexturePixmap, \
- clutter_glx_texture_pixmap, \
- CLUTTER_X11_TYPE_TEXTURE_PIXMAP);
-
-static void
-clutter_glx_texture_pixmap_init (ClutterGLXTexturePixmap *self)
-{
-}
-
-static void
-clutter_glx_texture_pixmap_class_init (ClutterGLXTexturePixmapClass *klass)
-{
-}
-
-/**
- * clutter_glx_texture_pixmap_using_extension:
- * @texture: A #ClutterGLXTexturePixmap
- *
- * Checks whether @texture is using the GLX_EXT_texture_from_pixmap
- * extension; this extension can be optionally (though it is strongly
- * encouraged) implemented as a zero-copy between a GLX pixmap and
- * a GL texture.
- *
- * Return value: %TRUE if the texture is using the
- * GLX_EXT_texture_from_pixmap OpenGL extension or falling back to the
- * slower software mechanism.
- *
- * Deprecated: 1.6: Use cogl_texture_pixmap_x11_is_using_tfp_extension()
- * on the texture handle instead.
- *
- * Since: 0.8
- */
-gboolean
-clutter_glx_texture_pixmap_using_extension (ClutterGLXTexturePixmap *texture)
-{
- CoglHandle cogl_texture;
-
- g_return_val_if_fail (CLUTTER_GLX_IS_TEXTURE_PIXMAP (texture), FALSE);
-
- cogl_texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (texture));
-
- return (cogl_is_texture_pixmap_x11 (cogl_texture) &&
- cogl_texture_pixmap_x11_is_using_tfp_extension (cogl_texture));
-}
-
-/**
- * clutter_glx_texture_pixmap_new_with_pixmap:
- * @pixmap: the X Pixmap to which this texture should be bound
- *
- * Creates a new #ClutterGLXTexturePixmap for @pixmap
- *
- * Return value: A new #ClutterGLXTexturePixmap bound to the given X Pixmap
- *
- * Since: 0.8
- *
- * Deprecated: 1.6: Use clutter_x11_texture_pixmap_new_with_pixmap() instead
- */
-ClutterActor *
-clutter_glx_texture_pixmap_new_with_pixmap (Pixmap pixmap)
-{
- return g_object_new (CLUTTER_GLX_TYPE_TEXTURE_PIXMAP,
- "pixmap", pixmap,
- NULL);
-}
-
-/**
- * clutter_glx_texture_pixmap_new_with_window:
- * @window: the X window to which this texture should be bound
- *
- * Creates a new #ClutterGLXTexturePixmap for @window
- *
- * Return value: A new #ClutterGLXTexturePixmap bound to the given X window
- *
- * Since: 0.8
- *
- * Deprecated: 1.6: Use clutter_x11_texture_pixmap_new_with_window() instead
- */
-ClutterActor *
-clutter_glx_texture_pixmap_new_with_window (Window window)
-{
- return g_object_new (CLUTTER_GLX_TYPE_TEXTURE_PIXMAP,
- "window", window,
- NULL);
-}
-
-/**
- * clutter_glx_texture_pixmap_new:
- *
- * Creates a new, empty #ClutterGLXTexturePixmap
- *
- * Return value: A new #ClutterGLXTexturePixmap
- *
- * Since: 0.8
- *
- * Deprecated: 1.6: Use clutter_x11_texture_pixmap_new() instead
- */
-ClutterActor *
-clutter_glx_texture_pixmap_new (void)
-{
- return g_object_new (CLUTTER_GLX_TYPE_TEXTURE_PIXMAP, NULL);
-}
diff --git a/clutter/cogl/clutter-glx-texture-pixmap.h b/clutter/cogl/clutter-glx-texture-pixmap.h
deleted file mode 100644
index b5a206636..000000000
--- a/clutter/cogl/clutter-glx-texture-pixmap.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Clutter.
- *
- * An OpenGL based 'interactive canvas' library.
- *
- * Authored By Johan Bilien <johan.bilien@nokia.com>
- *
- * Copyright (C) 2007 OpenedHand
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- *
- */
-
-#ifndef __CLUTTER_GLX_TEXTURE_PIXMAP_H__
-#define __CLUTTER_GLX_TEXTURE_PIXMAP_H__
-
-#include <clutter/x11/clutter-x11-texture-pixmap.h>
-
-#if !defined(CLUTTER_DISABLE_COMPILATION) || defined(CLUTTER_COMPILATION)
-
-G_BEGIN_DECLS
-
-#define CLUTTER_GLX_TYPE_TEXTURE_PIXMAP (clutter_glx_texture_pixmap_get_type ())
-#define CLUTTER_GLX_TEXTURE_PIXMAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_GLX_TYPE_TEXTURE_PIXMAP, ClutterGLXTexturePixmap))
-#define CLUTTER_GLX_TEXTURE_PIXMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_GLX_TYPE_TEXTURE_PIXMAP, ClutterGLXTexturePixmapClass))
-#define CLUTTER_GLX_IS_TEXTURE_PIXMAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_GLX_TYPE_TEXTURE_PIXMAP))
-#define CLUTTER_GLX_IS_TEXTURE_PIXMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_GLX_TYPE_TEXTURE_PIXMAP))
-#define CLUTTER_GLX_TEXTURE_PIXMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_GLX_TYPE_TEXTURE_PIXMAP, ClutterGLXTexturePixmapClass))
-
-typedef struct _ClutterGLXTexturePixmap ClutterGLXTexturePixmap;
-typedef struct _ClutterGLXTexturePixmapClass ClutterGLXTexturePixmapClass;
-typedef struct _ClutterGLXTexturePixmapPrivate ClutterGLXTexturePixmapPrivate;
-
-/**
- * ClutterGLXTexturePixmapClass:
- *
- * The #ClutterGLXTexturePixmapClass structure contains only private data
- *
- * Since: 0.8
- *
- * Deprecated: 1.6: Use #ClutterX11TexturePixmapClass instead
- */
-struct _ClutterGLXTexturePixmapClass
-{
- /*< private >*/
- ClutterX11TexturePixmapClass parent_class;
-};
-
-/**
- * ClutterGLXTexturePixmap:
- *
- * The #ClutterGLXTexturePixmap structure contains only private data
- *
- * Since: 0.8
- *
- * Deprecated: 1.6: Use #ClutterX11TexturePixmap instead
- */
-struct _ClutterGLXTexturePixmap
-{
- /*< private >*/
- ClutterX11TexturePixmap parent;
-
- ClutterGLXTexturePixmapPrivate *priv;
-};
-
-GType clutter_glx_texture_pixmap_get_type (void);
-
-ClutterActor * clutter_glx_texture_pixmap_new (void);
-
-ClutterActor * clutter_glx_texture_pixmap_new_with_pixmap (Pixmap pixmap);
-
-ClutterActor * clutter_glx_texture_pixmap_new_with_window (Window window);
-
-gboolean clutter_glx_texture_pixmap_using_extension (ClutterGLXTexturePixmap *texture);
-
-G_END_DECLS
-
-#endif /* !CLUTTER_DISABLE_DEPRECATED || !CLUTTER_COMPILATION */
-
-#endif /* __CLUTTER_GLX_TEXTURE_PIXMAP_H__ */
diff --git a/clutter/cogl/clutter-glx.h b/clutter/cogl/clutter-glx.h
deleted file mode 100644
index 60223998b..000000000
--- a/clutter/cogl/clutter-glx.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Clutter.
- *
- * An OpenGL based 'interactive canvas' library.
- *
- * Authored By Matthew Allum <mallum@openedhand.com>
- *
- * Copyright (C) 2006 OpenedHand
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- *
- */
-
-/**
- * SECTION:clutter-glx
- * @short_description: GLX specific API
- *
- * The GLX backend for Clutter provides some specific API for GLX
- * related calls.
- *
- * The ClutterGLX API is available since Clutter 0.4
- */
-
-#ifndef __CLUTTER_GLX_H__
-#define __CLUTTER_GLX_H__
-
-#include <glib.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <clutter/clutter.h>
-#include <clutter/glx/clutter-glx-texture-pixmap.h>
-
-#endif /* __CLUTTER_GLX_H__ */
diff --git a/clutter/cogl/clutter-stage-cogl.c b/clutter/cogl/clutter-stage-cogl.c
index a4f021cec..feec6b076 100644
--- a/clutter/cogl/clutter-stage-cogl.c
+++ b/clutter/cogl/clutter-stage-cogl.c
@@ -101,7 +101,6 @@ clutter_stage_cogl_realize (ClutterStageWindow *stage_window)
ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (stage_window);
#endif
ClutterBackend *backend;
- ClutterBackendCogl *backend_cogl;
CoglFramebuffer *framebuffer;
GError *error = NULL;
gfloat width = 800;
@@ -112,23 +111,22 @@ clutter_stage_cogl_realize (ClutterStageWindow *stage_window)
G_OBJECT_TYPE_NAME (stage_cogl),
stage_cogl);
- backend = clutter_get_default_backend ();
- backend_cogl = CLUTTER_BACKEND_COGL (backend);
+ backend = clutter_get_default_backend ();
#ifdef COGL_HAS_XLIB_SUPPORT
clutter_actor_get_size (CLUTTER_ACTOR (stage_x11->wrapper), &width, &height);
#endif
stage_cogl->onscreen = cogl_onscreen_new (backend->cogl_context,
- width, height);
+ width, height);
+
#ifdef COGL_HAS_XLIB_SUPPORT
if (stage_x11->xwin != None)
{
- cogl_onscreen_x11_set_foreign_window_xid (
- stage_cogl->onscreen,
- stage_x11->xwin,
- _clutter_stage_x11_update_foreign_event_mask,
- stage_x11);
+ cogl_onscreen_x11_set_foreign_window_xid (stage_cogl->onscreen,
+ stage_x11->xwin,
+ _clutter_stage_x11_update_foreign_event_mask,
+ stage_x11);
}
#endif
@@ -146,6 +144,7 @@ clutter_stage_cogl_realize (ClutterStageWindow *stage_window)
stage_cogl->onscreen = NULL;
return FALSE;
}
+
/* FIXME: for fullscreen Cogl platforms then the size we gave above
* will be ignored, so we need to make sure the stage size is
* updated to this size. */
diff --git a/clutter/osx/clutter-backend-osx.c b/clutter/osx/clutter-backend-osx.c
index f9ccecd54..e2887835c 100644
--- a/clutter/osx/clutter-backend-osx.c
+++ b/clutter/osx/clutter-backend-osx.c
@@ -26,7 +26,6 @@
#include "clutter-backend-osx.h"
#include "clutter-device-manager-osx.h"
-#include "clutter-shader.h"
#include "clutter-stage-osx.h"
#include "clutter-debug.h"
@@ -227,8 +226,6 @@ clutter_backend_osx_dispose (GObject *object)
{
ClutterBackendOSX *self = CLUTTER_BACKEND_OSX (object);
- _clutter_shader_release_all ();
-
[self->context release];
self->context = NULL;
diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c
index 220d517c6..d9ec19252 100644
--- a/clutter/win32/clutter-backend-win32.c
+++ b/clutter/win32/clutter-backend-win32.c
@@ -146,9 +146,6 @@ clutter_backend_win32_dispose (GObject *gobject)
CLUTTER_NOTE (BACKEND, "Removing the event source");
_clutter_backend_win32_events_uninit (CLUTTER_BACKEND (backend_win32));
- /* Unrealize all shaders, since the GL context is going away */
- _clutter_shader_release_all ();
-
G_OBJECT_CLASS (clutter_backend_win32_parent_class)->dispose (gobject);
if (backend->cogl_context)
diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c
index ab1cde264..773fcfaac 100644
--- a/clutter/x11/clutter-backend-x11.c
+++ b/clutter/x11/clutter-backend-x11.c
@@ -1015,29 +1015,6 @@ clutter_x11_remove_filter (ClutterX11FilterFunc func,
}
/**
- * clutter_x11_get_input_devices:
- *
- * Retrieves a pointer to the list of input devices
- *
- * Deprecated: 1.2: Use clutter_device_manager_peek_devices() instead
- *
- * Since: 0.8
- *
- * Return value: (transfer none) (element-type Clutter.InputDevice): a
- * pointer to the internal list of input devices; the returned list is
- * owned by Clutter and should not be modified or freed
- */
-const GSList *
-clutter_x11_get_input_devices (void)
-{
- ClutterDeviceManager *manager;
-
- manager = clutter_device_manager_get_default ();
-
- return clutter_device_manager_peek_devices (manager);
-}
-
-/**
* clutter_x11_has_xinput:
*
* Gets whether Clutter has XInput support.
diff --git a/clutter/x11/clutter-stage-x11.c b/clutter/x11/clutter-stage-x11.c
index ab877b906..cfd8428d9 100644
--- a/clutter/x11/clutter-stage-x11.c
+++ b/clutter/x11/clutter-stage-x11.c
@@ -1185,37 +1185,6 @@ clutter_x11_get_stage_from_window (Window win)
return NULL;
}
-/**
- * clutter_x11_get_stage_visual: (skip)
- * @stage: a #ClutterStage
- *
- * Returns an XVisualInfo suitable for creating a foreign window for the given
- * stage. NOTE: It doesn't do as the name may suggest, which is return the
- * XVisualInfo that was used to create an existing window for the given stage.
- *
- * XXX: It might be best to deprecate this function and replace with something
- * along the lines of clutter_backend_x11_get_foreign_visual () or perhaps
- * clutter_stage_x11_get_foreign_visual ()
- *
- * Return value: (transfer full): An XVisualInfo suitable for creating a
- * foreign stage. Use XFree() to free the returned value instead
- *
- * Deprecated: 1.2: Use clutter_x11_get_visual_info() instead
- *
- * Since: 0.4
- */
-XVisualInfo *
-clutter_x11_get_stage_visual (ClutterStage *stage)
-{
- ClutterBackend *backend = clutter_get_default_backend ();
- ClutterBackendX11 *backend_x11;
-
- g_return_val_if_fail (CLUTTER_IS_BACKEND_X11 (backend), NULL);
- backend_x11 = CLUTTER_BACKEND_X11 (backend);
-
- return _clutter_backend_x11_get_visual_info (backend_x11);
-}
-
typedef struct {
ClutterStageX11 *stage_x11;
ClutterGeometry geom;
diff --git a/clutter/x11/clutter-x11.h b/clutter/x11/clutter-x11.h
index 262a54686..6d517022f 100644
--- a/clutter/x11/clutter-x11.h
+++ b/clutter/x11/clutter-x11.h
@@ -106,10 +106,6 @@ Window clutter_x11_get_root_window (void);
XVisualInfo *clutter_x11_get_visual_info (void);
void clutter_x11_set_display (Display * xdpy);
-#ifndef CLUTTER_DISABLE_DEPRECATED
-XVisualInfo *clutter_x11_get_stage_visual (ClutterStage *stage) G_GNUC_DEPRECATED;
-#endif
-
Window clutter_x11_get_stage_window (ClutterStage *stage);
gboolean clutter_x11_set_stage_foreign (ClutterStage *stage,
Window xwindow);
@@ -126,10 +122,6 @@ gboolean clutter_x11_has_event_retrieval (void);
ClutterStage *clutter_x11_get_stage_from_window (Window win);
-#ifndef CLUTTER_DISABLE_DEPRECATED
-const GSList* clutter_x11_get_input_devices (void) G_GNUC_DEPRECATED;
-#endif
-
void clutter_x11_enable_xinput (void);
gboolean clutter_x11_has_xinput (void);
diff --git a/configure.ac b/configure.ac
index aef84142d..c1ebcd30a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -59,8 +59,7 @@ AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([build])
AC_CONFIG_MACRO_DIR([build/autotools])
-AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-bzip2])
-
+AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
AM_SILENT_RULES([yes])
AC_SUBST([CLUTTER_MAJOR_VERSION], [clutter_major_version])
@@ -124,16 +123,16 @@ m4_define([gtk_doc_req_version], [1.13])
m4_define([xfixes_req_version], [3])
m4_define([xcomposite_req_version], [0.4])
-AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
-AC_SUBST([COGL_REQ_VERSION], [cogl_req_version])
-AC_SUBST([JSON_GLIB_REQ_VERSION], [json_glib_req_version])
-AC_SUBST([ATK_REQ_VERSION], [atk_req_version])
-AC_SUBST([CAIRO_REQ_VERSION], [cairo_req_version])
-AC_SUBST([PANGO_REQ_VERSION], [pango_req_version])
-AC_SUBST([GI_REQ_VERSION], [gi_req_version])
-AC_SUBST([UPROF_REQ_VERSION], [uprof_req_version])
-AC_SUBST([GTK_DOC_REQ_VERSION], [gtk_doc_req_version])
-AC_SUBST([XFIXES_REQ_VERSION], [xfixes_req_version])
+AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
+AC_SUBST([COGL_REQ_VERSION], [cogl_req_version])
+AC_SUBST([JSON_GLIB_REQ_VERSION], [json_glib_req_version])
+AC_SUBST([ATK_REQ_VERSION], [atk_req_version])
+AC_SUBST([CAIRO_REQ_VERSION], [cairo_req_version])
+AC_SUBST([PANGO_REQ_VERSION], [pango_req_version])
+AC_SUBST([GI_REQ_VERSION], [gi_req_version])
+AC_SUBST([UPROF_REQ_VERSION], [uprof_req_version])
+AC_SUBST([GTK_DOC_REQ_VERSION], [gtk_doc_req_version])
+AC_SUBST([XFIXES_REQ_VERSION], [xfixes_req_version])
AC_SUBST([XCOMPOSITE_REQ_VERSION], [xcomposite_req_version])
# Checks for typedefs, structures, and compiler characteristics.
@@ -306,7 +305,7 @@ AS_CASE([$CLUTTER_FLAVOUR],
# Make sure we don't enable tslib and evdev at the same time, we
# don't support multiple event backends yet.
AS_IF([test "x$have_tslib" = "xyes" -a "x$have_evdev" = "xyes"],
- [AC_MSG_ERROR([Can't enable both tslib and evdev events])])
+ [AC_MSG_ERROR([Cannot enable both tslib and evdev events])])
FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
@@ -426,8 +425,8 @@ AM_CONDITIONAL(SUPPORT_WIN32, [test "x$CLUTTER_WINSYS" = "xwin32"])
AM_CONDITIONAL(SUPPORT_CEX100, [test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"])
AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$CLUTTER_WINSYS" = "xwayland"])
AM_CONDITIONAL(SUPPORT_STUB, [test "x$CLUTTER_WINSYS" = "xwin32" -o \
- "x$CLUTTER_WINSYS" = "xosx" -o \
- "x$CLUTTER_WINSYS" = "xwayland"])
+ "x$CLUTTER_WINSYS" = "xosx" -o \
+ "x$CLUTTER_WINSYS" = "xwayland"])
AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
AM_CONDITIONAL(SUPPORT_EVDEV, [test "x$have_evdev" = "xyes"])
@@ -437,8 +436,7 @@ dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
dnl and cogl code we use a define in config.h instead. This helps ensure
dnl other tools such as glib-mkenums and gir-scanner don't end up
dnl using the define also.
-AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1],
- [Can use Cogl 2.0 API internally])
+AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
dnl === Clutter configuration =================================================
@@ -875,10 +873,12 @@ AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "
CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
+COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
AC_SUBST(CAIRO_PREFIX)
AC_SUBST(GLIB_PREFIX)
AC_SUBST(PANGO_PREFIX)
+AC_SUBST(COGL_PREFIX)
AC_SUBST(ATK_PREFIX)
dnl === Manual ================================================================
diff --git a/doc/reference/clutter/Makefile.am b/doc/reference/clutter/Makefile.am
index 87f68de23..e38d08840 100644
--- a/doc/reference/clutter/Makefile.am
+++ b/doc/reference/clutter/Makefile.am
@@ -38,28 +38,29 @@ MKTMPL_OPTIONS=
# Extra options to supply to gtkdoc-fixref. Not normally needed.
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
FIXXREF_OPTIONS=\
- --extra-dir=../cogl/html \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/glib \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gobject \
--extra-dir=$(CAIRO_PREFIX)/share/gtk-doc/html/cairo \
- --extra-dir=$(PANGO_PREFIX)/share/gtk-doc/html/pango
+ --extra-dir=$(PANGO_PREFIX)/share/gtk-doc/html/pango \
+ --extra-dir=$(COGL_PREFIX)/share/gtk-doc/html/cogl
# Used for dependencies. The docs will be rebuilt if any of these change.
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB=$(top_srcdir)/clutter/*.h \
+HFILE_GLOB=\
+ $(top_srcdir)/clutter/*.h \
$(top_builddir)/clutter/*.h \
$(top_srcdir)/clutter/x11/clutter-x11.h \
$(top_srcdir)/clutter/x11/clutter-x11-texture-pixmap.h \
- $(top_srcdir)/clutter/glx/clutter-glx-texture-pixmap.h \
- $(top_srcdir)/clutter/egl/clutter-egl.h \
- $(top_srcdir)/clutter/egl/clutter-cex100.h \
+ $(top_srcdir)/clutter/cogl/clutter-egl.h \
+ $(top_srcdir)/clutter/cogl/clutter-cex100.h \
$(top_srcdir)/clutter/win32/clutter-win32.h
-CFILE_GLOB=$(top_srcdir)/clutter/*.c \
+
+CFILE_GLOB=\
+ $(top_srcdir)/clutter/*.c \
+ $(top_srcdir)/clutter/cogl/*.c \
$(top_srcdir)/clutter/x11/*.c \
- $(top_srcdir)/clutter/glx/*.c \
- $(top_srcdir)/clutter/win32/*.c \
- $(top_srcdir)/clutter/egl/*.c
+ $(top_srcdir)/clutter/win32/*.c
# Header files to ignore when scanning.
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
@@ -94,9 +95,7 @@ IGNORE_HFILES=\
clutter-timeout-interval.h \
cally \
cogl \
- egl \
evdev \
- glx \
osx \
x11 \
wayland \
@@ -105,9 +104,8 @@ IGNORE_HFILES=\
EXTRA_HFILES=\
$(top_srcdir)/clutter/x11/clutter-x11.h \
$(top_srcdir)/clutter/x11/clutter-x11-texture-pixmap.h \
- $(top_srcdir)/clutter/glx/clutter-glx-texture-pixmap.h \
- $(top_srcdir)/clutter/egl/clutter-egl.h \
- $(top_srcdir)/clutter/egl/clutter-cex100.h \
+ $(top_srcdir)/clutter/cogl/clutter-egl.h \
+ $(top_srcdir)/clutter/cogl/clutter-cex100.h \
$(top_srcdir)/clutter/wayland/clutter-wayland.h \
$(top_srcdir)/clutter/win32/clutter-win32.h
diff --git a/doc/reference/clutter/clutter-docs.xml.in b/doc/reference/clutter/clutter-docs.xml.in
index 789d71f86..12879d253 100644
--- a/doc/reference/clutter/clutter-docs.xml.in
+++ b/doc/reference/clutter/clutter-docs.xml.in
@@ -98,6 +98,7 @@
<xi:include href="xml/clutter-click-action.xml"/>
<xi:include href="xml/clutter-drag-action.xml"/>
+ <xi:include href="xml/clutter-drop-action.xml"/>
<xi:include href="xml/clutter-gesture-action.xml"/>
<xi:include href="xml/clutter-swipe-action.xml"/>
</chapter>
@@ -219,7 +220,6 @@
<xi:include href="xml/clutter-backend.xml"/>
<xi:include href="xml/clutter-x11.xml"/>
<xi:include href="xml/clutter-x11-texture-pixmap.xml"/>
- <xi:include href="xml/clutter-glx.xml"/>
<xi:include href="xml/clutter-win32.xml"/>
<xi:include href="xml/clutter-egl.xml"/>
<xi:include href="xml/clutter-cex100.xml"/>
diff --git a/doc/reference/clutter/clutter-sections.txt b/doc/reference/clutter/clutter-sections.txt
index 0167abae6..8c10e8915 100644
--- a/doc/reference/clutter/clutter-sections.txt
+++ b/doc/reference/clutter/clutter-sections.txt
@@ -612,6 +612,8 @@ clutter_stage_set_no_clear_hint
clutter_stage_get_no_clear_hint
clutter_stage_set_accept_focus
clutter_stage_get_accept_focus
+clutter_stage_get_motion_events_enabled
+clutter_stage_set_motion_events_enabled
<SUBSECTION>
ClutterPerspective
@@ -1838,29 +1840,6 @@ clutter_binding_pool_get_type
</SECTION>
<SECTION>
-<TITLE>GLX Specific Support</TITLE>
-<FILE>clutter-glx</FILE>
-ClutterGLXTexturePixmap
-ClutterGLXTexturePixmapClass
-clutter_glx_texture_pixmap_new
-clutter_glx_texture_pixmap_new_with_pixmap
-clutter_glx_texture_pixmap_new_with_window
-clutter_glx_texture_pixmap_using_extension
-
-<SUBSECTION Standard>
-CLUTTER_GLX_IS_TEXTURE_PIXMAP
-CLUTTER_GLX_IS_TEXTURE_PIXMAP_CLASS
-CLUTTER_GLX_TEXTURE_PIXMAP
-CLUTTER_GLX_TEXTURE_PIXMAP_CLASS
-CLUTTER_GLX_TEXTURE_PIXMAP_GET_CLASS
-CLUTTER_GLX_TYPE_TEXTURE_PIXMAP
-clutter_glx_texture_pixmap_get_type
-
-<SUBSECTION Private>
-ClutterGLXTexturePixmapPrivate
-</SECTION>
-
-<SECTION>
<TITLE>EGL Specific Support</TITLE>
<FILE>clutter-egl</FILE>
clutter_egl_display
@@ -2424,8 +2403,8 @@ ClutterClickActionPrivate
<FILE>clutter-effect</FILE>
ClutterEffect
ClutterEffectClass
-ClutterEffectRunFlags
-clutter_effect_queue_rerun
+ClutterEffectPaintFlags
+clutter_effect_queue_repaint
<SUBSECTION Standard>
CLUTTER_TYPE_EFFECT
CLUTTER_EFFECT
@@ -2681,3 +2660,20 @@ CLUTTER_TYPE_SWIPE_ACTION
ClutterSwipeActionPrivate
clutter_swipe_action_get_type
</SECTION>
+
+<SECTION>
+<FILE>clutter-drop-action</FILE>
+ClutterDropAction
+ClutterDropActionClass
+clutter_drop_action_new
+<SUBSECTION Standard>
+CLUTTER_TYPE_DROP_ACTION
+CLUTTER_DROP_ACTION
+CLUTTER_DROP_ACTION_CLASS
+CLUTTER_IS_DROP_ACTION
+CLUTTER_IS_DROP_ACTION_CLASS
+CLUTTER_DROP_ACTION_GET_CLASS
+<SUBSECTION Private>
+ClutterDropActionPrivate
+clutter_drop_action_get_type
+</SECTION>
diff --git a/doc/reference/clutter/clutter.types b/doc/reference/clutter/clutter.types
index c4eefe8af..8fc224c75 100644
--- a/doc/reference/clutter/clutter.types
+++ b/doc/reference/clutter/clutter.types
@@ -31,6 +31,7 @@ clutter_deform_effect_get_type
clutter_desaturate_effect_get_type
clutter_device_manager_get_type
clutter_drag_action_get_type
+clutter_drop_action_get_type
clutter_effect_get_type
clutter_fixed_layout_get_type
clutter_flow_layout_get_type
diff --git a/doc/reference/clutter/constraints-example.png b/doc/reference/clutter/constraints-example.png
index e78ead486..c2a71b2d2 100644
--- a/doc/reference/clutter/constraints-example.png
+++ b/doc/reference/clutter/constraints-example.png
Binary files differ
diff --git a/po/es.po b/po/es.po
index 0776d5846..f6b797b78 100644
--- a/po/es.po
+++ b/po/es.po
@@ -6,803 +6,805 @@
msgid ""
msgstr ""
"Project-Id-Version: clutter master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.clutter-project.org/enter_bug.cgi?"
-"product=clutter\n"
-"POT-Creation-Date: 2011-06-13 23:24+0100\n"
-"PO-Revision-Date: 2011-06-06 12:58+0200\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=clutter&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-06-13 22:46+0000\n"
+"PO-Revision-Date: 2011-06-19 12:14+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: clutter/clutter-actor.c:3809
+#: ../clutter/clutter-actor.c:3809
msgid "X coordinate"
msgstr "Coordenada X"
-#: clutter/clutter-actor.c:3810
+#: ../clutter/clutter-actor.c:3810
msgid "X coordinate of the actor"
msgstr "Coordenada X del actor"
-#: clutter/clutter-actor.c:3825
+#: ../clutter/clutter-actor.c:3825
msgid "Y coordinate"
msgstr "Coordenada Y"
-#: clutter/clutter-actor.c:3826
+#: ../clutter/clutter-actor.c:3826
msgid "Y coordinate of the actor"
msgstr "Coordenada Y del actor"
-#: clutter/clutter-actor.c:3841 clutter/clutter-behaviour-ellipse.c:474
+#: ../clutter/clutter-actor.c:3841 ../clutter/clutter-behaviour-ellipse.c:474
msgid "Width"
msgstr "Anchura"
-#: clutter/clutter-actor.c:3842
+#: ../clutter/clutter-actor.c:3842
msgid "Width of the actor"
msgstr "Anchura del actor"
-#: clutter/clutter-actor.c:3856 clutter/clutter-behaviour-ellipse.c:490
+#: ../clutter/clutter-actor.c:3856 ../clutter/clutter-behaviour-ellipse.c:490
msgid "Height"
msgstr "Altura"
-#: clutter/clutter-actor.c:3857
+#: ../clutter/clutter-actor.c:3857
msgid "Height of the actor"
msgstr "Altura del actor"
-#: clutter/clutter-actor.c:3875
+#: ../clutter/clutter-actor.c:3875
msgid "Fixed X"
msgstr "X fija"
-#: clutter/clutter-actor.c:3876
+#: ../clutter/clutter-actor.c:3876
msgid "Forced X position of the actor"
msgstr "Posición X forzada del actor"
-#: clutter/clutter-actor.c:3894
+#: ../clutter/clutter-actor.c:3894
msgid "Fixed Y"
msgstr "Y fija"
-#: clutter/clutter-actor.c:3895
+#: ../clutter/clutter-actor.c:3895
msgid "Forced Y position of the actor"
msgstr "Posición Y forzada del actor"
-#: clutter/clutter-actor.c:3911
+#: ../clutter/clutter-actor.c:3911
msgid "Fixed position set"
msgstr "Posición fija establecida"
-#: clutter/clutter-actor.c:3912
+#: ../clutter/clutter-actor.c:3912
msgid "Whether to use fixed positioning for the actor"
msgstr "Indica si se usa una posición fija para el actor"
-#: clutter/clutter-actor.c:3934
+#: ../clutter/clutter-actor.c:3934
msgid "Min Width"
msgstr "Anchura mínima"
-#: clutter/clutter-actor.c:3935
+#: ../clutter/clutter-actor.c:3935
msgid "Forced minimum width request for the actor"
msgstr "Solicitud de anchura mínima forzada para el actor"
-#: clutter/clutter-actor.c:3954
+#: ../clutter/clutter-actor.c:3954
msgid "Min Height"
msgstr "Altura mínima"
-#: clutter/clutter-actor.c:3955
+#: ../clutter/clutter-actor.c:3955
msgid "Forced minimum height request for the actor"
msgstr "Solicitud de altura mínima forzada para el actor"
-#: clutter/clutter-actor.c:3974
+#: ../clutter/clutter-actor.c:3974
msgid "Natural Width"
msgstr "Anchura natural"
-#: clutter/clutter-actor.c:3975
+#: ../clutter/clutter-actor.c:3975
msgid "Forced natural width request for the actor"
msgstr "Solicitud de anchura natural forzada para el actor"
-#: clutter/clutter-actor.c:3994
+#: ../clutter/clutter-actor.c:3994
msgid "Natural Height"
msgstr "Altura natural"
-#: clutter/clutter-actor.c:3995
+#: ../clutter/clutter-actor.c:3995
msgid "Forced natural height request for the actor"
msgstr "Solicitud de altura natural forzada para el actor"
-#: clutter/clutter-actor.c:4011
+#: ../clutter/clutter-actor.c:4011
msgid "Minimum width set"
msgstr "Anchura mínima establecida"
-#: clutter/clutter-actor.c:4012
+#: ../clutter/clutter-actor.c:4012
msgid "Whether to use the min-width property"
msgstr "Indica si se usa la propiedad «anchura mínima»"
-#: clutter/clutter-actor.c:4027
+#: ../clutter/clutter-actor.c:4027
msgid "Minimum height set"
msgstr "Altura mínima establecida"
-#: clutter/clutter-actor.c:4028
+#: ../clutter/clutter-actor.c:4028
msgid "Whether to use the min-height property"
msgstr "Indica si se usa la propiedad «altura mínima»"
-#: clutter/clutter-actor.c:4043
+#: ../clutter/clutter-actor.c:4043
msgid "Natural width set"
msgstr "Anchura natural establecida"
-#: clutter/clutter-actor.c:4044
+#: ../clutter/clutter-actor.c:4044
msgid "Whether to use the natural-width property"
msgstr "Indica si se usa la propiedad «anchura natural»"
-#: clutter/clutter-actor.c:4061
+#: ../clutter/clutter-actor.c:4061
msgid "Natural height set"
msgstr "Altura natural establecida"
-#: clutter/clutter-actor.c:4062
+#: ../clutter/clutter-actor.c:4062
msgid "Whether to use the natural-height property"
msgstr "Indica si se usa la propiedad «altura natural»"
-#: clutter/clutter-actor.c:4081
+#: ../clutter/clutter-actor.c:4081
msgid "Allocation"
msgstr "Asignación"
-#: clutter/clutter-actor.c:4082
+#: ../clutter/clutter-actor.c:4082
msgid "The actor's allocation"
msgstr "La asignación del actor"
-#: clutter/clutter-actor.c:4138
+#: ../clutter/clutter-actor.c:4138
msgid "Request Mode"
msgstr "Modo de solicitud"
-#: clutter/clutter-actor.c:4139
+#: ../clutter/clutter-actor.c:4139
msgid "The actor's request mode"
msgstr "El modo de solicitud del actor"
-#: clutter/clutter-actor.c:4154
+#: ../clutter/clutter-actor.c:4154
msgid "Depth"
msgstr "Profundidad"
-#: clutter/clutter-actor.c:4155
+#: ../clutter/clutter-actor.c:4155
msgid "Position on the Z axis"
msgstr "Posición en el eje Z"
-#: clutter/clutter-actor.c:4169
+#: ../clutter/clutter-actor.c:4169
msgid "Opacity"
msgstr "Opacidad"
-#: clutter/clutter-actor.c:4170
+#: ../clutter/clutter-actor.c:4170
msgid "Opacity of an actor"
msgstr "Opacidad de un actor"
-#: clutter/clutter-actor.c:4186
+#: ../clutter/clutter-actor.c:4186
msgid "Offscreen redirect"
msgstr "Redirección fuera de la pantalla"
-#: clutter/clutter-actor.c:4187
+#: ../clutter/clutter-actor.c:4187
msgid "Whether to flatten the actor into a single image"
msgstr "Indica si se debe aplanar el actor en una única imagen"
-#: clutter/clutter-actor.c:4205
+#: ../clutter/clutter-actor.c:4205
msgid "Visible"
msgstr "Visible"
-#: clutter/clutter-actor.c:4206
+#: ../clutter/clutter-actor.c:4206
msgid "Whether the actor is visible or not"
msgstr "Indica si el actor es visible o no"
-#: clutter/clutter-actor.c:4221
+#: ../clutter/clutter-actor.c:4221
msgid "Mapped"
msgstr "Mapeado"
-#: clutter/clutter-actor.c:4222
+#: ../clutter/clutter-actor.c:4222
msgid "Whether the actor will be painted"
msgstr "Indica si se dibujará el actor"
-#: clutter/clutter-actor.c:4236
+#: ../clutter/clutter-actor.c:4236
msgid "Realized"
msgstr "Realizado"
-#: clutter/clutter-actor.c:4237
+#: ../clutter/clutter-actor.c:4237
msgid "Whether the actor has been realized"
msgstr "Indica si el actor se ha realizado"
-#: clutter/clutter-actor.c:4253
+#: ../clutter/clutter-actor.c:4253
msgid "Reactive"
msgstr "Reactivo"
-#: clutter/clutter-actor.c:4254
+#: ../clutter/clutter-actor.c:4254
msgid "Whether the actor is reactive to events"
msgstr "Indica si el actor es reactivo a eventos"
-#: clutter/clutter-actor.c:4266
+#: ../clutter/clutter-actor.c:4266
msgid "Has Clip"
msgstr "Tiene recorte"
-#: clutter/clutter-actor.c:4267
+#: ../clutter/clutter-actor.c:4267
msgid "Whether the actor has a clip set"
msgstr "Indica si el actor tiene un conjunto de recortes"
-#: clutter/clutter-actor.c:4282
+#: ../clutter/clutter-actor.c:4282
msgid "Clip"
msgstr "Recortar"
-#: clutter/clutter-actor.c:4283
+#: ../clutter/clutter-actor.c:4283
msgid "The clip region for the actor"
msgstr "La región de recorte del actor"
-#: clutter/clutter-actor.c:4297 clutter/clutter-actor-meta.c:207
-#: clutter/clutter-binding-pool.c:319 clutter/clutter-input-device.c:236
+#: ../clutter/clutter-actor.c:4297 ../clutter/clutter-actor-meta.c:207
+#: ../clutter/clutter-binding-pool.c:319 ../clutter/clutter-input-device.c:236
msgid "Name"
msgstr "Nombre"
-#: clutter/clutter-actor.c:4298
+#: ../clutter/clutter-actor.c:4298
msgid "Name of the actor"
msgstr "Nombre del actor"
-#: clutter/clutter-actor.c:4312
+#: ../clutter/clutter-actor.c:4312
msgid "Scale X"
msgstr "Escala en X"
-#: clutter/clutter-actor.c:4313
+#: ../clutter/clutter-actor.c:4313
msgid "Scale factor on the X axis"
msgstr "Factor de escala en el eje X"
-#: clutter/clutter-actor.c:4328
+#: ../clutter/clutter-actor.c:4328
msgid "Scale Y"
msgstr "Escala en Y"
-#: clutter/clutter-actor.c:4329
+#: ../clutter/clutter-actor.c:4329
msgid "Scale factor on the Y axis"
msgstr "Factor de escala en el eje Y"
-#: clutter/clutter-actor.c:4344
+#: ../clutter/clutter-actor.c:4344
msgid "Scale Center X"
msgstr "Centro X del escalado"
-#: clutter/clutter-actor.c:4345
+#: ../clutter/clutter-actor.c:4345
msgid "Horizontal scale center"
msgstr "Centro de la escala horizontal"
-#: clutter/clutter-actor.c:4360
+#: ../clutter/clutter-actor.c:4360
msgid "Scale Center Y"
msgstr "Centro Y del escalado"
-#: clutter/clutter-actor.c:4361
+#: ../clutter/clutter-actor.c:4361
msgid "Vertical scale center"
msgstr "Centro de la escala vertical"
-#: clutter/clutter-actor.c:4376
+#: ../clutter/clutter-actor.c:4376
msgid "Scale Gravity"
msgstr "Gravedad del escalado"
-#: clutter/clutter-actor.c:4377
+#: ../clutter/clutter-actor.c:4377
msgid "The center of scaling"
msgstr "El centro del escalado"
-#: clutter/clutter-actor.c:4394
+#: ../clutter/clutter-actor.c:4394
msgid "Rotation Angle X"
msgstr "Ángulo de rotación X"
-#: clutter/clutter-actor.c:4395
+#: ../clutter/clutter-actor.c:4395
msgid "The rotation angle on the X axis"
msgstr "El ángulo de rotación en el eje X"
-#: clutter/clutter-actor.c:4410
+#: ../clutter/clutter-actor.c:4410
msgid "Rotation Angle Y"
msgstr "Ángulo de rotación Y"
-#: clutter/clutter-actor.c:4411
+#: ../clutter/clutter-actor.c:4411
msgid "The rotation angle on the Y axis"
msgstr "El ángulo de rotación en el eje Y"
-#: clutter/clutter-actor.c:4426
+#: ../clutter/clutter-actor.c:4426
msgid "Rotation Angle Z"
msgstr "Ángulo de rotación Z"
-#: clutter/clutter-actor.c:4427
+#: ../clutter/clutter-actor.c:4427
msgid "The rotation angle on the Z axis"
msgstr "El ángulo de rotación en el eje Z"
-#: clutter/clutter-actor.c:4442
+#: ../clutter/clutter-actor.c:4442
msgid "Rotation Center X"
msgstr "Centro de rotación X"
-#: clutter/clutter-actor.c:4443
+#: ../clutter/clutter-actor.c:4443
msgid "The rotation center on the X axis"
msgstr "El ángulo de rotación en el eje Y"
-#: clutter/clutter-actor.c:4459
+#: ../clutter/clutter-actor.c:4459
msgid "Rotation Center Y"
msgstr "Centro de rotación Y"
-#: clutter/clutter-actor.c:4460
+#: ../clutter/clutter-actor.c:4460
msgid "The rotation center on the Y axis"
msgstr "En centro de la rotación en el eje Y"
-#: clutter/clutter-actor.c:4476
+#: ../clutter/clutter-actor.c:4476
msgid "Rotation Center Z"
msgstr "Centro de rotación Z"
-#: clutter/clutter-actor.c:4477
+#: ../clutter/clutter-actor.c:4477
msgid "The rotation center on the Z axis"
msgstr "El ángulo de rotación en el eje Z"
-#: clutter/clutter-actor.c:4493
+#: ../clutter/clutter-actor.c:4493
msgid "Rotation Center Z Gravity"
msgstr "Gravedad del centro de rotación Z"
-#: clutter/clutter-actor.c:4494
+#: ../clutter/clutter-actor.c:4494
msgid "Center point for rotation around the Z axis"
msgstr "Punto central de la rotación alrededor del eje Z"
-#: clutter/clutter-actor.c:4512
+#: ../clutter/clutter-actor.c:4512
msgid "Anchor X"
msgstr "Ancla X"
-#: clutter/clutter-actor.c:4513
+#: ../clutter/clutter-actor.c:4513
msgid "X coordinate of the anchor point"
msgstr "Coordenada X del punto de anclado"
-#: clutter/clutter-actor.c:4529
+#: ../clutter/clutter-actor.c:4529
msgid "Anchor Y"
msgstr "Ancla Y"
-#: clutter/clutter-actor.c:4530
+#: ../clutter/clutter-actor.c:4530
msgid "Y coordinate of the anchor point"
msgstr "Coordenada Y del punto de anclado"
-#: clutter/clutter-actor.c:4545
+#: ../clutter/clutter-actor.c:4545
msgid "Anchor Gravity"
msgstr "Gravedad del ancla"
-#: clutter/clutter-actor.c:4546
+#: ../clutter/clutter-actor.c:4546
msgid "The anchor point as a ClutterGravity"
msgstr "El punto de anclado como un «ClutterGravity»"
-#: clutter/clutter-actor.c:4565
+#: ../clutter/clutter-actor.c:4565
msgid "Show on set parent"
msgstr "Mostrar en el conjunto padre"
-#: clutter/clutter-actor.c:4566
+#: ../clutter/clutter-actor.c:4566
msgid "Whether the actor is shown when parented"
msgstr "Indica si el actor se muestra cuando tiene padre"
-#: clutter/clutter-actor.c:4586
+#: ../clutter/clutter-actor.c:4586
msgid "Clip to Allocation"
msgstr "Recortar a la asignación"
-#: clutter/clutter-actor.c:4587
+#: ../clutter/clutter-actor.c:4587
msgid "Sets the clip region to track the actor's allocation"
msgstr "Configura la región de recorte para seguir la ubicación del actor"
-#: clutter/clutter-actor.c:4597
+#: ../clutter/clutter-actor.c:4597
msgid "Text Direction"
msgstr "Dirección del texto"
-#: clutter/clutter-actor.c:4598
+#: ../clutter/clutter-actor.c:4598
msgid "Direction of the text"
msgstr "Dirección del texto"
-#: clutter/clutter-actor.c:4616
+#: ../clutter/clutter-actor.c:4616
msgid "Has Pointer"
msgstr "Tiene puntero"
-#: clutter/clutter-actor.c:4617
+#: ../clutter/clutter-actor.c:4617
msgid "Whether the actor contains the pointer of an input device"
msgstr "Indica si el actor contiene un puntero a un dispositivo de entrada"
-#: clutter/clutter-actor.c:4634
+#: ../clutter/clutter-actor.c:4634
msgid "Actions"
msgstr "Acciones"
-#: clutter/clutter-actor.c:4635
+#: ../clutter/clutter-actor.c:4635
msgid "Adds an action to the actor"
msgstr "Añade una acción al actor"
-#: clutter/clutter-actor.c:4649
+#: ../clutter/clutter-actor.c:4649
msgid "Constraints"
msgstr "Restricciones"
-#: clutter/clutter-actor.c:4650
+#: ../clutter/clutter-actor.c:4650
msgid "Adds a constraint to the actor"
msgstr "Añade una restricción al actor"
-#: clutter/clutter-actor-meta.c:193 clutter/clutter-child-meta.c:142
+#: ../clutter/clutter-actor-meta.c:193 ../clutter/clutter-child-meta.c:142
msgid "Actor"
msgstr "Actor"
-#: clutter/clutter-actor-meta.c:194
+#: ../clutter/clutter-actor-meta.c:194
msgid "The actor attached to the meta"
msgstr "El actor adjunto a la meta"
-#: clutter/clutter-actor-meta.c:208
+#: ../clutter/clutter-actor-meta.c:208
msgid "The name of the meta"
msgstr "El nombre de la meta"
-#: clutter/clutter-actor-meta.c:221 clutter/clutter-input-device.c:315
-#: clutter/clutter-shader.c:307
+#: ../clutter/clutter-actor-meta.c:221 ../clutter/clutter-input-device.c:315
+#: ../clutter/clutter-shader.c:307
msgid "Enabled"
msgstr "Activada"
-#: clutter/clutter-actor-meta.c:222
+#: ../clutter/clutter-actor-meta.c:222
msgid "Whether the meta is enabled"
msgstr "Indica si la meta está activada"
-#: clutter/clutter-align-constraint.c:252
-#: clutter/clutter-bind-constraint.c:316 clutter/clutter-clone.c:340
-#: clutter/clutter-snap-constraint.c:321
+#: ../clutter/clutter-align-constraint.c:252
+#: ../clutter/clutter-bind-constraint.c:316 ../clutter/clutter-clone.c:340
+#: ../clutter/clutter-snap-constraint.c:321
msgid "Source"
msgstr "Fuente"
-#: clutter/clutter-align-constraint.c:253
+#: ../clutter/clutter-align-constraint.c:253
msgid "The source of the alignment"
msgstr "La fuente de la alineación"
-#: clutter/clutter-align-constraint.c:266
+#: ../clutter/clutter-align-constraint.c:266
msgid "Align Axis"
msgstr "Alinear ejes"
-#: clutter/clutter-align-constraint.c:267
+#: ../clutter/clutter-align-constraint.c:267
msgid "The axis to align the position to"
msgstr "El eje al que alinear la posición"
-#: clutter/clutter-align-constraint.c:286
-#: clutter/clutter-desaturate-effect.c:304
+#: ../clutter/clutter-align-constraint.c:286
+#: ../clutter/clutter-desaturate-effect.c:304
msgid "Factor"
msgstr "Factor"
-#: clutter/clutter-align-constraint.c:287
+#: ../clutter/clutter-align-constraint.c:287
msgid "The alignment factor, between 0.0 and 1.0"
msgstr "El factor de alineación, entre 0.0 y 1.0"
-#: clutter/clutter-alpha.c:339 clutter/clutter-animation.c:528
-#: clutter/clutter-animator.c:1802
+#: ../clutter/clutter-alpha.c:339 ../clutter/clutter-animation.c:528
+#: ../clutter/clutter-animator.c:1802
msgid "Timeline"
msgstr "Línea de tiempo"
-#: clutter/clutter-alpha.c:340
+#: ../clutter/clutter-alpha.c:340
msgid "Timeline used by the alpha"
msgstr "Línea de tiempo usada por el alfa"
-#: clutter/clutter-alpha.c:355
+#: ../clutter/clutter-alpha.c:355
msgid "Alpha value"
msgstr "Valor alfa"
-#: clutter/clutter-alpha.c:356
+#: ../clutter/clutter-alpha.c:356
msgid "Alpha value as computed by the alpha"
msgstr "Valor alfa calculado por el alfa"
-#: clutter/clutter-alpha.c:376 clutter/clutter-animation.c:484
+#: ../clutter/clutter-alpha.c:376 ../clutter/clutter-animation.c:484
msgid "Mode"
msgstr "Modo"
-#: clutter/clutter-alpha.c:377
+#: ../clutter/clutter-alpha.c:377
msgid "Progress mode"
msgstr "Modo de progreso"
-#: clutter/clutter-animation.c:468
+#: ../clutter/clutter-animation.c:468
msgid "Object"
msgstr "Objeto"
-#: clutter/clutter-animation.c:469
+#: ../clutter/clutter-animation.c:469
msgid "Object to which the animation applies"
msgstr "Objeto al que se aplica la animación"
-#: clutter/clutter-animation.c:485
+#: ../clutter/clutter-animation.c:485
msgid "The mode of the animation"
msgstr "El modo de la animación"
-#: clutter/clutter-animation.c:499 clutter/clutter-animator.c:1786
-#: clutter/clutter-media.c:194 clutter/clutter-state.c:1422
-#: clutter/clutter-timeline.c:294
+#: ../clutter/clutter-animation.c:499 ../clutter/clutter-animator.c:1786
+#: ../clutter/clutter-media.c:194 ../clutter/clutter-state.c:1422
+#: ../clutter/clutter-timeline.c:294
msgid "Duration"
msgstr "Duración"
-#: clutter/clutter-animation.c:500
+#: ../clutter/clutter-animation.c:500
msgid "Duration of the animation, in milliseconds"
msgstr "Duración de la animación, en milisegundos"
-#: clutter/clutter-animation.c:514 clutter/clutter-timeline.c:263
+#: ../clutter/clutter-animation.c:514 ../clutter/clutter-timeline.c:263
msgid "Loop"
msgstr "Bucle"
-#: clutter/clutter-animation.c:515
+#: ../clutter/clutter-animation.c:515
msgid "Whether the animation should loop"
msgstr "Indica si la animación debería ser un bucle"
-#: clutter/clutter-animation.c:529
+#: ../clutter/clutter-animation.c:529
msgid "The timeline used by the animation"
msgstr "La línea de tiempo usada por la animación"
-#: clutter/clutter-animation.c:542 clutter/clutter-behaviour.c:298
+#: ../clutter/clutter-animation.c:542 ../clutter/clutter-behaviour.c:298
msgid "Alpha"
msgstr "Alfa"
-#: clutter/clutter-animation.c:543
+#: ../clutter/clutter-animation.c:543
msgid "The alpha used by the animation"
msgstr "El alfa usado por la animación"
-#: clutter/clutter-animator.c:1787
+#: ../clutter/clutter-animator.c:1787
msgid "The duration of the animation"
msgstr "La duración de la animación"
-#: clutter/clutter-animator.c:1803
+#: ../clutter/clutter-animator.c:1803
msgid "The timeline of the animation"
msgstr "La línea de tiempo de la animación"
-#: clutter/clutter-behaviour.c:299
+#: ../clutter/clutter-behaviour.c:299
msgid "Alpha Object to drive the behaviour"
msgstr "Objeto alfa para dirigir el comportamiento"
-#: clutter/clutter-behaviour-depth.c:174
+#: ../clutter/clutter-behaviour-depth.c:174
msgid "Start Depth"
msgstr "Profundidad inicial"
-#: clutter/clutter-behaviour-depth.c:175
+#: ../clutter/clutter-behaviour-depth.c:175
msgid "Initial depth to apply"
msgstr "Profundidad inicial que aplicar"
-#: clutter/clutter-behaviour-depth.c:190
+#: ../clutter/clutter-behaviour-depth.c:190
msgid "End Depth"
msgstr "Profundidad final"
-#: clutter/clutter-behaviour-depth.c:191
+#: ../clutter/clutter-behaviour-depth.c:191
msgid "Final depth to apply"
msgstr "Profundidad final que aplicar"
-#: clutter/clutter-behaviour-ellipse.c:394
+#: ../clutter/clutter-behaviour-ellipse.c:394
msgid "Start Angle"
msgstr "Ángulo inicial"
-#: clutter/clutter-behaviour-ellipse.c:395
-#: clutter/clutter-behaviour-rotate.c:276
+#: ../clutter/clutter-behaviour-ellipse.c:395
+#: ../clutter/clutter-behaviour-rotate.c:276
msgid "Initial angle"
msgstr "Ángulo inicial"
-#: clutter/clutter-behaviour-ellipse.c:410
+#: ../clutter/clutter-behaviour-ellipse.c:410
msgid "End Angle"
msgstr "Ángulo final"
-#: clutter/clutter-behaviour-ellipse.c:411
-#: clutter/clutter-behaviour-rotate.c:294
+#: ../clutter/clutter-behaviour-ellipse.c:411
+#: ../clutter/clutter-behaviour-rotate.c:294
msgid "Final angle"
msgstr "Ángulo final"
-#: clutter/clutter-behaviour-ellipse.c:426
+#: ../clutter/clutter-behaviour-ellipse.c:426
msgid "Angle x tilt"
msgstr "Inclinación X del ángulo"
-#: clutter/clutter-behaviour-ellipse.c:427
+#: ../clutter/clutter-behaviour-ellipse.c:427
msgid "Tilt of the ellipse around x axis"
msgstr "Inclinación de la elipse sobre el eje X"
-#: clutter/clutter-behaviour-ellipse.c:442
+#: ../clutter/clutter-behaviour-ellipse.c:442
msgid "Angle y tilt"
msgstr "Inclinación Y del ángulo"
-#: clutter/clutter-behaviour-ellipse.c:443
+#: ../clutter/clutter-behaviour-ellipse.c:443
msgid "Tilt of the ellipse around y axis"
msgstr "Inclinación de la elipse sobre el eje Y"
-#: clutter/clutter-behaviour-ellipse.c:458
+#: ../clutter/clutter-behaviour-ellipse.c:458
msgid "Angle z tilt"
msgstr "Inclinación Z del ángulo"
-#: clutter/clutter-behaviour-ellipse.c:459
+#: ../clutter/clutter-behaviour-ellipse.c:459
msgid "Tilt of the ellipse around z axis"
msgstr "Inclinación de la elipse sobre el eje Z"
-#: clutter/clutter-behaviour-ellipse.c:475
+#: ../clutter/clutter-behaviour-ellipse.c:475
msgid "Width of the ellipse"
msgstr "Anchura de la elipse"
-#: clutter/clutter-behaviour-ellipse.c:491
+#: ../clutter/clutter-behaviour-ellipse.c:491
msgid "Height of ellipse"
msgstr "Altura de la elipse"
-#: clutter/clutter-behaviour-ellipse.c:506
+#: ../clutter/clutter-behaviour-ellipse.c:506
msgid "Center"
msgstr "Centro"
-#: clutter/clutter-behaviour-ellipse.c:507
+#: ../clutter/clutter-behaviour-ellipse.c:507
msgid "Center of ellipse"
msgstr "Centro de la elipse"
-#: clutter/clutter-behaviour-ellipse.c:521
-#: clutter/clutter-behaviour-rotate.c:329 clutter/clutter-timeline.c:310
+#: ../clutter/clutter-behaviour-ellipse.c:521
+#: ../clutter/clutter-behaviour-rotate.c:329 ../clutter/clutter-timeline.c:310
msgid "Direction"
msgstr "Dirección"
-#: clutter/clutter-behaviour-ellipse.c:522
-#: clutter/clutter-behaviour-rotate.c:330
+#: ../clutter/clutter-behaviour-ellipse.c:522
+#: ../clutter/clutter-behaviour-rotate.c:330
msgid "Direction of rotation"
msgstr "Dirección de la rotación"
-#: clutter/clutter-behaviour-opacity.c:177
+#: ../clutter/clutter-behaviour-opacity.c:177
msgid "Opacity Start"
msgstr "Opacidad inicial"
-#: clutter/clutter-behaviour-opacity.c:178
+#: ../clutter/clutter-behaviour-opacity.c:178
msgid "Initial opacity level"
msgstr "Nivel inicial de opacidad"
-#: clutter/clutter-behaviour-opacity.c:195
+#: ../clutter/clutter-behaviour-opacity.c:195
msgid "Opacity End"
msgstr "Opacidad final"
-#: clutter/clutter-behaviour-opacity.c:196
+#: ../clutter/clutter-behaviour-opacity.c:196
msgid "Final opacity level"
msgstr "Nivel final de opacidad"
-#: clutter/clutter-behaviour-path.c:219 clutter/clutter-path-constraint.c:212
+#: ../clutter/clutter-behaviour-path.c:219
+#: ../clutter/clutter-path-constraint.c:212
msgid "Path"
msgstr "Ruta"
-#: clutter/clutter-behaviour-path.c:220
+#: ../clutter/clutter-behaviour-path.c:220
msgid "The ClutterPath object representing the path to animate along"
msgstr "El objeto «ClutterPath» que representa la ruta sobre la que animar"
-#: clutter/clutter-behaviour-rotate.c:275
+#: ../clutter/clutter-behaviour-rotate.c:275
msgid "Angle Begin"
msgstr "Ángulo inicial"
-#: clutter/clutter-behaviour-rotate.c:293
+#: ../clutter/clutter-behaviour-rotate.c:293
msgid "Angle End"
msgstr "Ángulo final"
-#: clutter/clutter-behaviour-rotate.c:311
+#: ../clutter/clutter-behaviour-rotate.c:311
msgid "Axis"
msgstr "Eje"
-#: clutter/clutter-behaviour-rotate.c:312
+#: ../clutter/clutter-behaviour-rotate.c:312
msgid "Axis of rotation"
msgstr "Eje de rotación"
-#: clutter/clutter-behaviour-rotate.c:347
+#: ../clutter/clutter-behaviour-rotate.c:347
msgid "Center X"
msgstr "Centro X"
-#: clutter/clutter-behaviour-rotate.c:348
+#: ../clutter/clutter-behaviour-rotate.c:348
msgid "X coordinate of the center of rotation"
msgstr "Coordenada X del centro de rotación"
-#: clutter/clutter-behaviour-rotate.c:365
+#: ../clutter/clutter-behaviour-rotate.c:365
msgid "Center Y"
msgstr "Centro Y"
-#: clutter/clutter-behaviour-rotate.c:366
+#: ../clutter/clutter-behaviour-rotate.c:366
msgid "Y coordinate of the center of rotation"
msgstr "Coordenada Y del centro de rotación"
-#: clutter/clutter-behaviour-rotate.c:383
+#: ../clutter/clutter-behaviour-rotate.c:383
msgid "Center Z"
msgstr "Centro Z"
-#: clutter/clutter-behaviour-rotate.c:384
+#: ../clutter/clutter-behaviour-rotate.c:384
msgid "Z coordinate of the center of rotation"
msgstr "Coordenada Z del centro de rotación"
-#: clutter/clutter-behaviour-scale.c:218
+#: ../clutter/clutter-behaviour-scale.c:218
msgid "X Start Scale"
msgstr "Escala X inicial"
-#: clutter/clutter-behaviour-scale.c:219
+#: ../clutter/clutter-behaviour-scale.c:219
msgid "Initial scale on the X axis"
msgstr "Escala inicial en el eje X"
-#: clutter/clutter-behaviour-scale.c:237
+#: ../clutter/clutter-behaviour-scale.c:237
msgid "X End Scale"
msgstr "Escala X final"
-#: clutter/clutter-behaviour-scale.c:238
+#: ../clutter/clutter-behaviour-scale.c:238
msgid "Final scale on the X axis"
msgstr "Escala final en el eje X"
-#: clutter/clutter-behaviour-scale.c:256
+#: ../clutter/clutter-behaviour-scale.c:256
msgid "Y Start Scale"
msgstr "Escala Y inicial"
-#: clutter/clutter-behaviour-scale.c:257
+#: ../clutter/clutter-behaviour-scale.c:257
msgid "Initial scale on the Y axis"
msgstr "Escala inicial en el eje Y"
-#: clutter/clutter-behaviour-scale.c:275
+#: ../clutter/clutter-behaviour-scale.c:275
msgid "Y End Scale"
msgstr "Escala Y final"
-#: clutter/clutter-behaviour-scale.c:276
+#: ../clutter/clutter-behaviour-scale.c:276
msgid "Final scale on the Y axis"
msgstr "Escala final en el eje Y"
-#: clutter/clutter-bind-constraint.c:317
+#: ../clutter/clutter-bind-constraint.c:317
msgid "The source of the binding"
msgstr "El origen de la asociación"
-#: clutter/clutter-bind-constraint.c:330
+#: ../clutter/clutter-bind-constraint.c:330
msgid "Coordinate"
msgstr "Coordenada"
-#: clutter/clutter-bind-constraint.c:331
+#: ../clutter/clutter-bind-constraint.c:331
msgid "The coordinate to bind"
msgstr "La coordenada que asociar"
-#: clutter/clutter-bind-constraint.c:345 clutter/clutter-path-constraint.c:226
-#: clutter/clutter-snap-constraint.c:366
+#: ../clutter/clutter-bind-constraint.c:345
+#: ../clutter/clutter-path-constraint.c:226
+#: ../clutter/clutter-snap-constraint.c:366
msgid "Offset"
msgstr "Desplazamiento"
-#: clutter/clutter-bind-constraint.c:346
+#: ../clutter/clutter-bind-constraint.c:346
msgid "The offset in pixels to apply to the binding"
msgstr "El desplazamiento en píxeles que aplicar a la asociación"
-#: clutter/clutter-binding-pool.c:320
+#: ../clutter/clutter-binding-pool.c:320
msgid "The unique name of the binding pool"
msgstr "El nombre único de la asociación de la agrupación"
-#: clutter/clutter-bin-layout.c:261 clutter/clutter-bin-layout.c:580
-#: clutter/clutter-box-layout.c:395 clutter/clutter-table-layout.c:652
+#: ../clutter/clutter-bin-layout.c:261 ../clutter/clutter-bin-layout.c:580
+#: ../clutter/clutter-box-layout.c:395 ../clutter/clutter-table-layout.c:652
msgid "Horizontal Alignment"
msgstr "Alineación horizontal"
-#: clutter/clutter-bin-layout.c:262
+#: ../clutter/clutter-bin-layout.c:262
msgid "Horizontal alignment for the actor inside the layout manager"
msgstr "Alineación horizontal del actor dentro del gestor de distribución"
-#: clutter/clutter-bin-layout.c:270 clutter/clutter-bin-layout.c:597
-#: clutter/clutter-box-layout.c:404 clutter/clutter-table-layout.c:667
+#: ../clutter/clutter-bin-layout.c:270 ../clutter/clutter-bin-layout.c:597
+#: ../clutter/clutter-box-layout.c:404 ../clutter/clutter-table-layout.c:667
msgid "Vertical Alignment"
msgstr "Alineación vertical"
-#: clutter/clutter-bin-layout.c:271
+#: ../clutter/clutter-bin-layout.c:271
msgid "Vertical alignment for the actor inside the layout manager"
msgstr "Alineación vertical del actor dentro del gestor de distribución"
-#: clutter/clutter-bin-layout.c:581
+#: ../clutter/clutter-bin-layout.c:581
msgid "Default horizontal alignment for the actors inside the layout manager"
msgstr ""
"Alineación horizontal predeterminada de los actores dentro del gestor de "
"distribución"
-#: clutter/clutter-bin-layout.c:598
+#: ../clutter/clutter-bin-layout.c:598
msgid "Default vertical alignment for the actors inside the layout manager"
msgstr ""
"Alineación vertical predeterminada de los actores dentro del gestor de "
"distribución"
-#: clutter/clutter-box.c:537
+#: ../clutter/clutter-box.c:537
msgid "Layout Manager"
msgstr "Gestor de distribución"
-#: clutter/clutter-box.c:538
+#: ../clutter/clutter-box.c:538
msgid "The layout manager used by the box"
msgstr "El gestor de distribución usado por la caja"
-#: clutter/clutter-box.c:557 clutter/clutter-rectangle.c:267
-#: clutter/clutter-stage.c:1718
+#: ../clutter/clutter-box.c:557 ../clutter/clutter-rectangle.c:267
+#: ../clutter/clutter-stage.c:1718
msgid "Color"
msgstr "Color"
-#: clutter/clutter-box.c:558
+#: ../clutter/clutter-box.c:558
msgid "The background color of the box"
msgstr "El color de fondo de la caja"
-#: clutter/clutter-box.c:572
+#: ../clutter/clutter-box.c:572
msgid "Color Set"
msgstr "Conjunto de colores"
-#: clutter/clutter-box.c:573
+#: ../clutter/clutter-box.c:573
msgid "Whether the background color is set"
msgstr "Indica si el color de fondo está establecido"
-#: clutter/clutter-box-layout.c:370
+#: ../clutter/clutter-box-layout.c:370
msgid "Expand"
msgstr "Expandir"
-#: clutter/clutter-box-layout.c:371
+#: ../clutter/clutter-box-layout.c:371
msgid "Allocate extra space for the child"
msgstr "Asignar espacio adicional para el hijo"
-#: clutter/clutter-box-layout.c:377 clutter/clutter-table-layout.c:631
+#: ../clutter/clutter-box-layout.c:377 ../clutter/clutter-table-layout.c:631
msgid "Horizontal Fill"
msgstr "Relleno horizontal"
-#: clutter/clutter-box-layout.c:378 clutter/clutter-table-layout.c:632
+#: ../clutter/clutter-box-layout.c:378 ../clutter/clutter-table-layout.c:632
msgid ""
"Whether the child should receive priority when the container is allocating "
"spare space on the horizontal axis"
@@ -810,11 +812,11 @@ msgstr ""
"Indica si el hijo debe tener prioridad cuando el contenedor reserve espacio "
"libre en el eje horizontal"
-#: clutter/clutter-box-layout.c:386 clutter/clutter-table-layout.c:638
+#: ../clutter/clutter-box-layout.c:386 ../clutter/clutter-table-layout.c:638
msgid "Vertical Fill"
msgstr "Relleno vertical"
-#: clutter/clutter-box-layout.c:387 clutter/clutter-table-layout.c:639
+#: ../clutter/clutter-box-layout.c:387 ../clutter/clutter-table-layout.c:639
msgid ""
"Whether the child should receive priority when the container is allocating "
"spare space on the vertical axis"
@@ -822,571 +824,576 @@ msgstr ""
"Indica si el hijo debe tener prioridad cuando el contenedor reserve espacio "
"libre en el eje vertical"
-#: clutter/clutter-box-layout.c:396 clutter/clutter-table-layout.c:653
+#: ../clutter/clutter-box-layout.c:396 ../clutter/clutter-table-layout.c:653
msgid "Horizontal alignment of the actor within the cell"
msgstr "Alineación horizontal del actor en la celda"
-#: clutter/clutter-box-layout.c:405 clutter/clutter-table-layout.c:668
+#: ../clutter/clutter-box-layout.c:405 ../clutter/clutter-table-layout.c:668
msgid "Vertical alignment of the actor within the cell"
msgstr "Alineación vertical del actor en la celda"
-#: clutter/clutter-box-layout.c:1305
+#: ../clutter/clutter-box-layout.c:1305
msgid "Vertical"
msgstr "Vertical"
-#: clutter/clutter-box-layout.c:1306
+#: ../clutter/clutter-box-layout.c:1306
msgid "Whether the layout should be vertical, rather than horizontal"
msgstr "Indica si la distribución debe ser vertical, en lugar de horizontal"
-#: clutter/clutter-box-layout.c:1321 clutter/clutter-flow-layout.c:898
+#: ../clutter/clutter-box-layout.c:1321 ../clutter/clutter-flow-layout.c:898
msgid "Homogeneous"
msgstr "Homogénea"
-#: clutter/clutter-box-layout.c:1322
+#: ../clutter/clutter-box-layout.c:1322
msgid ""
"Whether the layout should be homogeneous, i.e. all childs get the same size"
msgstr ""
"Indica si la distribución debe ser homogénea, ej. todos los hijos tienen el "
"mismo tamaño"
-#: clutter/clutter-box-layout.c:1337
+#: ../clutter/clutter-box-layout.c:1337
msgid "Pack Start"
msgstr "Empaquetar al principio"
-#: clutter/clutter-box-layout.c:1338
+#: ../clutter/clutter-box-layout.c:1338
msgid "Whether to pack items at the start of the box"
msgstr "Indica si se empaquetan los elementos al principio de la caja"
-#: clutter/clutter-box-layout.c:1351
+#: ../clutter/clutter-box-layout.c:1351
msgid "Spacing"
msgstr "Espaciado"
-#: clutter/clutter-box-layout.c:1352
+#: ../clutter/clutter-box-layout.c:1352
msgid "Spacing between children"
msgstr "Espaciado entre hijos"
-#: clutter/clutter-box-layout.c:1366 clutter/clutter-table-layout.c:1740
+#: ../clutter/clutter-box-layout.c:1366 ../clutter/clutter-table-layout.c:1740
msgid "Use Animations"
msgstr "Usar animaciones"
-#: clutter/clutter-box-layout.c:1367 clutter/clutter-table-layout.c:1741
+#: ../clutter/clutter-box-layout.c:1367 ../clutter/clutter-table-layout.c:1741
msgid "Whether layout changes should be animated"
msgstr "Indica si se deben animar lo cambios en la distribución"
-#: clutter/clutter-box-layout.c:1388 clutter/clutter-table-layout.c:1762
+#: ../clutter/clutter-box-layout.c:1388 ../clutter/clutter-table-layout.c:1762
msgid "Easing Mode"
msgstr "Modo de desaceleración"
-#: clutter/clutter-box-layout.c:1389 clutter/clutter-table-layout.c:1763
+#: ../clutter/clutter-box-layout.c:1389 ../clutter/clutter-table-layout.c:1763
msgid "The easing mode of the animations"
msgstr "El modo de desaceleración de las animaciones"
-#: clutter/clutter-box-layout.c:1406 clutter/clutter-table-layout.c:1780
+#: ../clutter/clutter-box-layout.c:1406 ../clutter/clutter-table-layout.c:1780
msgid "Easing Duration"
msgstr "Duración de la desaceleración"
-#: clutter/clutter-box-layout.c:1407 clutter/clutter-table-layout.c:1781
+#: ../clutter/clutter-box-layout.c:1407 ../clutter/clutter-table-layout.c:1781
msgid "The duration of the animations"
msgstr "La duración de las animaciones"
-#: clutter/clutter-cairo-texture.c:404
+#: ../clutter/clutter-cairo-texture.c:404
msgid "Surface Width"
msgstr "Anchura de la superficie"
-#: clutter/clutter-cairo-texture.c:405
+#: ../clutter/clutter-cairo-texture.c:405
msgid "The width of the Cairo surface"
msgstr "La anchura de la superficie Cairo"
-#: clutter/clutter-cairo-texture.c:419
+#: ../clutter/clutter-cairo-texture.c:419
msgid "Surface Height"
msgstr "Altura de la superficie"
-#: clutter/clutter-cairo-texture.c:420
+#: ../clutter/clutter-cairo-texture.c:420
msgid "The height of the Cairo surface"
msgstr "La altura de la superficie Cairo"
-#: clutter/clutter-child-meta.c:127
+#: ../clutter/clutter-child-meta.c:127
msgid "Container"
msgstr "Contenedor"
-#: clutter/clutter-child-meta.c:128
+#: ../clutter/clutter-child-meta.c:128
msgid "The container that created this data"
msgstr "El contenedor que creó estos datos"
-#: clutter/clutter-child-meta.c:143
+#: ../clutter/clutter-child-meta.c:143
msgid "The actor wrapped by this data"
msgstr "El actor envuelto por estos datos"
-#: clutter/clutter-click-action.c:542
+#: ../clutter/clutter-click-action.c:542
msgid "Pressed"
msgstr "Pulsado"
-#: clutter/clutter-click-action.c:543
+#: ../clutter/clutter-click-action.c:543
msgid "Whether the clickable should be in pressed state"
msgstr "Indica si el pulsable debe estar en estado «pulsado»"
-#: clutter/clutter-click-action.c:556
+#: ../clutter/clutter-click-action.c:556
msgid "Held"
msgstr "Retenido"
-#: clutter/clutter-click-action.c:557
+#: ../clutter/clutter-click-action.c:557
msgid "Whether the clickable has a grab"
msgstr "Indica si el dispositivo tiene un tirador"
-#: clutter/clutter-click-action.c:574 clutter/clutter-settings.c:521
-#, fuzzy
+#: ../clutter/clutter-click-action.c:574 ../clutter/clutter-settings.c:521
msgid "Long Press Duration"
-msgstr "Duración de la desaceleración"
+msgstr "Duración de la pulsación larga"
-#: clutter/clutter-click-action.c:575
+#: ../clutter/clutter-click-action.c:575
msgid "The minimum duration of a long press to recognize the gesture"
-msgstr ""
+msgstr "La duración mínima de una pulsación larga para reconocer el gesto"
-#: clutter/clutter-click-action.c:593
-#, fuzzy
+#: ../clutter/clutter-click-action.c:593
msgid "Long Press Threshold"
-msgstr "Umbral de arrastre"
+msgstr "Umbral de la pulsación larga"
-#: clutter/clutter-click-action.c:594
+#: ../clutter/clutter-click-action.c:594
msgid "The maximum threshold before a long press is cancelled"
-msgstr ""
+msgstr "El umbral máximo antes de cancelar una pulsación larga"
-#: clutter/clutter-clone.c:341
+#: ../clutter/clutter-clone.c:341
msgid "Specifies the actor to be cloned"
msgstr "Especifica qué actor clonar"
-#: clutter/clutter-colorize-effect.c:307
+#: ../clutter/clutter-colorize-effect.c:307
msgid "Tint"
msgstr "Matiz"
-#: clutter/clutter-colorize-effect.c:308
+#: ../clutter/clutter-colorize-effect.c:308
msgid "The tint to apply"
msgstr "El matiz que aplicar"
-#: clutter/clutter-deform-effect.c:527
+#: ../clutter/clutter-deform-effect.c:527
msgid "Horizontal Tiles"
msgstr "Cuadros horizontales"
-#: clutter/clutter-deform-effect.c:528
+#: ../clutter/clutter-deform-effect.c:528
msgid "The number of horizontal tiles"
msgstr "El número de cuadros horizontales"
-#: clutter/clutter-deform-effect.c:543
+#: ../clutter/clutter-deform-effect.c:543
msgid "Vertical Tiles"
msgstr "Cuadros verticales"
-#: clutter/clutter-deform-effect.c:544
+#: ../clutter/clutter-deform-effect.c:544
msgid "The number of vertical tiles"
msgstr "El número de cuadros verticales"
-#: clutter/clutter-deform-effect.c:561
+#: ../clutter/clutter-deform-effect.c:561
msgid "Back Material"
msgstr "Material trasero"
-#: clutter/clutter-deform-effect.c:562
+#: ../clutter/clutter-deform-effect.c:562
msgid "The material to be used when painting the back of the actor"
msgstr "El material que usar para pintar la parte trasera del actor"
-#: clutter/clutter-desaturate-effect.c:305
+#: ../clutter/clutter-desaturate-effect.c:305
msgid "The desaturation factor"
msgstr "El factor de desaturación"
-#: clutter/clutter-device-manager.c:131 clutter/clutter-input-device.c:344
-#: clutter/x11/clutter-keymap-x11.c:316
+#: ../clutter/clutter-device-manager.c:131
+#: ../clutter/clutter-input-device.c:344
+#: ../clutter/x11/clutter-keymap-x11.c:316
msgid "Backend"
msgstr "Backend"
-#: clutter/clutter-device-manager.c:132
+#: ../clutter/clutter-device-manager.c:132
msgid "The ClutterBackend of the device manager"
msgstr "El «ClutterBackend» del gestor de dispositivos"
-#: clutter/clutter-drag-action.c:547
+#: ../clutter/clutter-drag-action.c:547
msgid "Horizontal Drag Threshold"
msgstr "Umbral de arrastre horizontal"
-#: clutter/clutter-drag-action.c:548
+#: ../clutter/clutter-drag-action.c:548
msgid "The horizontal amount of pixels required to start dragging"
msgstr ""
"La cantidad de píxeles horizontales requeridos para empezar a arrastrar"
-#: clutter/clutter-drag-action.c:575
+#: ../clutter/clutter-drag-action.c:575
msgid "Vertical Drag Threshold"
msgstr "Umbral de arrastre vertical"
-#: clutter/clutter-drag-action.c:576
+#: ../clutter/clutter-drag-action.c:576
msgid "The vertical amount of pixels required to start dragging"
msgstr "La cantidad de píxeles verticales requeridos para empezar a arrastrar"
-#: clutter/clutter-drag-action.c:597
+#: ../clutter/clutter-drag-action.c:597
msgid "Drag Handle"
msgstr "Arrastrar el tirador"
-#: clutter/clutter-drag-action.c:598
+#: ../clutter/clutter-drag-action.c:598
msgid "The actor that is being dragged"
msgstr "El actor que se está arrastrando"
-#: clutter/clutter-drag-action.c:611
+#: ../clutter/clutter-drag-action.c:611
msgid "Drag Axis"
msgstr "Arrastrar ejes"
-#: clutter/clutter-drag-action.c:612
+#: ../clutter/clutter-drag-action.c:612
msgid "Constraints the dragging to an axis"
msgstr "Restringe el arrastrado a un eje"
-#: clutter/clutter-flow-layout.c:882
+#: ../clutter/clutter-flow-layout.c:882
msgid "Orientation"
msgstr "Orientación"
-#: clutter/clutter-flow-layout.c:883
+#: ../clutter/clutter-flow-layout.c:883
msgid "The orientation of the layout"
msgstr "La orientación de la disposición"
-#: clutter/clutter-flow-layout.c:899
+#: ../clutter/clutter-flow-layout.c:899
msgid "Whether each item should receive the same allocation"
msgstr "Indica si cada elemento debe recibir la misma asignación"
-#: clutter/clutter-flow-layout.c:914 clutter/clutter-table-layout.c:1711
+#: ../clutter/clutter-flow-layout.c:914 ../clutter/clutter-table-layout.c:1711
msgid "Column Spacing"
msgstr "Espaciado entre columnas"
-#: clutter/clutter-flow-layout.c:915
+#: ../clutter/clutter-flow-layout.c:915
msgid "The spacing between columns"
msgstr "El espaciado entre columnas"
-#: clutter/clutter-flow-layout.c:931 clutter/clutter-table-layout.c:1725
+#: ../clutter/clutter-flow-layout.c:931 ../clutter/clutter-table-layout.c:1725
msgid "Row Spacing"
msgstr "Espaciado entre filas"
-#: clutter/clutter-flow-layout.c:932
+#: ../clutter/clutter-flow-layout.c:932
msgid "The spacing between rows"
msgstr "El espaciado entre filas"
-#: clutter/clutter-flow-layout.c:946
+#: ../clutter/clutter-flow-layout.c:946
msgid "Minimum Column Width"
msgstr "Anchura mínima de la columna"
-#: clutter/clutter-flow-layout.c:947
+#: ../clutter/clutter-flow-layout.c:947
msgid "Minimum width for each column"
msgstr "Anchura mínima de cada columna"
-#: clutter/clutter-flow-layout.c:962
+#: ../clutter/clutter-flow-layout.c:962
msgid "Maximum Column Width"
msgstr "Anchura máxima de la columna"
-#: clutter/clutter-flow-layout.c:963
+#: ../clutter/clutter-flow-layout.c:963
msgid "Maximum width for each column"
msgstr "Anchura máxima de cada columna"
-#: clutter/clutter-flow-layout.c:977
+#: ../clutter/clutter-flow-layout.c:977
msgid "Minimum Row Height"
msgstr "Altura mínima de la fila"
-#: clutter/clutter-flow-layout.c:978
+#: ../clutter/clutter-flow-layout.c:978
msgid "Minimum height for each row"
msgstr "Altura mínima de cada fila"
-#: clutter/clutter-flow-layout.c:993
+#: ../clutter/clutter-flow-layout.c:993
msgid "Maximum Row Height"
msgstr "Altura máxima de la fila"
-#: clutter/clutter-flow-layout.c:994
+#: ../clutter/clutter-flow-layout.c:994
msgid "Maximum height for each row"
msgstr "Altura máxima de cada fila"
-#: clutter/clutter-input-device.c:220
+#: ../clutter/clutter-input-device.c:220
msgid "Id"
msgstr "ID"
-#: clutter/clutter-input-device.c:221
+#: ../clutter/clutter-input-device.c:221
msgid "Unique identifier of the device"
msgstr "Identificador único del dispositivo"
-#: clutter/clutter-input-device.c:237
+#: ../clutter/clutter-input-device.c:237
msgid "The name of the device"
msgstr "El nombre del dispositivo"
-#: clutter/clutter-input-device.c:251
+#: ../clutter/clutter-input-device.c:251
msgid "Device Type"
msgstr "Tipo de dispositivo"
-#: clutter/clutter-input-device.c:252
+#: ../clutter/clutter-input-device.c:252
msgid "The type of the device"
msgstr "El tipo del dispositivo"
-#: clutter/clutter-input-device.c:267
+#: ../clutter/clutter-input-device.c:267
msgid "Device Manager"
msgstr "Administrador de dispositivos"
-#: clutter/clutter-input-device.c:268
+#: ../clutter/clutter-input-device.c:268
msgid "The device manager instance"
msgstr "La instancia del gestor de dispositivos"
-#: clutter/clutter-input-device.c:281
+#: ../clutter/clutter-input-device.c:281
msgid "Device Mode"
msgstr "Modo del dispositivo"
-#: clutter/clutter-input-device.c:282
+#: ../clutter/clutter-input-device.c:282
msgid "The mode of the device"
msgstr "El modo del dispositivo"
-#: clutter/clutter-input-device.c:296
+#: ../clutter/clutter-input-device.c:296
msgid "Has Cursor"
msgstr "Tiene cursor"
-#: clutter/clutter-input-device.c:297
+#: ../clutter/clutter-input-device.c:297
msgid "Whether the device has a cursor"
msgstr "Indica si el dispositivo tiene un cursor"
-#: clutter/clutter-input-device.c:316
+#: ../clutter/clutter-input-device.c:316
msgid "Whether the device is enabled"
msgstr "indica si el dispositivo está activado"
-#: clutter/clutter-input-device.c:329
+#: ../clutter/clutter-input-device.c:329
msgid "Number of Axes"
msgstr "Número de ejes"
-#: clutter/clutter-input-device.c:330
+#: ../clutter/clutter-input-device.c:330
msgid "The number of axes on the device"
msgstr "El número de ejes en el dispositivo"
-#: clutter/clutter-input-device.c:345
+#: ../clutter/clutter-input-device.c:345
msgid "The backend instance"
msgstr "La instancia del backend"
-#: clutter/clutter-interval.c:397
+#: ../clutter/clutter-interval.c:397
msgid "Value Type"
msgstr "Tipo de valor"
-#: clutter/clutter-interval.c:398
+#: ../clutter/clutter-interval.c:398
msgid "The type of the values in the interval"
msgstr "El tipo de valores en el intervalo"
-#: clutter/clutter-layout-meta.c:117
+#: ../clutter/clutter-layout-meta.c:117
msgid "Manager"
msgstr "Gestor"
-#: clutter/clutter-layout-meta.c:118
+#: ../clutter/clutter-layout-meta.c:118
msgid "The manager that created this data"
msgstr "El gestor que ha creado este dato"
-#: clutter/clutter-main.c:486
+#. Translate to default:RTL if you want your widgets
+#. * to be RTL, otherwise translate to default:LTR.
+#. *
+#. * Do *not* translate it to "predefinito:LTR": if it
+#. * it isn't default:LTR or default:RTL it will not work
+#.
+#: ../clutter/clutter-main.c:486
msgid "default:LTR"
msgstr "default:LTR"
-#: clutter/clutter-main.c:1282
+#: ../clutter/clutter-main.c:1282
msgid "Show frames per second"
msgstr "Mostrar fotogramas por segundo"
-#: clutter/clutter-main.c:1284
+#: ../clutter/clutter-main.c:1284
msgid "Default frame rate"
msgstr "Velocidad de fotogramas predeterminada"
-#: clutter/clutter-main.c:1286
+#: ../clutter/clutter-main.c:1286
msgid "Make all warnings fatal"
msgstr "Hacer que todos los avisos actúen como errores"
-#: clutter/clutter-main.c:1289
+#: ../clutter/clutter-main.c:1289
msgid "Direction for the text"
msgstr "Dirección del texto"
-#: clutter/clutter-main.c:1292
+#: ../clutter/clutter-main.c:1292
msgid "Disable mipmapping on text"
msgstr "Desactivar «mipmapping» en el texto"
-#: clutter/clutter-main.c:1295
+#: ../clutter/clutter-main.c:1295
msgid "Use 'fuzzy' picking"
msgstr "Usar selección «difusa»"
-#: clutter/clutter-main.c:1298
+#: ../clutter/clutter-main.c:1298
msgid "Clutter debugging flags to set"
msgstr "Opciones de depuración de Clutter que establecer"
-#: clutter/clutter-main.c:1300
+#: ../clutter/clutter-main.c:1300
msgid "Clutter debugging flags to unset"
msgstr "Opciones de depuración de Clutter que no establecer"
-#: clutter/clutter-main.c:1304
+#: ../clutter/clutter-main.c:1304
msgid "Clutter profiling flags to set"
msgstr "Opciones de perfil de Clutter que establecer"
-#: clutter/clutter-main.c:1306
+#: ../clutter/clutter-main.c:1306
msgid "Clutter profiling flags to unset"
msgstr "Opciones de perfil de Clutter que no establecer"
-#: clutter/clutter-main.c:1309
+#: ../clutter/clutter-main.c:1309
msgid "Enable accessibility"
msgstr "Activar accesibilidad"
-#: clutter/clutter-main.c:1491
+#: ../clutter/clutter-main.c:1491
msgid "Clutter Options"
msgstr "Opciones de Clutter"
-#: clutter/clutter-main.c:1492
+#: ../clutter/clutter-main.c:1492
msgid "Show Clutter Options"
msgstr "Mostrar las opciones de Clutter"
-#: clutter/clutter-media.c:77
+#: ../clutter/clutter-media.c:77
msgid "URI"
msgstr "URI"
-#: clutter/clutter-media.c:78
+#: ../clutter/clutter-media.c:78
msgid "URI of a media file"
msgstr "URI de un archivo multimedia"
-#: clutter/clutter-media.c:91
+#: ../clutter/clutter-media.c:91
msgid "Playing"
msgstr "Reproduciendo"
-#: clutter/clutter-media.c:92
+#: ../clutter/clutter-media.c:92
msgid "Whether the actor is playing"
msgstr "Indica si el actor se está reproduciendo"
-#: clutter/clutter-media.c:106
+#: ../clutter/clutter-media.c:106
msgid "Progress"
msgstr "Progreso"
-#: clutter/clutter-media.c:107
+#: ../clutter/clutter-media.c:107
msgid "Current progress of the playback"
msgstr "Progreso actual de la reproducción"
-#: clutter/clutter-media.c:120
+#: ../clutter/clutter-media.c:120
msgid "Subtitle URI"
msgstr "URI del subtítulo"
-#: clutter/clutter-media.c:121
+#: ../clutter/clutter-media.c:121
msgid "URI of a subtitle file"
msgstr "URI de un archivo de subtítulos"
-#: clutter/clutter-media.c:136
+#: ../clutter/clutter-media.c:136
msgid "Subtitle Font Name"
msgstr "Nombre de la tipografía de los subtítulos"
-#: clutter/clutter-media.c:137
+#: ../clutter/clutter-media.c:137
msgid "The font used to display subtitles"
msgstr "La tipografía usada para mostrar subtítulos"
-#: clutter/clutter-media.c:151
+#: ../clutter/clutter-media.c:151
msgid "Audio Volume"
msgstr "Volumen del sonido"
-#: clutter/clutter-media.c:152
+#: ../clutter/clutter-media.c:152
msgid "The volume of the audio"
msgstr "El volumen del sonido"
-#: clutter/clutter-media.c:165
+#: ../clutter/clutter-media.c:165
msgid "Can Seek"
msgstr "Puede buscar"
-#: clutter/clutter-media.c:166
+#: ../clutter/clutter-media.c:166
msgid "Whether the current stream is seekable"
msgstr "Indica si flujo actual se puede buscar"
-#: clutter/clutter-media.c:180
+#: ../clutter/clutter-media.c:180
msgid "Buffer Fill"
msgstr "Llenado del búfer"
-#: clutter/clutter-media.c:181
+#: ../clutter/clutter-media.c:181
msgid "The fill level of the buffer"
msgstr "El nivel de llenado del búfer"
-#: clutter/clutter-media.c:195
+#: ../clutter/clutter-media.c:195
msgid "The duration of the stream, in seconds"
msgstr "La duración del flujo, en segundos"
-#: clutter/clutter-path-constraint.c:213
+#: ../clutter/clutter-path-constraint.c:213
msgid "The path used to constrain an actor"
msgstr "La ruta usada para restringir a un actor"
-#: clutter/clutter-path-constraint.c:227
+#: ../clutter/clutter-path-constraint.c:227
msgid "The offset along the path, between -1.0 and 2.0"
msgstr "El desplazamiento sobre la ruta, entre -1.0 y 2.0"
-#: clutter/clutter-rectangle.c:268
+#: ../clutter/clutter-rectangle.c:268
msgid "The color of the rectangle"
msgstr "El color del rectángulo"
-#: clutter/clutter-rectangle.c:281
+#: ../clutter/clutter-rectangle.c:281
msgid "Border Color"
msgstr "Color del borde"
-#: clutter/clutter-rectangle.c:282
+#: ../clutter/clutter-rectangle.c:282
msgid "The color of the border of the rectangle"
msgstr "El color del borde del rectángulo"
-#: clutter/clutter-rectangle.c:297
+#: ../clutter/clutter-rectangle.c:297
msgid "Border Width"
msgstr "Anchura del borde"
-#: clutter/clutter-rectangle.c:298
+#: ../clutter/clutter-rectangle.c:298
msgid "The width of the border of the rectangle"
msgstr "La anchura del borde del rectángulo"
-#: clutter/clutter-rectangle.c:312
+#: ../clutter/clutter-rectangle.c:312
msgid "Has Border"
msgstr "Tiene borde"
-#: clutter/clutter-rectangle.c:313
+#: ../clutter/clutter-rectangle.c:313
msgid "Whether the rectangle should have a border"
msgstr "Indica si el rectángulo debe tener borde"
-#: clutter/clutter-script.c:434
+#: ../clutter/clutter-script.c:434
msgid "Filename Set"
msgstr "Conjunto de nombres de archivo"
-#: clutter/clutter-script.c:435
+#: ../clutter/clutter-script.c:435
msgid "Whether the :filename property is set"
msgstr "Indica si la propiedad «:filename» está establecida"
-#: clutter/clutter-script.c:449 clutter/clutter-texture.c:1089
+#: ../clutter/clutter-script.c:449 ../clutter/clutter-texture.c:1089
msgid "Filename"
msgstr "Nombre de archivo"
-#: clutter/clutter-script.c:450
+#: ../clutter/clutter-script.c:450
msgid "The path of the currently parsed file"
msgstr "La ruta del archivo analizado actualmente"
-#: clutter/clutter-settings.c:362
+#: ../clutter/clutter-settings.c:362
msgid "Double Click Time"
msgstr "Tiempo de la doble pulsación"
-#: clutter/clutter-settings.c:363
+#: ../clutter/clutter-settings.c:363
msgid "The time between clicks necessary to detect a multiple click"
msgstr ""
"El tiempo necesario entre pulsaciones para detectar una pulsación múltiple"
-#: clutter/clutter-settings.c:378
+#: ../clutter/clutter-settings.c:378
msgid "Double Click Distance"
msgstr "Distancia de la doble pulsación"
-#: clutter/clutter-settings.c:379
+#: ../clutter/clutter-settings.c:379
msgid "The distance between clicks necessary to detect a multiple click"
msgstr ""
"La distancia necesaria entre pulsaciones para detectar una pulsación múltiple"
-#: clutter/clutter-settings.c:394
+#: ../clutter/clutter-settings.c:394
msgid "Drag Threshold"
msgstr "Umbral de arrastre"
-#: clutter/clutter-settings.c:395
+#: ../clutter/clutter-settings.c:395
msgid "The distance the cursor should travel before starting to drag"
msgstr "La distancia que el cursor debe recorrer antes de empezar a arrastrar"
-#: clutter/clutter-settings.c:410 clutter/clutter-text.c:2799
+#: ../clutter/clutter-settings.c:410 ../clutter/clutter-text.c:2799
msgid "Font Name"
msgstr "Nombre de la tipografía"
-#: clutter/clutter-settings.c:411
+#: ../clutter/clutter-settings.c:411
msgid ""
"The description of the default font, as one that could be parsed by Pango"
msgstr ""
"La descripción de la tipografía predeterminada, como una que Pango pueda "
"analizar"
-#: clutter/clutter-settings.c:426
+#: ../clutter/clutter-settings.c:426
msgid "Font Antialias"
msgstr "Alisado de la tipografía"
-#: clutter/clutter-settings.c:427
+#: ../clutter/clutter-settings.c:427
msgid ""
"Whether to use antialiasing (1 to enable, 0 to disable, and -1 to use the "
"default)"
@@ -1394,509 +1401,509 @@ msgstr ""
"Indica si se debe usar alisado (1 para activar, 0 para desactivar y -1 para "
"usar la opción predeterminada)"
-#: clutter/clutter-settings.c:443
+#: ../clutter/clutter-settings.c:443
msgid "Font DPI"
msgstr "PPP de la tipografía"
-#: clutter/clutter-settings.c:444
+#: ../clutter/clutter-settings.c:444
msgid ""
"The resolution of the font, in 1024 * dots/inch, or -1 to use the default"
msgstr ""
"La resolución de la tipografía, en 1024 * puntos/pulgada, o -1 para usar la "
"predeterminada"
-#: clutter/clutter-settings.c:460
+#: ../clutter/clutter-settings.c:460
msgid "Font Hinting"
msgstr "Contorno de la tipografía"
-#: clutter/clutter-settings.c:461
+#: ../clutter/clutter-settings.c:461
msgid ""
"Whether to use hinting (1 to enable, 0 to disable and -1 to use the default)"
msgstr ""
"Indica si se debe usar contorno (1 para activar, 0 para desactivar y -1 para "
"usar la opción predeterminada)"
-#: clutter/clutter-settings.c:482
+#: ../clutter/clutter-settings.c:482
msgid "Font Hint Style"
msgstr "Estilo de contorno de la tipografía"
-#: clutter/clutter-settings.c:483
+#: ../clutter/clutter-settings.c:483
msgid "The style of hinting (hintnone, hintslight, hintmedium, hintfull)"
msgstr ""
"El estilo del contorno («hintnone», «hintslight», «hintmedium», «hintfull»)"
-#: clutter/clutter-settings.c:504
+#: ../clutter/clutter-settings.c:504
msgid "Font Subpixel Order"
msgstr "Orden de tipografías del subpíxel"
-#: clutter/clutter-settings.c:505
+#: ../clutter/clutter-settings.c:505
msgid "The type of subpixel antialiasing (none, rgb, bgr, vrgb, vbgr)"
msgstr ""
"El tipo de suavizado del subpíxel («none», «rgb», «bgr», «vrgb», «vbgr»)"
-#: clutter/clutter-settings.c:522
+#: ../clutter/clutter-settings.c:522
msgid "The minimum duration for a long press gesture to be recognized"
-msgstr ""
+msgstr "La duración mínima de una pulsación larga para reconocer el gesto"
-#: clutter/clutter-shader.c:255
+#: ../clutter/clutter-shader.c:255
msgid "Vertex Source"
msgstr "Origen del vértice"
-#: clutter/clutter-shader.c:256
+#: ../clutter/clutter-shader.c:256
msgid "Source of vertex shader"
msgstr "Origen del sombreado del vértice"
-#: clutter/clutter-shader.c:272
+#: ../clutter/clutter-shader.c:272
msgid "Fragment Source"
msgstr "Origen del fragmento"
-#: clutter/clutter-shader.c:273
+#: ../clutter/clutter-shader.c:273
msgid "Source of fragment shader"
msgstr "Origen del sombreado del fragmento"
-#: clutter/clutter-shader.c:290
+#: ../clutter/clutter-shader.c:290
msgid "Compiled"
msgstr "Compilado"
-#: clutter/clutter-shader.c:291
+#: ../clutter/clutter-shader.c:291
msgid "Whether the shader is compiled and linked"
msgstr "Indica si el sombreado está compilado y enlazado"
-#: clutter/clutter-shader.c:308
+#: ../clutter/clutter-shader.c:308
msgid "Whether the shader is enabled"
msgstr "Indica si el sombreado está activado"
-#: clutter/clutter-shader.c:519
+#: ../clutter/clutter-shader.c:519
#, c-format
msgid "%s compilation failed: %s"
msgstr "falló la compilación de %s: %s"
-#: clutter/clutter-shader.c:520
+#: ../clutter/clutter-shader.c:520
msgid "Vertex shader"
msgstr "Sombreado del vértice"
-#: clutter/clutter-shader.c:521
+#: ../clutter/clutter-shader.c:521
msgid "Fragment shader"
msgstr "Sombreado del fragmento"
-#: clutter/clutter-shader-effect.c:415
+#: ../clutter/clutter-shader-effect.c:415
msgid "Shader Type"
msgstr "Tipo de sombreado"
-#: clutter/clutter-shader-effect.c:416
+#: ../clutter/clutter-shader-effect.c:416
msgid "The type of shader used"
msgstr "El tipo de sombreado usado"
-#: clutter/clutter-snap-constraint.c:322
+#: ../clutter/clutter-snap-constraint.c:322
msgid "The source of the constraint"
msgstr "La fuente de la restricción"
-#: clutter/clutter-snap-constraint.c:335
+#: ../clutter/clutter-snap-constraint.c:335
msgid "From Edge"
msgstr "Desde el borde"
-#: clutter/clutter-snap-constraint.c:336
+#: ../clutter/clutter-snap-constraint.c:336
msgid "The edge of the actor that should be snapped"
msgstr "El borde del actor que debería romperse"
-#: clutter/clutter-snap-constraint.c:350
+#: ../clutter/clutter-snap-constraint.c:350
msgid "To Edge"
msgstr "Al borde"
-#: clutter/clutter-snap-constraint.c:351
+#: ../clutter/clutter-snap-constraint.c:351
msgid "The edge of the source that should be snapped"
msgstr "El borde de la fuente que se debe romper"
-#: clutter/clutter-snap-constraint.c:367
+#: ../clutter/clutter-snap-constraint.c:367
msgid "The offset in pixels to apply to the constraint"
msgstr "El desplazamiento en píxeles que aplicar a la restricción"
-#: clutter/clutter-stage.c:1660
+#: ../clutter/clutter-stage.c:1660
msgid "Fullscreen Set"
msgstr "Conjunto a pantalla completa"
-#: clutter/clutter-stage.c:1661
+#: ../clutter/clutter-stage.c:1661
msgid "Whether the main stage is fullscreen"
msgstr "Indica si el escenario principal está a pantalla completa"
-#: clutter/clutter-stage.c:1677
+#: ../clutter/clutter-stage.c:1677
msgid "Offscreen"
msgstr "Fuera de la pantalla"
-#: clutter/clutter-stage.c:1678
+#: ../clutter/clutter-stage.c:1678
msgid "Whether the main stage should be rendered offscreen"
msgstr ""
"Indica si el escenario principal se debe renderizar fuera de la pantalla"
-#: clutter/clutter-stage.c:1690 clutter/clutter-text.c:2912
+#: ../clutter/clutter-stage.c:1690 ../clutter/clutter-text.c:2912
msgid "Cursor Visible"
msgstr "Cursor visible"
-#: clutter/clutter-stage.c:1691
+#: ../clutter/clutter-stage.c:1691
msgid "Whether the mouse pointer is visible on the main stage"
msgstr "Indica si el puntero del ratón es visible en el escenario principal"
-#: clutter/clutter-stage.c:1705
+#: ../clutter/clutter-stage.c:1705
msgid "User Resizable"
msgstr "Redimensionable por el usuario"
-#: clutter/clutter-stage.c:1706
+#: ../clutter/clutter-stage.c:1706
msgid "Whether the stage is able to be resized via user interaction"
msgstr ""
"Indica si el escenario se puede redimensionar mediante interacción del "
"usuario"
-#: clutter/clutter-stage.c:1719
+#: ../clutter/clutter-stage.c:1719
msgid "The color of the stage"
msgstr "El color del escenario"
-#: clutter/clutter-stage.c:1733
+#: ../clutter/clutter-stage.c:1733
msgid "Perspective"
msgstr "Perspectiva"
-#: clutter/clutter-stage.c:1734
+#: ../clutter/clutter-stage.c:1734
msgid "Perspective projection parameters"
msgstr "Parámetros de proyección de perspectiva"
-#: clutter/clutter-stage.c:1749
+#: ../clutter/clutter-stage.c:1749
msgid "Title"
msgstr "Título"
-#: clutter/clutter-stage.c:1750
+#: ../clutter/clutter-stage.c:1750
msgid "Stage Title"
msgstr "Título del escenario"
-#: clutter/clutter-stage.c:1765
+#: ../clutter/clutter-stage.c:1765
msgid "Use Fog"
msgstr "Usar niebla"
-#: clutter/clutter-stage.c:1766
+#: ../clutter/clutter-stage.c:1766
msgid "Whether to enable depth cueing"
msgstr "Indica si activar el indicador de profundidad"
-#: clutter/clutter-stage.c:1780
+#: ../clutter/clutter-stage.c:1780
msgid "Fog"
msgstr "Niebla"
-#: clutter/clutter-stage.c:1781
+#: ../clutter/clutter-stage.c:1781
msgid "Settings for the depth cueing"
msgstr "Configuración para el indicador de profundidad"
-#: clutter/clutter-stage.c:1797
+#: ../clutter/clutter-stage.c:1797
msgid "Use Alpha"
msgstr "Usar alfa"
-#: clutter/clutter-stage.c:1798
+#: ../clutter/clutter-stage.c:1798
msgid "Whether to honour the alpha component of the stage color"
msgstr "Indica si se usa la componente alfa del color del escenario"
-#: clutter/clutter-stage.c:1814
+#: ../clutter/clutter-stage.c:1814
msgid "Key Focus"
msgstr "Foco de la tecla"
-#: clutter/clutter-stage.c:1815
+#: ../clutter/clutter-stage.c:1815
msgid "The currently key focused actor"
msgstr "El actor que actualmente tiene el foco"
-#: clutter/clutter-stage.c:1831
+#: ../clutter/clutter-stage.c:1831
msgid "No Clear Hint"
msgstr "No limpiar el contorno"
-#: clutter/clutter-stage.c:1832
+#: ../clutter/clutter-stage.c:1832
msgid "Whether the stage should clear its contents"
msgstr "Indica si el escenario debe limpiar su contenido"
-#: clutter/clutter-stage.c:1845
+#: ../clutter/clutter-stage.c:1845
msgid "Accept Focus"
msgstr "Aceptar foco"
-#: clutter/clutter-stage.c:1846
+#: ../clutter/clutter-stage.c:1846
msgid "Whether the stage should accept focus on show"
msgstr "Indica si el escenario debe aceptar el foco al mostrarse"
-#: clutter/clutter-state.c:1408
+#: ../clutter/clutter-state.c:1408
msgid "State"
msgstr "Estado"
-#: clutter/clutter-state.c:1409
+#: ../clutter/clutter-state.c:1409
msgid "Currently set state, (transition to this state might not be complete)"
msgstr ""
"Estado establecido actualmente, (la transición a este estado puede no estar "
"completa)"
-#: clutter/clutter-state.c:1423
+#: ../clutter/clutter-state.c:1423
msgid "Default transition duration"
msgstr "Duración de la transición predeterminada"
-#: clutter/clutter-table-layout.c:585
+#: ../clutter/clutter-table-layout.c:585
msgid "Column Number"
msgstr "Número de columna"
-#: clutter/clutter-table-layout.c:586
+#: ../clutter/clutter-table-layout.c:586
msgid "The column the widget resides in"
msgstr "La columna en la que está en widget"
-#: clutter/clutter-table-layout.c:593
+#: ../clutter/clutter-table-layout.c:593
msgid "Row Number"
msgstr "Número de fila"
-#: clutter/clutter-table-layout.c:594
+#: ../clutter/clutter-table-layout.c:594
msgid "The row the widget resides in"
msgstr "La fila en la que está en widget"
-#: clutter/clutter-table-layout.c:601
+#: ../clutter/clutter-table-layout.c:601
msgid "Column Span"
msgstr "Espaciado entre columnas"
-#: clutter/clutter-table-layout.c:602
+#: ../clutter/clutter-table-layout.c:602
msgid "The number of columns the widget should span"
msgstr "El número de columnas que el widget debe expandirse"
-#: clutter/clutter-table-layout.c:609
+#: ../clutter/clutter-table-layout.c:609
msgid "Row Span"
msgstr "Espaciado entre filas"
-#: clutter/clutter-table-layout.c:610
+#: ../clutter/clutter-table-layout.c:610
msgid "The number of rows the widget should span"
msgstr "El número de filas que el widget debe expandirse"
-#: clutter/clutter-table-layout.c:617
+#: ../clutter/clutter-table-layout.c:617
msgid "Horizontal Expand"
msgstr "Expansión horizontal"
-#: clutter/clutter-table-layout.c:618
+#: ../clutter/clutter-table-layout.c:618
msgid "Allocate extra space for the child in horizontal axis"
msgstr "Asignar espacio adicional para el hijo en el eje horizontal"
-#: clutter/clutter-table-layout.c:624
+#: ../clutter/clutter-table-layout.c:624
msgid "Vertical Expand"
msgstr "Expansión vertical"
-#: clutter/clutter-table-layout.c:625
+#: ../clutter/clutter-table-layout.c:625
msgid "Allocate extra space for the child in vertical axis"
msgstr "Asignar espacio adicional para el hijo en el eje vertical"
-#: clutter/clutter-table-layout.c:1712
+#: ../clutter/clutter-table-layout.c:1712
msgid "Spacing between columns"
msgstr "Espaciado entre columnas"
-#: clutter/clutter-table-layout.c:1726
+#: ../clutter/clutter-table-layout.c:1726
msgid "Spacing between rows"
msgstr "Espaciado entre filas"
-#: clutter/clutter-text.c:2800
+#: ../clutter/clutter-text.c:2800
msgid "The font to be used by the text"
msgstr "La tipografía usada para el texto"
-#: clutter/clutter-text.c:2817
+#: ../clutter/clutter-text.c:2817
msgid "Font Description"
msgstr "Descripción de la tipografía"
-#: clutter/clutter-text.c:2818
+#: ../clutter/clutter-text.c:2818
msgid "The font description to be used"
msgstr "La descripción de la tipografía que usar"
-#: clutter/clutter-text.c:2834
+#: ../clutter/clutter-text.c:2834
msgid "Text"
msgstr "Texto"
-#: clutter/clutter-text.c:2835
+#: ../clutter/clutter-text.c:2835
msgid "The text to render"
msgstr "El texto que renderizar"
-#: clutter/clutter-text.c:2849
+#: ../clutter/clutter-text.c:2849
msgid "Font Color"
msgstr "Color de la tipografía"
-#: clutter/clutter-text.c:2850
+#: ../clutter/clutter-text.c:2850
msgid "Color of the font used by the text"
msgstr "Color de la tipografía usada por el texto"
-#: clutter/clutter-text.c:2864
+#: ../clutter/clutter-text.c:2864
msgid "Editable"
msgstr "Editable"
-#: clutter/clutter-text.c:2865
+#: ../clutter/clutter-text.c:2865
msgid "Whether the text is editable"
msgstr "Indica si el texto es editable"
-#: clutter/clutter-text.c:2880
+#: ../clutter/clutter-text.c:2880
msgid "Selectable"
msgstr "Seleccionable"
-#: clutter/clutter-text.c:2881
+#: ../clutter/clutter-text.c:2881
msgid "Whether the text is selectable"
msgstr "Indica si el texto es seleccionable"
-#: clutter/clutter-text.c:2895
+#: ../clutter/clutter-text.c:2895
msgid "Activatable"
msgstr "Activable"
-#: clutter/clutter-text.c:2896
+#: ../clutter/clutter-text.c:2896
msgid "Whether pressing return causes the activate signal to be emitted"
msgstr "Indica si al pulsar «Intro» hace que se emita la señal de activación"
-#: clutter/clutter-text.c:2913
+#: ../clutter/clutter-text.c:2913
msgid "Whether the input cursor is visible"
msgstr "Indica si el cursor de entrada es visible"
-#: clutter/clutter-text.c:2927 clutter/clutter-text.c:2928
+#: ../clutter/clutter-text.c:2927 ../clutter/clutter-text.c:2928
msgid "Cursor Color"
msgstr "Color del cursor"
-#: clutter/clutter-text.c:2942
+#: ../clutter/clutter-text.c:2942
msgid "Cursor Color Set"
msgstr "Conjunto de colores del cursor"
-#: clutter/clutter-text.c:2943
+#: ../clutter/clutter-text.c:2943
msgid "Whether the cursor color has been set"
msgstr "Indica si se ha establecido el color del cursor"
-#: clutter/clutter-text.c:2958
+#: ../clutter/clutter-text.c:2958
msgid "Cursor Size"
msgstr "Tamaño del cursor"
-#: clutter/clutter-text.c:2959
+#: ../clutter/clutter-text.c:2959
msgid "The width of the cursor, in pixels"
msgstr "La anchura del cursor, en píxeles"
-#: clutter/clutter-text.c:2973
+#: ../clutter/clutter-text.c:2973
msgid "Cursor Position"
msgstr "Posición del cursor"
-#: clutter/clutter-text.c:2974
+#: ../clutter/clutter-text.c:2974
msgid "The cursor position"
msgstr "La posición del cursor"
-#: clutter/clutter-text.c:2989
+#: ../clutter/clutter-text.c:2989
msgid "Selection-bound"
msgstr "Destino de la selección"
-#: clutter/clutter-text.c:2990
+#: ../clutter/clutter-text.c:2990
msgid "The cursor position of the other end of the selection"
msgstr "La posición del cursor del otro final de la selección"
-#: clutter/clutter-text.c:3005 clutter/clutter-text.c:3006
+#: ../clutter/clutter-text.c:3005 ../clutter/clutter-text.c:3006
msgid "Selection Color"
msgstr "Selección de color"
-#: clutter/clutter-text.c:3020
+#: ../clutter/clutter-text.c:3020
msgid "Selection Color Set"
msgstr "Conjunto de selección de colores"
-#: clutter/clutter-text.c:3021
+#: ../clutter/clutter-text.c:3021
msgid "Whether the selection color has been set"
msgstr "Indica si se ha establecido el color de la selección"
-#: clutter/clutter-text.c:3036
+#: ../clutter/clutter-text.c:3036
msgid "Attributes"
msgstr "Atributos"
-#: clutter/clutter-text.c:3037
+#: ../clutter/clutter-text.c:3037
msgid "A list of style attributes to apply to the contents of the actor"
msgstr ""
"Una lista de atributos de estilo que aplicar a los contenidos del actor"
-#: clutter/clutter-text.c:3059
+#: ../clutter/clutter-text.c:3059
msgid "Use markup"
msgstr "Usar marcado"
-#: clutter/clutter-text.c:3060
+#: ../clutter/clutter-text.c:3060
msgid "Whether or not the text includes Pango markup"
msgstr "Indica si el texto incluye o no el marcado de Pango"
-#: clutter/clutter-text.c:3076
+#: ../clutter/clutter-text.c:3076
msgid "Line wrap"
msgstr "Ajuste de línea"
-#: clutter/clutter-text.c:3077
+#: ../clutter/clutter-text.c:3077
msgid "If set, wrap the lines if the text becomes too wide"
msgstr ""
"Si está definido, ajustar las líneas si el texto se vuelve demasiado ancho"
-#: clutter/clutter-text.c:3092
+#: ../clutter/clutter-text.c:3092
msgid "Line wrap mode"
msgstr "Modo de ajuste de línea"
-#: clutter/clutter-text.c:3093
+#: ../clutter/clutter-text.c:3093
msgid "Control how line-wrapping is done"
msgstr "Controlar cómo se hace el ajuste de línea"
-#: clutter/clutter-text.c:3108
+#: ../clutter/clutter-text.c:3108
msgid "Ellipsize"
msgstr "Crear elipse"
-#: clutter/clutter-text.c:3109
+#: ../clutter/clutter-text.c:3109
msgid "The preferred place to ellipsize the string"
msgstr "El lugar preferido para crear la cadena elíptica"
-#: clutter/clutter-text.c:3125
+#: ../clutter/clutter-text.c:3125
msgid "Line Alignment"
msgstr "Alineación de línea"
-#: clutter/clutter-text.c:3126
+#: ../clutter/clutter-text.c:3126
msgid "The preferred alignment for the string, for multi-line text"
msgstr "La alineación preferida para la cadena, para texto multilínea"
-#: clutter/clutter-text.c:3142
+#: ../clutter/clutter-text.c:3142
msgid "Justify"
msgstr "Justificar"
-#: clutter/clutter-text.c:3143
+#: ../clutter/clutter-text.c:3143
msgid "Whether the text should be justified"
msgstr "Indica si el texto se debe justificar"
-#: clutter/clutter-text.c:3158
+#: ../clutter/clutter-text.c:3158
msgid "Password Character"
msgstr "Carácter de la contraseña"
-#: clutter/clutter-text.c:3159
+#: ../clutter/clutter-text.c:3159
msgid "If non-zero, use this character to display the actor's contents"
msgstr "Si no es cero, usar este carácter para mostrar el contenido del actor"
-#: clutter/clutter-text.c:3173
+#: ../clutter/clutter-text.c:3173
msgid "Max Length"
msgstr "Longitud máxima"
-#: clutter/clutter-text.c:3174
+#: ../clutter/clutter-text.c:3174
msgid "Maximum length of the text inside the actor"
msgstr "Longitud máxima del texto dentro del actor"
-#: clutter/clutter-text.c:3197
+#: ../clutter/clutter-text.c:3197
msgid "Single Line Mode"
msgstr "Modo de línea única"
-#: clutter/clutter-text.c:3198
+#: ../clutter/clutter-text.c:3198
msgid "Whether the text should be a single line"
msgstr "Indica si el texto debe estar en una única línea"
-#: clutter/clutter-text.c:3212 clutter/clutter-text.c:3213
+#: ../clutter/clutter-text.c:3212 ../clutter/clutter-text.c:3213
msgid "Selected Text Color"
msgstr "Color del texto seleccionado"
-#: clutter/clutter-text.c:3227
+#: ../clutter/clutter-text.c:3227
msgid "Selected Text Color Set"
msgstr "Conjunto de colores del texto seleccionado"
-#: clutter/clutter-text.c:3228
+#: ../clutter/clutter-text.c:3228
msgid "Whether the selected text color has been set"
msgstr "Indica si se ha establecido el color del texto seleccionado"
-#: clutter/clutter-texture.c:1003
+#: ../clutter/clutter-texture.c:1003
msgid "Sync size of actor"
msgstr "Sincronizar tamaño del actor"
-#: clutter/clutter-texture.c:1004
+#: ../clutter/clutter-texture.c:1004
msgid "Auto sync size of actor to underlying pixbuf dimensions"
msgstr ""
"Sincronizar automáticamente el tamaño del actor a las dimensiones de "
"«pixbuf» subyacente"
-#: clutter/clutter-texture.c:1011
+#: ../clutter/clutter-texture.c:1011
msgid "Disable Slicing"
msgstr "Desactivar troceado"
-#: clutter/clutter-texture.c:1012
+#: ../clutter/clutter-texture.c:1012
msgid ""
"Forces the underlying texture to be singular and not made of smaller space "
"saving individual textures"
@@ -1904,71 +1911,71 @@ msgstr ""
"Fuerza a la textura subyacente a ser singular y a que no esté hecha de un "
"espacio menor guardando texturas individuales"
-#: clutter/clutter-texture.c:1021
+#: ../clutter/clutter-texture.c:1021
msgid "Tile Waste"
msgstr "Cuadrado sobrante"
-#: clutter/clutter-texture.c:1022
+#: ../clutter/clutter-texture.c:1022
msgid "Maximum waste area of a sliced texture"
msgstr "Área máxima sobrante de una textura troceada"
-#: clutter/clutter-texture.c:1030
+#: ../clutter/clutter-texture.c:1030
msgid "Horizontal repeat"
msgstr "Repetición horizontal"
-#: clutter/clutter-texture.c:1031
+#: ../clutter/clutter-texture.c:1031
msgid "Repeat the contents rather than scaling them horizontally"
msgstr "Repite el contenido en vez de escalarlo horizontalmente"
-#: clutter/clutter-texture.c:1038
+#: ../clutter/clutter-texture.c:1038
msgid "Vertical repeat"
msgstr "Repetición vertical"
-#: clutter/clutter-texture.c:1039
+#: ../clutter/clutter-texture.c:1039
msgid "Repeat the contents rather than scaling them vertically"
msgstr "Repite el contenido en vez de escalarlo verticalmente"
-#: clutter/clutter-texture.c:1046
+#: ../clutter/clutter-texture.c:1046
msgid "Filter Quality"
msgstr "Calidad del filtro"
-#: clutter/clutter-texture.c:1047
+#: ../clutter/clutter-texture.c:1047
msgid "Rendering quality used when drawing the texture"
msgstr "Calidad de renderizado usada al dibujar la textura"
-#: clutter/clutter-texture.c:1055
+#: ../clutter/clutter-texture.c:1055
msgid "Pixel Format"
msgstr "Formato del píxel"
-#: clutter/clutter-texture.c:1056
+#: ../clutter/clutter-texture.c:1056
msgid "The Cogl pixel format to use"
msgstr "El formato de píxel Cogl que usar"
-#: clutter/clutter-texture.c:1064
+#: ../clutter/clutter-texture.c:1064
msgid "Cogl Texture"
msgstr "Textura de Cogl"
-#: clutter/clutter-texture.c:1065
+#: ../clutter/clutter-texture.c:1065
msgid "The underlying Cogl texture handle used to draw this actor"
msgstr "La textura Cogl subyacente usada para dibujar este actor"
-#: clutter/clutter-texture.c:1072
+#: ../clutter/clutter-texture.c:1072
msgid "Cogl Material"
msgstr "Material de Cogl"
-#: clutter/clutter-texture.c:1073
+#: ../clutter/clutter-texture.c:1073
msgid "The underlying Cogl material handle used to draw this actor"
msgstr "El material de Cogl subyacente usado para dibujar este actor"
-#: clutter/clutter-texture.c:1090
+#: ../clutter/clutter-texture.c:1090
msgid "The path of the file containing the image data"
msgstr "La ruta del archivo que contiene los datos de la imagen"
-#: clutter/clutter-texture.c:1097
+#: ../clutter/clutter-texture.c:1097
msgid "Keep Aspect Ratio"
msgstr "Mantener proporción de aspecto"
-#: clutter/clutter-texture.c:1098
+#: ../clutter/clutter-texture.c:1098
msgid ""
"Keep the aspect ratio of the texture when requesting the preferred width or "
"height"
@@ -1976,22 +1983,22 @@ msgstr ""
"Mantener la relación de aspecto de la textura al solicitar la anchura o la "
"altura preferidas"
-#: clutter/clutter-texture.c:1124
+#: ../clutter/clutter-texture.c:1124
msgid "Load asynchronously"
msgstr "Cargar de forma asíncrona"
-#: clutter/clutter-texture.c:1125
+#: ../clutter/clutter-texture.c:1125
msgid ""
"Load files inside a thread to avoid blocking when loading images from disk"
msgstr ""
"Cargar archivos en un hilo para evitar bloqueos al cargar imágenes desde el "
"disco"
-#: clutter/clutter-texture.c:1141
+#: ../clutter/clutter-texture.c:1141
msgid "Load data asynchronously"
msgstr "Cargar datos de forma asíncrona"
-#: clutter/clutter-texture.c:1142
+#: ../clutter/clutter-texture.c:1142
msgid ""
"Decode image data files inside a thread to reduce blocking when loading "
"images from disk"
@@ -1999,183 +2006,183 @@ msgstr ""
"Decodificar los archivos de datos de imágenes en un hilo para reducir los "
"bloqueos al cargar imágenes desde el disco"
-#: clutter/clutter-texture.c:1166
+#: ../clutter/clutter-texture.c:1166
msgid "Pick With Alpha"
msgstr "Seleccionar con alfa"
-#: clutter/clutter-texture.c:1167
+#: ../clutter/clutter-texture.c:1167
msgid "Shape actor with alpha channel when picking"
msgstr "Dar forma al actor con canal alfa al seleccionarlo"
-#: clutter/clutter-timeline.c:264
+#: ../clutter/clutter-timeline.c:264
msgid "Should the timeline automatically restart"
msgstr "Indica si la línea de tiempo se debe reiniciar automáticamente"
-#: clutter/clutter-timeline.c:278
+#: ../clutter/clutter-timeline.c:278
msgid "Delay"
msgstr "Retardo"
-#: clutter/clutter-timeline.c:279
+#: ../clutter/clutter-timeline.c:279
msgid "Delay before start"
msgstr "Retardo antes de empezar"
-#: clutter/clutter-timeline.c:295
+#: ../clutter/clutter-timeline.c:295
msgid "Duration of the timeline in milliseconds"
msgstr "Duración de la línea de tiempo, en milisegundos"
-#: clutter/clutter-timeline.c:311
+#: ../clutter/clutter-timeline.c:311
msgid "Direction of the timeline"
msgstr "Dirección de la línea de tiempo"
-#: clutter/clutter-timeline.c:326
+#: ../clutter/clutter-timeline.c:326
msgid "Auto Reverse"
msgstr "Invertir automáticamente"
-#: clutter/clutter-timeline.c:327
+#: ../clutter/clutter-timeline.c:327
msgid "Whether the direction should be reversed when reaching the end"
msgstr "Indica si se debe invertir la dirección al llegar al final"
-#: clutter/evdev/clutter-input-device-evdev.c:147
+#: ../clutter/evdev/clutter-input-device-evdev.c:147
msgid "sysfs Path"
msgstr "Ruta de sysfs"
-#: clutter/evdev/clutter-input-device-evdev.c:148
+#: ../clutter/evdev/clutter-input-device-evdev.c:148
msgid "Path of the device in sysfs"
msgstr "Ruta del dispositivo en sysfs"
-#: clutter/evdev/clutter-input-device-evdev.c:163
+#: ../clutter/evdev/clutter-input-device-evdev.c:163
msgid "Device Path"
msgstr "Ruta del dispositivo"
-#: clutter/evdev/clutter-input-device-evdev.c:164
+#: ../clutter/evdev/clutter-input-device-evdev.c:164
msgid "Path of the device node"
msgstr "Ruta al nodo del dispositivo"
-#: clutter/glx/clutter-backend-glx.c:107
+#: ../clutter/glx/clutter-backend-glx.c:107
msgid "Set to 'none' or '0' to disable throttling framerate to vblank"
msgstr ""
"Establecer a «none» o a «0» para desactivar el límite de imágenes por "
"segundo de «vblank»"
-#: clutter/x11/clutter-backend-x11.c:483
+#: ../clutter/x11/clutter-backend-x11.c:483
msgid "X display to use"
msgstr "Pantalla X que usar"
-#: clutter/x11/clutter-backend-x11.c:489
+#: ../clutter/x11/clutter-backend-x11.c:489
msgid "X screen to use"
msgstr "Pantalla (screen) X que usar"
-#: clutter/x11/clutter-backend-x11.c:494
+#: ../clutter/x11/clutter-backend-x11.c:494
msgid "Make X calls synchronous"
msgstr "Hacer llamadas a X síncronas"
-#: clutter/x11/clutter-backend-x11.c:501
+#: ../clutter/x11/clutter-backend-x11.c:501
msgid "Enable XInput support"
msgstr "Activar soporte XInput"
-#: clutter/x11/clutter-keymap-x11.c:317
+#: ../clutter/x11/clutter-keymap-x11.c:317
msgid "The Clutter backend"
msgstr "El backend de Clutter"
-#: clutter/x11/clutter-x11-texture-pixmap.c:545
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:545
msgid "Pixmap"
msgstr "Mapa de píxeles"
-#: clutter/x11/clutter-x11-texture-pixmap.c:546
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:546
msgid "The X11 Pixmap to be bound"
msgstr "EL mapa de píxeles X11 que asociar"
-#: clutter/x11/clutter-x11-texture-pixmap.c:554
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:554
msgid "Pixmap width"
msgstr "Anchura del mapa de píxeles"
-#: clutter/x11/clutter-x11-texture-pixmap.c:555
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:555
msgid "The width of the pixmap bound to this texture"
msgstr "La anchura del mapa de píxeles asociado a esta textura"
-#: clutter/x11/clutter-x11-texture-pixmap.c:563
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:563
msgid "Pixmap height"
msgstr "Altura del mapa de píxeles"
-#: clutter/x11/clutter-x11-texture-pixmap.c:564
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:564
msgid "The height of the pixmap bound to this texture"
msgstr "La altura del mapa de píxeles asociado a esta textura"
-#: clutter/x11/clutter-x11-texture-pixmap.c:572
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:572
msgid "Pixmap Depth"
msgstr "Profundidad del mapa de píxeles"
-#: clutter/x11/clutter-x11-texture-pixmap.c:573
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:573
msgid "The depth (in number of bits) of the pixmap bound to this texture"
msgstr ""
"La profundidad (en número de bits) del mapa de píxeles asociado a esta "
"textura"
-#: clutter/x11/clutter-x11-texture-pixmap.c:581
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:581
msgid "Automatic Updates"
msgstr "Actualizaciones automáticas"
-#: clutter/x11/clutter-x11-texture-pixmap.c:582
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:582
msgid "If the texture should be kept in sync with any pixmap changes."
msgstr ""
"Indica si la textura se debe sincronizar con cualquier cambio en el mapa de "
"píxeles."
-#: clutter/x11/clutter-x11-texture-pixmap.c:590
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:590
msgid "Window"
msgstr "Ventana"
-#: clutter/x11/clutter-x11-texture-pixmap.c:591
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:591
msgid "The X11 Window to be bound"
msgstr "La ventana X11 que asociar"
-#: clutter/x11/clutter-x11-texture-pixmap.c:599
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:599
msgid "Window Redirect Automatic"
msgstr "Redirección automática de la ventana"
-#: clutter/x11/clutter-x11-texture-pixmap.c:600
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:600
msgid "If composite window redirects are set to Automatic (or Manual if false)"
msgstr ""
"Indica si la redirección de la ventana compuesta está establecida a "
"«Automática» (o «Manual» si es falso)"
-#: clutter/x11/clutter-x11-texture-pixmap.c:610
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:610
msgid "Window Mapped"
msgstr "Ventana mapeada"
-#: clutter/x11/clutter-x11-texture-pixmap.c:611
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:611
msgid "If window is mapped"
msgstr "Indica si la ventana está mapeada"
-#: clutter/x11/clutter-x11-texture-pixmap.c:620
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:620
msgid "Destroyed"
msgstr "Destruida"
-#: clutter/x11/clutter-x11-texture-pixmap.c:621
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:621
msgid "If window has been destroyed"
msgstr "Indica si se ha destruido la ventana"
-#: clutter/x11/clutter-x11-texture-pixmap.c:629
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:629
msgid "Window X"
msgstr "Ventana X"
-#: clutter/x11/clutter-x11-texture-pixmap.c:630
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:630
msgid "X position of window on screen according to X11"
msgstr "Posición X de la ventana en la pantalla, de acuerdo con X11"
-#: clutter/x11/clutter-x11-texture-pixmap.c:638
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:638
msgid "Window Y"
msgstr "Ventana Y"
-#: clutter/x11/clutter-x11-texture-pixmap.c:639
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:639
msgid "Y position of window on screen according to X11"
msgstr "Posición Y de la ventana en la pantalla, de acuerdo con X11"
-#: clutter/x11/clutter-x11-texture-pixmap.c:646
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:646
msgid "Window Override Redirect"
msgstr "Omitir redirección de la ventana"
-#: clutter/x11/clutter-x11-texture-pixmap.c:647
+#: ../clutter/x11/clutter-x11-texture-pixmap.c:647
msgid "If this is an override-redirect window"
msgstr "Indica si esta es una ventana que omite la redirección"
diff --git a/tests/interactive/Makefile.am b/tests/interactive/Makefile.am
index 6c118528b..bcceae8a3 100644
--- a/tests/interactive/Makefile.am
+++ b/tests/interactive/Makefile.am
@@ -47,7 +47,8 @@ UNIT_TESTS = \
test-table-layout.c \
test-path-constraint.c \
test-snap-constraint.c \
- test-state-script.c
+ test-state-script.c \
+ test-drop.c
if X11_TESTS
UNIT_TESTS += test-devices.c
diff --git a/tests/interactive/test-drop.c b/tests/interactive/test-drop.c
new file mode 100644
index 000000000..2b511d4e8
--- /dev/null
+++ b/tests/interactive/test-drop.c
@@ -0,0 +1,245 @@
+#include <stdlib.h>
+#include <clutter/clutter.h>
+
+#define TARGET_SIZE 200
+#define HANDLE_SIZE 128
+
+static ClutterActor *stage = NULL;
+static ClutterActor *target1 = NULL;
+static ClutterActor *target2 = NULL;
+static ClutterActor *drag = NULL;
+
+static gboolean drop_successful = FALSE;
+
+static void add_drag_object (ClutterActor *target);
+
+static void
+on_drag_end (ClutterDragAction *action,
+ ClutterActor *actor,
+ gfloat event_x,
+ gfloat event_y,
+ ClutterModifierType modifiers)
+{
+ ClutterActor *handle = clutter_drag_action_get_drag_handle (action);
+
+ g_print ("Drag ended at: %.0f, %.0f\n",
+ event_x, event_y);
+
+ clutter_actor_animate (actor, CLUTTER_LINEAR, 150, "opacity", 255, NULL);
+
+ if (!drop_successful)
+ {
+ gfloat x_pos, y_pos;
+
+ clutter_actor_animate (clutter_actor_get_parent (actor),
+ CLUTTER_LINEAR, 150,
+ "opacity", 255,
+ NULL);
+
+ clutter_actor_get_transformed_position (actor, &x_pos, &y_pos);
+ clutter_actor_animate (handle, CLUTTER_EASE_OUT_BOUNCE, 250,
+ "x", x_pos,
+ "y", y_pos,
+ "opacity", 0,
+ "signal-swapped::completed",
+ G_CALLBACK (clutter_actor_destroy),
+ handle,
+ NULL);
+ }
+ else
+ {
+ clutter_actor_animate (handle, CLUTTER_LINEAR, 250,
+ "opacity", 0,
+ "signal-swapped::completed",
+ G_CALLBACK (clutter_actor_destroy),
+ handle,
+ NULL);
+ }
+}
+
+static void
+on_drag_begin (ClutterDragAction *action,
+ ClutterActor *actor,
+ gfloat event_x,
+ gfloat event_y,
+ ClutterModifierType modifiers)
+{
+ ClutterActor *handle;
+ gfloat x_pos, y_pos;
+
+ clutter_actor_get_position (actor, &x_pos, &y_pos);
+
+ handle = clutter_rectangle_new_with_color (CLUTTER_COLOR_DarkSkyBlue);
+ clutter_actor_set_size (handle, 128, 128);
+ clutter_actor_set_position (handle, event_x - x_pos, event_y - y_pos);
+ clutter_container_add_actor (CLUTTER_CONTAINER (stage), handle);
+
+ clutter_drag_action_set_drag_handle (action, handle);
+
+ clutter_actor_animate (actor, CLUTTER_LINEAR, 150, "opacity", 128, NULL);\
+
+ drop_successful = FALSE;
+}
+
+static void
+add_drag_object (ClutterActor *target)
+{
+ ClutterActor *parent;
+
+ if (drag == NULL)
+ {
+ ClutterAction *action;
+
+ drag = clutter_rectangle_new_with_color (CLUTTER_COLOR_LightSkyBlue);
+ clutter_actor_set_size (drag, HANDLE_SIZE, HANDLE_SIZE);
+ clutter_actor_set_position (drag,
+ (TARGET_SIZE - HANDLE_SIZE) / 2.0,
+ (TARGET_SIZE - HANDLE_SIZE) / 2.0);
+ clutter_actor_set_reactive (drag, TRUE);
+
+ action = clutter_drag_action_new ();
+ g_signal_connect (action, "drag-begin", G_CALLBACK (on_drag_begin), NULL);
+ g_signal_connect (action, "drag-end", G_CALLBACK (on_drag_end), NULL);
+
+ clutter_actor_add_action (drag, action);
+ }
+
+ parent = clutter_actor_get_parent (drag);
+
+ if (parent == target)
+ {
+ clutter_actor_animate (target, CLUTTER_LINEAR, 150,
+ "opacity", 255,
+ NULL);
+ return;
+ }
+
+ g_object_ref (drag);
+ if (parent != NULL && parent != stage)
+ {
+ clutter_container_remove_actor (CLUTTER_CONTAINER (parent), drag);
+ clutter_actor_animate (parent, CLUTTER_LINEAR, 150,
+ "opacity", 64,
+ NULL);
+ }
+
+ clutter_container_add_actor (CLUTTER_CONTAINER (target), drag);
+ clutter_actor_animate (target, CLUTTER_LINEAR, 150,
+ "opacity", 255,
+ NULL);
+
+ g_object_unref (drag);
+}
+
+static void
+on_target_over (ClutterDropAction *action,
+ ClutterActor *actor,
+ gpointer _data)
+{
+ gboolean is_over = GPOINTER_TO_UINT (_data);
+ guint8 final_opacity = is_over ? 128 : 64;
+ ClutterActor *target;
+
+ target = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (action));
+
+ clutter_actor_animate (target, CLUTTER_LINEAR, 250,
+ "opacity", final_opacity,
+ NULL);
+}
+
+static void
+on_target_drop (ClutterDropAction *action,
+ ClutterActor *actor,
+ gfloat event_x,
+ gfloat event_y)
+{
+ gfloat actor_x, actor_y;
+
+ actor_x = actor_y = 0.0f;
+
+ clutter_actor_transform_stage_point (actor, event_x, event_y,
+ &actor_x,
+ &actor_y);
+
+ g_print ("Dropped at %.0f, %.0f (screen: %.0f, %.0f)\n",
+ actor_x, actor_y,
+ event_x, event_y);
+
+ drop_successful = TRUE;
+ add_drag_object (actor);
+}
+
+G_MODULE_EXPORT int
+test_drop_main (int argc, char *argv[])
+{
+ ClutterActor *dummy;
+
+ if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
+ return EXIT_FAILURE;
+
+ stage = clutter_stage_new ();
+ clutter_stage_set_title (CLUTTER_STAGE (stage), "Drop Action");
+ g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
+
+ target1 = clutter_box_new (clutter_fixed_layout_new ());
+ clutter_box_set_color (CLUTTER_BOX (target1), CLUTTER_COLOR_LightScarletRed);
+ clutter_actor_set_size (target1, TARGET_SIZE, TARGET_SIZE);
+ clutter_actor_set_opacity (target1, 64);
+ clutter_actor_add_constraint (target1, clutter_align_constraint_new (stage, CLUTTER_ALIGN_Y_AXIS, 0.5));
+ clutter_actor_set_x (target1, 10);
+ clutter_actor_set_reactive (target1, TRUE);
+
+ clutter_actor_add_action_with_name (target1, "drop", clutter_drop_action_new ());
+ g_signal_connect (clutter_actor_get_action (target1, "drop"),
+ "over-in",
+ G_CALLBACK (on_target_over),
+ GUINT_TO_POINTER (TRUE));
+ g_signal_connect (clutter_actor_get_action (target1, "drop"),
+ "over-out",
+ G_CALLBACK (on_target_over),
+ GUINT_TO_POINTER (FALSE));
+ g_signal_connect (clutter_actor_get_action (target1, "drop"),
+ "drop",
+ G_CALLBACK (on_target_drop),
+ NULL);
+
+ dummy = clutter_rectangle_new_with_color (CLUTTER_COLOR_DarkOrange);
+ clutter_actor_set_size (dummy,
+ 640 - (2 * 10) - (2 * (TARGET_SIZE + 10)),
+ TARGET_SIZE);
+ clutter_actor_add_constraint (dummy, clutter_align_constraint_new (stage, CLUTTER_ALIGN_X_AXIS, 0.5));
+ clutter_actor_add_constraint (dummy, clutter_align_constraint_new (stage, CLUTTER_ALIGN_Y_AXIS, 0.5));
+ clutter_actor_set_reactive (dummy, TRUE);
+
+ target2 = clutter_box_new (clutter_fixed_layout_new ());
+ clutter_box_set_color (CLUTTER_BOX (target2), CLUTTER_COLOR_LightChameleon);
+ clutter_actor_set_size (target2, TARGET_SIZE, TARGET_SIZE);
+ clutter_actor_set_opacity (target2, 64);
+ clutter_actor_add_constraint (target2, clutter_align_constraint_new (stage, CLUTTER_ALIGN_Y_AXIS, 0.5));
+ clutter_actor_set_x (target2, 640 - TARGET_SIZE - 10);
+ clutter_actor_set_reactive (target2, TRUE);
+
+ clutter_actor_add_action_with_name (target2, "drop", clutter_drop_action_new ());
+ g_signal_connect (clutter_actor_get_action (target2, "drop"),
+ "over-in",
+ G_CALLBACK (on_target_over),
+ GUINT_TO_POINTER (TRUE));
+ g_signal_connect (clutter_actor_get_action (target2, "drop"),
+ "over-out",
+ G_CALLBACK (on_target_over),
+ GUINT_TO_POINTER (FALSE));
+ g_signal_connect (clutter_actor_get_action (target2, "drop"),
+ "drop",
+ G_CALLBACK (on_target_drop),
+ NULL);
+
+ clutter_container_add (CLUTTER_CONTAINER (stage), target1, dummy, target2, NULL);
+
+ add_drag_object (target1);
+
+ clutter_actor_show (stage);
+
+ clutter_main ();
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/interactive/test-events.c b/tests/interactive/test-events.c
index 0213c71dc..18ba50229 100644
--- a/tests/interactive/test-events.c
+++ b/tests/interactive/test-events.c
@@ -70,17 +70,20 @@ blue_button_cb (ClutterActor *actor,
}
static gboolean
-red_button_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
+red_button_cb (ClutterActor *actor,
+ ClutterEvent *event,
+ gpointer data)
{
+ ClutterActor *stage;
if (IsMotion)
IsMotion = FALSE;
else
IsMotion = TRUE;
- clutter_set_motion_events_enabled (IsMotion);
+ stage = clutter_actor_get_stage (actor);
+ clutter_stage_set_motion_events_enabled (CLUTTER_STAGE (stage),
+ IsMotion);
g_print ("*** Per actor motion events %s ***\n",
IsMotion ? "enabled" : "disabled");
diff --git a/tests/interactive/test-grab.c b/tests/interactive/test-grab.c
index 946cf7216..26ef6a669 100644
--- a/tests/interactive/test-grab.c
+++ b/tests/interactive/test-grab.c
@@ -107,10 +107,16 @@ green_press_cb (ClutterActor *actor,
ClutterEvent *event,
gpointer data)
{
- clutter_set_motion_events_enabled (!clutter_get_motion_events_enabled ());
+ ClutterActor *stage;
+ gboolean enabled;
+
+ stage = clutter_actor_get_stage (actor);
+ enabled = !clutter_stage_get_motion_events_enabled (CLUTTER_STAGE (stage));
+
+ clutter_stage_set_motion_events_enabled (CLUTTER_STAGE (stage), enabled);
g_print ("per actor motion events are now %s\n",
- clutter_get_motion_events_enabled () ? "enabled" : "disabled");
+ enabled ? "enabled" : "disabled");
return FALSE;
}