filedialog: Report cancellation propertly
authorMatthias Clasen <mclasen@redhat.com>
Tue, 29 Nov 2022 23:59:23 +0000 (18:59 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 9 Dec 2022 16:05:48 +0000 (11:05 -0500)
Unless we prevent it, GTask will always report
cancellation as G_IO_ERROR_CANCELLED. But we
want GTK_DIALOG_ERROR_ABORTED for this case.

gtk/gtkfiledialog.c

index 3d25750abb7f9bc6db290c18dbcabb2d56b3f908..d5cf620db5465cc87e282e6952d4ca17282f3b13 100644 (file)
@@ -778,6 +778,7 @@ gtk_file_dialog_open (GtkFileDialog       *self,
                                  current_file, NULL, FALSE);
 
   task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_check_cancellable (task, FALSE);
   g_task_set_source_tag (task, gtk_file_dialog_open);
   g_task_set_task_data (task, chooser, (GDestroyNotify) gtk_native_dialog_destroy);
 
@@ -854,6 +855,7 @@ gtk_file_dialog_select_folder (GtkFileDialog       *self,
                                  current_folder, NULL, FALSE);
 
   task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_check_cancellable (task, FALSE);
   g_task_set_source_tag (task, gtk_file_dialog_select_folder);
   g_task_set_task_data (task, chooser, (GDestroyNotify) gtk_native_dialog_destroy);
 
@@ -935,6 +937,7 @@ gtk_file_dialog_save (GtkFileDialog       *self,
                                  current_file, current_name, FALSE);
 
   task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_check_cancellable (task, FALSE);
   g_task_set_source_tag (task, gtk_file_dialog_save);
   g_task_set_task_data (task, chooser, (GDestroyNotify) gtk_native_dialog_destroy);
 
@@ -1008,6 +1011,7 @@ gtk_file_dialog_open_multiple (GtkFileDialog       *self,
                                  NULL, NULL, TRUE);
 
   task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_check_cancellable (task, FALSE);
   g_task_set_source_tag (task, gtk_file_dialog_open_multiple);
   g_task_set_task_data (task, chooser, (GDestroyNotify) gtk_native_dialog_destroy);
 
@@ -1082,6 +1086,7 @@ gtk_file_dialog_select_multiple_folders (GtkFileDialog       *self,
                                  NULL, NULL, TRUE);
 
   task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_check_cancellable (task, FALSE);
   g_task_set_source_tag (task, gtk_file_dialog_select_multiple_folders);
   g_task_set_task_data (task, chooser, (GDestroyNotify) gtk_native_dialog_destroy);