[evolution/email-factory-3-4: 44/53] commit 2d99a4a0375d2ecc3481e60f323cef40f9a9e8fc Author: Milan Crha <mcrha redhat com> Date: Thu De
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/email-factory-3-4: 44/53] commit 2d99a4a0375d2ecc3481e60f323cef40f9a9e8fc Author: Milan Crha <mcrha redhat com> Date: Thu De
- Date: Tue, 17 Jan 2012 14:58:11 +0000 (UTC)
commit a69fb5c1a3ed9ae62490ce69fdbf1475bbdaa3ff
Author: Srinivasa Ragavan <sragavan gnome org>
Date: Tue Jan 3 13:07:54 2012 +0530
commit 2d99a4a0375d2ecc3481e60f323cef40f9a9e8fc
Author: Milan Crha <mcrha redhat com>
Date: Thu Dec 22 19:44:58 2011 +0100
Bug #357175 - IMAP alerts still too intrusive
mail/e-mail-ui-session.c | 61 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 59 insertions(+), 2 deletions(-)
---
diff --git a/mail/e-mail-ui-session.c b/mail/e-mail-ui-session.c
index 6caf2fc..697d572 100644
--- a/mail/e-mail-ui-session.c
+++ b/mail/e-mail-ui-session.c
@@ -55,6 +55,11 @@
#include "e-util/e-alert-dialog.h"
#include "e-util/e-util-private.h"
+#include "shell/e-shell.h"
+#include "shell/e-shell-view.h"
+#include "shell/e-shell-content.h"
+#include "shell/e-shell-window.h"
+
#include "libemail-engine/e-mail-folder-utils.h"
#include "libemail-engine/e-mail-junk-filter.h"
#include "libemail-engine/e-mail-session.h"
@@ -163,12 +168,16 @@ user_message_exec (struct _user_message_msg *m,
GCancellable *cancellable,
GError **error)
{
+ gboolean info_only;
GtkWindow *parent;
+ EShell *shell;
const gchar *error_type;
gint index;
GSList *iter;
- if (!m->ismain && user_message_dialog != NULL) {
+ info_only = g_slist_length (m->button_captions) <= 1;
+
+ if (!m->ismain && user_message_dialog != NULL && !info_only) {
g_queue_push_tail (&user_message_queue, mail_msg_ref (m));
return;
}
@@ -188,8 +197,56 @@ user_message_exec (struct _user_message_msg *m,
g_return_if_reached ();
}
+ shell = e_shell_get_default ();
+
+ /* try to find "mail" view to place the informational alert to */
+ if (info_only) {
+ GtkWindow *active_window;
+ EShellWindow *shell_window;
+ EShellView *shell_view;
+ EShellContent *shell_content = NULL;
+
+ /* check currently active window first, ... */
+ active_window = e_shell_get_active_window (shell);
+ if (active_window && E_IS_SHELL_WINDOW (active_window)) {
+ if (E_IS_SHELL_WINDOW (active_window)) {
+ shell_window = E_SHELL_WINDOW (active_window);
+ shell_view = e_shell_window_peek_shell_view (shell_window, "mail");
+ if (shell_view)
+ shell_content = e_shell_view_get_shell_content (shell_view);
+ }
+ }
+
+ if (!shell_content) {
+ GList *list, *iter;
+
+ list = gtk_application_get_windows (GTK_APPLICATION (shell));
+
+ /* ...then iterate through all opened windows and pick one which has it */
+ for (iter = list; iter != NULL && !shell_content; iter = g_list_next (iter)) {
+ if (E_IS_SHELL_WINDOW (iter->data)) {
+ shell_window = iter->data;
+ shell_view = e_shell_window_peek_shell_view (shell_window, "mail");
+ if (shell_view)
+ shell_content = e_shell_view_get_shell_content (shell_view);
+ }
+ }
+ }
+
+ /* when no shell-content found, which might not happen, but just in case,
+ process the information alert like usual, through an EAlertDialog machinery
+ */
+ if (shell_content) {
+ e_alert_submit (E_ALERT_SINK (shell_content), error_type, m->prompt, NULL);
+ return;
+ } else if (!m->ismain && user_message_dialog != NULL) {
+ g_queue_push_tail (&user_message_queue, mail_msg_ref (m));
+ return;
+ }
+ }
+
/* Pull in the active window from the shell to get a parent window */
- parent = e_shell_get_active_window (e_shell_get_default ());
+ parent = e_shell_get_active_window (shell);
user_message_dialog = e_alert_dialog_new_for_args (
parent, error_type, m->prompt, NULL);
g_object_set (user_message_dialog, "resizable", TRUE, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]