alertdialog: Bring the GError back
authorBenjamin Otte <otte@redhat.com>
Wed, 23 Nov 2022 22:43:36 +0000 (23:43 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 24 Dec 2022 12:56:57 +0000 (07:56 -0500)
Make sure we have a GError, so that dismissing and cancelling can be
separated.

gtk/gtkalertdialog.c
gtk/gtkalertdialog.h
gtk/gtkfilechooserwidget.c
gtk/gtkmountoperation.c

index 645ab6d829789e131a50c1a2748903dcda0216ba..d4e0512a16158cd61f310f159ccd9795f49f6192 100644 (file)
@@ -22,6 +22,7 @@
 #include "gtkalertdialog.h"
 
 #include "gtkbutton.h"
+#include "gtkdialogerror.h"
 #include "deprecated/gtkmessagedialog.h"
 #include <glib/gi18n-lib.h>
 
@@ -618,7 +619,10 @@ response_cb (GTask *task,
     {
       GtkAlertDialog *self = GTK_ALERT_DIALOG (g_task_get_source_object (task));
 
-      g_task_return_int (task, self->cancel_return);
+      if (self->cancel_return >= 0)
+        g_task_return_int (task, self->cancel_return);
+      else
+        g_task_return_new_error (task, GTK_DIALOG_ERROR, GTK_DIALOG_ERROR_DISMISSED, "Dismissed by user");
     }
 
   g_object_unref (task);
@@ -723,6 +727,7 @@ gtk_alert_dialog_choose (GtkAlertDialog      *self,
  * gtk_alert_dialog_choose_finish:
  * @self: a `GtkAlertDialog`
  * @result: a `GAsyncResult`
+ * @error: return location for a [enum@Gtk.DialogError] error
  *
  * Finishes the [method@Gtk.AlertDialog.choose] call
  * and returns the index of the button that was clicked.
@@ -735,13 +740,14 @@ gtk_alert_dialog_choose (GtkAlertDialog      *self,
  */
 int
 gtk_alert_dialog_choose_finish (GtkAlertDialog  *self,
-                                GAsyncResult   *result)
+                                GAsyncResult    *result,
+                                GError         **error)
 {
   g_return_val_if_fail (GTK_IS_ALERT_DIALOG (self), -1);
   g_return_val_if_fail (g_task_is_valid (result, self), -1);
   g_return_val_if_fail (g_task_get_source_tag (G_TASK (result)) == gtk_alert_dialog_choose, -1);
 
-  return (int) g_task_propagate_int (G_TASK (result), NULL);
+  return (int) g_task_propagate_int (G_TASK (result), error);
 }
 
 /**
index 4263eb9c9209fa7bc16131015289040e9e17281f..a5a8412a5ae5f35229a55fbcfb814fc7bc8a338e 100644 (file)
@@ -87,7 +87,8 @@ void            gtk_alert_dialog_choose             (GtkAlertDialog      *self,
 
 GDK_AVAILABLE_IN_4_10
 int             gtk_alert_dialog_choose_finish      (GtkAlertDialog      *self,
-                                                     GAsyncResult        *result);
+                                                     GAsyncResult        *result,
+                                                     GError             **error);
 
 GDK_AVAILABLE_IN_4_10
 void            gtk_alert_dialog_show               (GtkAlertDialog      *self,
index ed85b0eb9e49585b77e55b39de57bae3410c4a1a..ca1aa426b4adfcd30eeb6cc4d522cbb341b53b3a 100644 (file)
@@ -1125,14 +1125,14 @@ typedef struct {
 } ConfirmDeleteData;
 
 static void
-on_confirm_delete_response (GObject *source,
+on_confirm_delete_response (GObject      *source,
                             GAsyncResult *result,
-                            void *user_data)
+                            void         *user_data)
 {
   ConfirmDeleteData *data = user_data;
   int button;
 
-  button = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result);
+  button = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result, NULL);
 
   if (button == 1)
     {
@@ -4955,14 +4955,14 @@ request_response_and_add_to_recent_list (GtkFileChooserWidget *impl)
 }
 
 static void
-on_confirm_overwrite_response (GObject *source,
+on_confirm_overwrite_response (GObject      *source,
                                GAsyncResult *result,
-                               void *user_data)
+                               void         *user_data)
 {
   GtkFileChooserWidget *impl = user_data;
   int button;
 
-  button = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result);
+  button = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result, NULL);
 
   if (button == 1)
     {
index 8d7d3046ef64429e2ee92e963824581161099e67..d94a28fcc9d3d99d46e9d3aed477e8306824d1a4 100644 (file)
@@ -914,9 +914,9 @@ gtk_mount_operation_ask_password (GMountOperation   *mount_op,
 }
 
 static void
-question_dialog_button_clicked (GObject *source,
+question_dialog_button_clicked (GObject      *source,
                                 GAsyncResult *result,
-                                void *user_data)
+                                void         *user_data)
 {
   GtkAlertDialog *dialog = GTK_ALERT_DIALOG (source);
   GMountOperation *op = user_data;
@@ -925,7 +925,7 @@ question_dialog_button_clicked (GObject *source,
 
   operation = GTK_MOUNT_OPERATION (op);
 
-  button = gtk_alert_dialog_choose_finish (dialog, result);
+  button = gtk_alert_dialog_choose_finish (dialog, result, NULL);
   if (button >= 0)
     {
       g_mount_operation_set_choice (op, button);