aboutsummaryrefslogtreecommitdiffstats
path: root/e-util
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2008-02-08 22:43:44 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2008-02-08 22:43:44 +0800
commit974e152f9bbc98a81c6f12ecd2fac08023d35302 (patch)
tree9d8c3f17b2201ebce7ca9c5601aba6ca18c6a08a /e-util
parent05438a2dad5111faa4e3e6551f4cc8d9be56b092 (diff)
downloadgsoc2013-evolution-974e152f9bbc98a81c6f12ecd2fac08023d35302.tar.gz
gsoc2013-evolution-974e152f9bbc98a81c6f12ecd2fac08023d35302.tar.zst
gsoc2013-evolution-974e152f9bbc98a81c6f12ecd2fac08023d35302.zip
** Fixes part of bug #509741
2008-02-08 Matthew Barnes <mbarnes@redhat.com> ** Fixes part of bug #509741 * mail/mail-session.c (user_message_exec): Use the number of dialog buttons as a heuristic for whether to display a message in the status bar or immediately present the dialog to the user. * e-util/e-error.c (e_error_newv): If the error dialog has no primary text, fallback to the window title for the "primary" data key. This is what gets displayed in the status bar. * e-util/e-error.c (e_error_count_buttons): New function counts buttons in a dialog's action area. svn path=/trunk/; revision=34977
Diffstat (limited to 'e-util')
-rw-r--r--e-util/ChangeLog12
-rw-r--r--e-util/e-error.c33
-rw-r--r--e-util/e-error.h3
3 files changed, 47 insertions, 1 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog
index b9489d1a25..98cea5349d 100644
--- a/e-util/ChangeLog
+++ b/e-util/ChangeLog
@@ -1,3 +1,15 @@
+2008-02-08 Matthew Barnes <mbarnes@redhat.com>
+
+ ** Fixes part of bug #509741
+
+ * e-error.c (e_error_newv):
+ If the error dialog has no primary text, fallback to the window
+ title for the "primary" data key. This is what gets displayed
+ in the status bar.
+
+ * e-error.c (e_error_count_buttons):
+ New function counts buttons in a dialog's action area.
+
2008-01-24 Tor Lillqvist <tml@novell.com>
* e-icon-factory.c (e_icon_factory_init): Construct pathname under
diff --git a/e-util/e-error.c b/e-util/e-error.c
index 007d910f0d..e47869f32a 100644
--- a/e-util/e-error.c
+++ b/e-util/e-error.c
@@ -533,7 +533,8 @@ e_error_newv(GtkWindow *parent, const char *tag, const char *arg0, va_list ap)
ee_build_label(oerr, dgettext(table->translation_domain, e->primary), args);
perr = g_strdup (oerr->str);
g_string_free (oerr, TRUE);
- }
+ } else
+ perr = g_strdup (gtk_window_get_title (GTK_WINDOW (dialog)));
if (e->secondary) {
ee_build_label(out, dgettext(table->translation_domain, e->secondary), args);
@@ -640,6 +641,36 @@ e_error_run(GtkWindow *parent, const char *tag, const char *arg0, ...)
return res;
}
+/**
+ * e_error_count_buttons:
+ * @dialog: a #GtkDialog
+ *
+ * Counts the number of buttons in @dialog's action area.
+ *
+ * Returns: number of action area buttons
+ **/
+guint
+e_error_count_buttons (GtkDialog *dialog)
+{
+ GtkContainer *action_area;
+ GList *children, *iter;
+ guint n_buttons = 0;
+
+ g_return_val_if_fail (GTK_DIALOG (dialog), 0);
+
+ action_area = GTK_CONTAINER (dialog->action_area);
+ children = gtk_container_get_children (action_area);
+
+ /* Iterate over the children looking for buttons. */
+ for (iter = children; iter != NULL; iter = iter->next)
+ if (GTK_IS_BUTTON (iter->data))
+ n_buttons++;
+
+ g_list_free (children);
+
+ return n_buttons;
+}
+
static void
remove_parent(GtkWidget *w, GtkWidget *parent)
{
diff --git a/e-util/e-error.h b/e-util/e-error.h
index cb32a4dadb..1cf3aca3bb 100644
--- a/e-util/e-error.h
+++ b/e-util/e-error.h
@@ -23,6 +23,7 @@
#define _E_ERROR_H
#include <stdarg.h>
+#include <gtk/gtk.h>
struct _GtkWindow;
@@ -54,6 +55,8 @@ struct _GtkWidget *e_error_newv(struct _GtkWindow *parent, const char *tag, cons
int e_error_run(struct _GtkWindow *parent, const char *tag, const char *arg0, ...);
int e_error_runv(struct _GtkWindow *parent, const char *tag, const char *arg0, va_list ap);
+guint e_error_count_buttons (GtkDialog *dialog);
+
void e_error_default_parent(struct _GtkWindow *parent);
#endif /* !_E_ERROR_H */