diff options
author | Not Zed <NotZed@Ximian.com> | 2004-05-21 17:12:15 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2004-05-21 17:12:15 +0800 |
commit | 323689b6584196bce37251b2ec3c81d52c815f62 (patch) | |
tree | c250c12ce20dae3c9f606a8363c4817a0c70a644 /widgets | |
parent | ffa75e6801faaffb2626d83779fe0a91a8f58d3a (diff) | |
download | gsoc2013-evolution-323689b6584196bce37251b2ec3c81d52c815f62.tar.gz gsoc2013-evolution-323689b6584196bce37251b2ec3c81d52c815f62.tar.zst gsoc2013-evolution-323689b6584196bce37251b2ec3c81d52c815f62.zip |
set a default error parent fallback. (e_error_newv): if parent is null,
2004-05-21 Not Zed <NotZed@Ximian.com>
* e-error.c (e_error_default_parent): set a default error parent
fallback.
(e_error_newv): if parent is null, see if we have a default still
alive, and use that. warn if not.
svn path=/trunk/; revision=26031
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/misc/ChangeLog | 7 | ||||
-rw-r--r-- | widgets/misc/e-error.c | 30 | ||||
-rw-r--r-- | widgets/misc/e-error.h | 2 |
3 files changed, 39 insertions, 0 deletions
diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog index a286d51d87..5eee093db6 100644 --- a/widgets/misc/ChangeLog +++ b/widgets/misc/ChangeLog @@ -1,3 +1,10 @@ +2004-05-21 Not Zed <NotZed@Ximian.com> + + * e-error.c (e_error_default_parent): set a default error parent + fallback. + (e_error_newv): if parent is null, see if we have a default still + alive, and use that. warn if not. + 2004-05-20 JP Rosevear <jpr@novell.com> * e-task-widget.c (e_task_widget_construct): only unref the mask diff --git a/widgets/misc/e-error.c b/widgets/misc/e-error.c index 2a2fd7426b..9310ef9bfc 100644 --- a/widgets/misc/e-error.c +++ b/widgets/misc/e-error.c @@ -67,6 +67,7 @@ struct _e_error_table { }; static GHashTable *error_table; +static GSList *ee_parent_list; /* ********************************************************************** */ @@ -394,8 +395,12 @@ e_error_newv(GtkWindow *parent, const char *tag, const char *arg0, va_list ap) dialog = (GtkDialog *)gtk_dialog_new(); gtk_dialog_set_has_separator(dialog, FALSE); + if (parent == NULL && ee_parent_list) + parent = (GtkWindow *)ee_parent_list->data; if (parent) gtk_window_set_transient_for((GtkWindow *)dialog, parent); + else + g_warning("No parent set, or default parent available for error dialog"); domain = alloca(strlen(tag)+1); strcpy(domain, tag); @@ -567,4 +572,29 @@ e_error_run(GtkWindow *parent, const char *tag, const char *arg0, ...) return res; } +static void +remove_parent(GtkWidget *w, GtkWidget *parent) +{ + ee_parent_list = g_slist_remove(ee_parent_list, parent); +} + +/** + * e_error_default_parent: + * @parent: + * + * Bit of a hack, set a default parent that will be used to parent any + * error boxes if none is supplied. + * + * This may be called multiple times, and the last call will be the + * main default. This function will keep track of the parents + * destruction state. + **/ +void +e_error_default_parent(struct _GtkWindow *parent) +{ + if (g_slist_find(ee_parent_list, parent) != NULL) { + ee_parent_list = g_slist_prepend(ee_parent_list, parent); + g_signal_connect(parent, "destroy", G_CALLBACK(remove_parent), parent); + } +} diff --git a/widgets/misc/e-error.h b/widgets/misc/e-error.h index 2b0bded9bc..fe097656ab 100644 --- a/widgets/misc/e-error.h +++ b/widgets/misc/e-error.h @@ -52,4 +52,6 @@ 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); +void e_error_default_parent(struct _GtkWindow *parent); + #endif /* !_E_ERROR_H */ |