1/* Stack
2 *
3 * GtkStack is a container that shows a single child at a time,
4 * with nice transitions when the visible child changes.
5 *
6 * GtkStackSwitcher adds buttons to control which child is visible.
7 */
8
9#include <gtk/gtk.h>
10
11GtkWidget *
12do_stack (GtkWidget *do_widget)
13{
14 static GtkWidget *window = NULL;
15
16 if (!window)
17 {
18 GtkBuilder *builder;
19
20 builder = gtk_builder_new_from_resource (resource_path: "/stack/stack.ui");
21 window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
22 gtk_window_set_display (GTK_WINDOW (window),
23 display: gtk_widget_get_display (widget: do_widget));
24 g_object_add_weak_pointer (G_OBJECT (window), weak_pointer_location: (gpointer *)&window);
25
26 g_object_unref (object: builder);
27 }
28
29 if (!gtk_widget_get_visible (widget: window))
30 gtk_widget_show (widget: window);
31 else
32 gtk_window_destroy (GTK_WINDOW (window));
33
34
35 return window;
36}
37

source code of gtk/demos/gtk-demo/stack.c