1 | /* Cursors |
---|---|
2 | * |
3 | * Demonstrates a useful set of available cursors. The cursors shown here are the |
4 | * ones defined by CSS, which we assume to be available. The example shows creating |
5 | * cursors by name or from an image, with or without a fallback. |
6 | */ |
7 | |
8 | #include <gtk/gtk.h> |
9 | |
10 | static GtkWidget *window = NULL; |
11 | |
12 | static void |
13 | on_destroy (gpointer data) |
14 | { |
15 | window = NULL; |
16 | } |
17 | |
18 | GtkWidget * |
19 | do_cursors (GtkWidget *do_widget) |
20 | { |
21 | if (!window) |
22 | { |
23 | GtkBuilder *builder; |
24 | |
25 | builder = gtk_builder_new_from_resource (resource_path: "/cursors/cursors.ui"); |
26 | window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); |
27 | g_object_add_weak_pointer (G_OBJECT (window), weak_pointer_location: (gpointer *)&window); |
28 | gtk_window_set_display (GTK_WINDOW (window), |
29 | display: gtk_widget_get_display (widget: do_widget)); |
30 | g_signal_connect (window, "destroy", |
31 | G_CALLBACK (on_destroy), NULL); |
32 | g_object_unref (object: builder); |
33 | } |
34 | |
35 | if (!gtk_widget_get_visible (widget: window)) |
36 | gtk_widget_show (widget: window); |
37 | else |
38 | gtk_window_destroy (GTK_WINDOW (window)); |
39 | |
40 | return window; |
41 | } |
42 |