[examples] Use different sized stages
authorEmmanuele Bassi <ebassi@linux.intel.com>
Thu, 4 Jun 2009 16:48:44 +0000 (17:48 +0100)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Thu, 4 Jun 2009 16:48:44 +0000 (17:48 +0100)
The multi-stage example should use two stages with different stages.

Also, we should show the ::allocation-changed signal.

examples/gtk-clutter-multistage.c

index 95058a7..ef4623a 100644 (file)
@@ -3,6 +3,17 @@
 
 #include <clutter-gtk/clutter-gtk.h>
 
+static void
+on_stage2_allocation_changed (ClutterActor           *stage_2,
+                              const ClutterActorBox  *allocation,
+                              ClutterAllocationFlags  flags,
+                              ClutterActor           *texture_2)
+{
+  clutter_actor_set_position (texture_2,
+                              (allocation->x2 - allocation->x1) / 2,
+                              (allocation->y2 - allocation->y1) / 2);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -39,7 +50,7 @@ main (int argc, char *argv[])
   gtk_container_add (GTK_CONTAINER (vbox), clutter1);
 
   clutter2 = gtk_clutter_embed_new ();
-  gtk_widget_set_size_request (clutter2, 320, 240);
+  gtk_widget_set_size_request (clutter2, 320, 120);
   stage2 = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (clutter2));
   clutter_stage_set_color (CLUTTER_STAGE(stage2), &col2);
   tex2 = gtk_clutter_texture_new_from_icon_name (clutter1,
@@ -48,11 +59,15 @@ main (int argc, char *argv[])
   clutter_actor_set_anchor_point (tex2,
                                   clutter_actor_get_width (tex2) / 2,
                                   clutter_actor_get_height (tex2) / 2);
-  clutter_actor_set_position (tex2, 160, 120);
+  clutter_actor_set_position (tex2, 160, 60);
   clutter_stage_add (stage2, tex2);
 
   gtk_container_add (GTK_CONTAINER (vbox), clutter2);
 
+  g_signal_connect (stage2, "allocation-changed",
+                    G_CALLBACK (on_stage2_allocation_changed),
+                    tex2);
+
   gtk_widget_show_all (window);
   clutter_actor_show_all (stage1); 
   clutter_actor_show_all (stage2);