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 | |
11 | GtkWidget * |
12 | do_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 |