mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-12 21:40:19 +00:00
gtk-demo: Test cancellation support for file dialog
Add a timeout that closes the file dialog after 20 seconds, to test programmatic cancellation.
This commit is contained in:
parent
5e534306e4
commit
4fa53bd041
@ -33,17 +33,35 @@ file_opened (GObject *source,
|
|||||||
g_free (name);
|
g_free (name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
abort_mission (gpointer data)
|
||||||
|
{
|
||||||
|
GCancellable *cancellable = data;
|
||||||
|
|
||||||
|
g_cancellable_cancel (cancellable);
|
||||||
|
|
||||||
|
return G_SOURCE_REMOVE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
open_file (GtkButton *picker,
|
open_file (GtkButton *picker,
|
||||||
GtkLabel *label)
|
GtkLabel *label)
|
||||||
{
|
{
|
||||||
GtkWindow *parent = GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (picker)));
|
GtkWindow *parent = GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (picker)));
|
||||||
GtkFileDialog *dialog;
|
GtkFileDialog *dialog;
|
||||||
|
GCancellable *cancellable;
|
||||||
|
|
||||||
dialog = gtk_file_dialog_new ();
|
dialog = gtk_file_dialog_new ();
|
||||||
|
|
||||||
gtk_file_dialog_open (dialog, parent, NULL, NULL, file_opened, label);
|
cancellable = g_cancellable_new ();
|
||||||
|
|
||||||
|
g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
|
||||||
|
20,
|
||||||
|
abort_mission, g_object_ref (cancellable), g_object_unref);
|
||||||
|
|
||||||
|
gtk_file_dialog_open (dialog, parent, NULL, cancellable, file_opened, label);
|
||||||
|
|
||||||
|
g_object_unref (cancellable);
|
||||||
g_object_unref (dialog);
|
g_object_unref (dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user