diff options
Diffstat (limited to 'e-util')
-rw-r--r-- | e-util/ChangeLog | 12 | ||||
-rw-r--r-- | e-util/e-error.c | 33 | ||||
-rw-r--r-- | e-util/e-error.h | 3 |
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 */ |