diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2011-07-01 14:17:54 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2011-07-01 14:17:54 +0800 |
commit | 6f06ab7c2f4763223b4c5493bab32fda8cbc241a (patch) | |
tree | a47b2d2d6615890f4b567fb7a2daeeb45bd364ab | |
parent | 9dab0b59aca77c3d8b483410f5ef5d6f7c2e2823 (diff) | |
parent | eae2ab6516c114ad3e9452dbbbc3111b9f047e6d (diff) | |
download | clutter-6f06ab7c2f4763223b4c5493bab32fda8cbc241a.tar.gz |
Merge branch 'clutter-1.99' into msvc-support-2.0
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 Binary files differindex e78ead486..c2a71b2d2 100644 --- a/doc/reference/clutter/constraints-example.png +++ b/doc/reference/clutter/constraints-example.png @@ -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; } |