[evolution] [Addressbook] Show editor errors above editor window



commit c8f9a064a64090b854792adbbcae816cebdea55e
Author: Milan Crha <mcrha redhat com>
Date:   Wed Aug 7 09:33:51 2013 +0200

    [Addressbook] Show editor errors above editor window
    
    An address book editor error was shown about active EShell's window,
    which means switching to other application and back made the editor
    in the background, but, more importantly, the editor could be
    selected and the error was in the background, thus it seemed like
    being stuck, it didn't respond to any button click, until the error
    was dismissed.

 addressbook/gui/contact-editor/e-contact-editor.c  |    6 +++---
 .../contact-list-editor/e-contact-list-editor.c    |    6 +++---
 addressbook/gui/widgets/e-addressbook-model.c      |    2 +-
 .../gui/widgets/e-addressbook-table-adapter.c      |    2 +-
 addressbook/gui/widgets/e-addressbook-view.c       |    2 +-
 addressbook/gui/widgets/eab-gui-util.c             |   11 ++++++++---
 addressbook/gui/widgets/eab-gui-util.h             |    1 +
 7 files changed, 18 insertions(+), 12 deletions(-)
---
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c 
b/addressbook/gui/contact-editor/e-contact-editor.c
index 8f7bc9e..0d3f41e 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -224,7 +224,7 @@ e_contact_editor_contact_added (EABEditor *editor,
            g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
                return;
 
-       eab_error_dialog (NULL, _("Error adding contact"), error);
+       eab_error_dialog (NULL, eab_editor_get_window (editor), _("Error adding contact"), error);
 }
 
 static void
@@ -239,7 +239,7 @@ e_contact_editor_contact_modified (EABEditor *editor,
            g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
                return;
 
-       eab_error_dialog (NULL, _("Error modifying contact"), error);
+       eab_error_dialog (NULL, eab_editor_get_window (editor), _("Error modifying contact"), error);
 }
 
 static void
@@ -254,7 +254,7 @@ e_contact_editor_contact_deleted (EABEditor *editor,
            g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
                return;
 
-       eab_error_dialog (NULL, _("Error removing contact"), error);
+       eab_error_dialog (NULL, eab_editor_get_window (editor), _("Error removing contact"), error);
 }
 
 static void
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c 
b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
index f58f433..2eac787 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
@@ -1591,7 +1591,7 @@ contact_list_editor_contact_added (EABEditor *editor,
            g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
                return;
 
-       eab_error_dialog (NULL, _("Error adding list"), error);
+       eab_error_dialog (NULL, eab_editor_get_window (editor), _("Error adding list"), error);
 }
 
 static void
@@ -1606,7 +1606,7 @@ contact_list_editor_contact_modified (EABEditor *editor,
            g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
                return;
 
-       eab_error_dialog (NULL, _("Error modifying list"), error);
+       eab_error_dialog (NULL, eab_editor_get_window (editor), _("Error modifying list"), error);
 }
 
 static void
@@ -1621,7 +1621,7 @@ contact_list_editor_contact_deleted (EABEditor *editor,
            g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
                return;
 
-       eab_error_dialog (NULL, _("Error removing list"), error);
+       eab_error_dialog (NULL, eab_editor_get_window (editor), _("Error removing list"), error);
 }
 
 static void
diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c
index 00c2357..683eed3 100644
--- a/addressbook/gui/widgets/e-addressbook-model.c
+++ b/addressbook/gui/widgets/e-addressbook-model.c
@@ -364,7 +364,7 @@ client_view_ready_cb (GObject *source_object,
                client_view = NULL;
 
        if (error) {
-               eab_error_dialog (NULL, _("Error getting book view"), error);
+               eab_error_dialog (NULL, NULL, _("Error getting book view"), error);
                g_error_free (error);
                return;
        }
diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c 
b/addressbook/gui/widgets/e-addressbook-table-adapter.c
index ee1ba7c..a7f1f6b 100644
--- a/addressbook/gui/widgets/e-addressbook-table-adapter.c
+++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c
@@ -200,7 +200,7 @@ contact_modified_cb (EBookClient *book_client,
                      gpointer user_data)
 {
        if (error)
-               eab_error_dialog (NULL, _("Error modifying card"), error);
+               eab_error_dialog (NULL, NULL, _("Error modifying card"), error);
 }
 
 static void
diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c
index b2dd4c9..38d7196 100644
--- a/addressbook/gui/widgets/e-addressbook-view.c
+++ b/addressbook/gui/widgets/e-addressbook-view.c
@@ -1249,7 +1249,7 @@ report_and_free_error_if_any (GError *error)
                        e_shell_get_active_window (NULL),
                        "addressbook:contact-delete-error-perm", NULL);
        } else {
-               eab_error_dialog (NULL, _("Failed to delete contact"), error);
+               eab_error_dialog (NULL, NULL, _("Failed to delete contact"), error);
        }
 
        g_error_free (error);
diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c
index 2967ca9..5f155ad 100644
--- a/addressbook/gui/widgets/eab-gui-util.c
+++ b/addressbook/gui/widgets/eab-gui-util.c
@@ -77,6 +77,7 @@ typedef enum {
 
 void
 eab_error_dialog (EAlertSink *alert_sink,
+                 GtkWindow *parent,
                   const gchar *msg,
                   const GError *error)
 {
@@ -86,11 +87,15 @@ eab_error_dialog (EAlertSink *alert_sink,
                                alert_sink,
                                "addressbook:generic-error",
                                msg, error->message, NULL);
-               else
+               else {
+                       if (!parent)
+                               parent = e_shell_get_active_window (NULL);
+
                        e_alert_run_dialog_for_args (
-                               e_shell_get_active_window (NULL),
+                               parent,
                                "addressbook:generic-error",
                                msg, error->message, NULL);
+               }
        }
 }
 
@@ -490,7 +495,7 @@ contact_added_cb (EBookClient *book_client,
        if (error && !g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) &&
            !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
                process->book_status = FALSE;
-               eab_error_dialog (process->alert_sink, _("Error adding contact"), error);
+               eab_error_dialog (process->alert_sink, NULL, _("Error adding contact"), error);
        } else if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) ||
            g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
                process->book_status = FALSE;
diff --git a/addressbook/gui/widgets/eab-gui-util.h b/addressbook/gui/widgets/eab-gui-util.h
index d6c6cb2..f169f8b 100644
--- a/addressbook/gui/widgets/eab-gui-util.h
+++ b/addressbook/gui/widgets/eab-gui-util.h
@@ -32,6 +32,7 @@
 G_BEGIN_DECLS
 
 void           eab_error_dialog                (EAlertSink *alert_sink,
+                                                GtkWindow *parent,
                                                 const gchar *msg,
                                                 const GError *error);
 void           eab_load_error_dialog           (GtkWidget *parent,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]