Add dependencies
[clutter-gtk] / clutter-gtk / gtk-clutter-viewport.c
index 264694a..c2f6a15 100644 (file)
@@ -14,7 +14,7 @@
  * The #GtkClutterViewport can be used inside any #ClutterContainer
  * implementation.
  *
- * #GtkClutterViewport is available since Clutter-GTK 1.0
+ * #GtkClutterViewport is available since Clutter-GTK 0.10
  */
 
 #ifdef HAVE_CONFIG_H
@@ -729,35 +729,42 @@ gtk_clutter_viewport_allocate (ClutterActor           *actor,
 }
 
 static void
-gtk_clutter_viewport_paint (ClutterActor *actor)
+gtk_clutter_viewport_apply_transform (ClutterActor *actor,
+                                      CoglMatrix   *matrix)
 {
   GtkClutterViewportPrivate *priv = GTK_CLUTTER_VIEWPORT (actor)->priv;
+  ClutterActorClass *parent_class;
 
-  cogl_push_matrix ();
+  parent_class = CLUTTER_ACTOR_CLASS (gtk_clutter_viewport_parent_class);
+  parent_class->apply_transform (actor, matrix);
 
-  /* translate the paint environment by the same amount
-   * defined by the origin value
-   */
-  cogl_translate (priv->origin.x * -1,
-                  priv->origin.y * -1,
-                  priv->origin.z * -1);
+  cogl_matrix_translate (matrix,
+                         priv->origin.x * -1,
+                         priv->origin.y * -1,
+                         priv->origin.z * -1);
+}
+
+static void
+gtk_clutter_viewport_paint (ClutterActor *actor)
+{
+  GtkClutterViewportPrivate *priv = GTK_CLUTTER_VIEWPORT (actor)->priv;
 
-  /* the child will be painted in the new frame of reference */
   if (priv->child)
     clutter_actor_paint (priv->child);
-
-  cogl_pop_matrix ();
 }
 
 static void
 gtk_clutter_viewport_pick (ClutterActor       *actor,
                            const ClutterColor *pick_color)
 {
-  /* chain up to get the default pick */
-  CLUTTER_ACTOR_CLASS (gtk_clutter_viewport_parent_class)->pick (actor, pick_color);
+  GtkClutterViewportPrivate *priv = GTK_CLUTTER_VIEWPORT (actor)->priv;
+  ClutterActorClass *parent_class;
 
-  /* this will cause the child (if any) to be painted in pick mode */
-  gtk_clutter_viewport_paint (actor);
+  parent_class = CLUTTER_ACTOR_CLASS (gtk_clutter_viewport_parent_class);
+  parent_class->pick (actor, pick_color);
+
+  if (priv->child)
+    clutter_actor_paint (priv->child);
 }
 
 static void
@@ -776,6 +783,7 @@ gtk_clutter_viewport_class_init (GtkClutterViewportClass *klass)
   actor_class->get_preferred_width = gtk_clutter_viewport_get_preferred_width;
   actor_class->get_preferred_height = gtk_clutter_viewport_get_preferred_height;
   actor_class->allocate = gtk_clutter_viewport_allocate;
+  actor_class->apply_transform = gtk_clutter_viewport_apply_transform;
   actor_class->paint = gtk_clutter_viewport_paint;
   actor_class->pick = gtk_clutter_viewport_pick;
 
@@ -784,7 +792,7 @@ gtk_clutter_viewport_class_init (GtkClutterViewportClass *klass)
    *
    * The #ClutterActor inside the viewport.
    *
-   * Since: 1.0
+   * Since: 0.10
    */
   pspec = g_param_spec_object ("child",
                                "Child",
@@ -800,7 +808,7 @@ gtk_clutter_viewport_class_init (GtkClutterViewportClass *klass)
    * vertex to convert event coordinates for the child of the
    * viewport.
    *
-   * Since: 1.0
+   * Since: 0.10
    */
   pspec = g_param_spec_boxed ("origin",
                               "Origin",
@@ -841,7 +849,7 @@ gtk_clutter_viewport_init (GtkClutterViewport *viewport)
  *
  * Return value: the newly created viewport actor
  *
- * Since: 1.0
+ * Since: 0.10
  */
 ClutterActor *
 gtk_clutter_viewport_new (GtkAdjustment *h_adjust,
@@ -865,7 +873,7 @@ gtk_clutter_viewport_new (GtkAdjustment *h_adjust,
  * Retrieves the current translation factor ("origin") used when
  * displaying the child of @viewport.
  *
- * Since: 1.0.
+ * Since: 0.10
  */
 void
 gtk_clutter_viewport_get_origin (GtkClutterViewport *viewport,