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
10static GtkWidget *window = NULL;
11
12static void
13on_destroy (gpointer data)
14{
15 window = NULL;
16}
17
18GtkWidget *
19do_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

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