[evolution/gnome-2-28] Bug 610124 - Autosave errors dialogues can't be dismissed
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/gnome-2-28] Bug 610124 - Autosave errors dialogues can't be dismissed
- Date: Tue, 16 Feb 2010 18:12:50 +0000 (UTC)
commit 1bc5cdaf7904a864a6b96f106adff008435f5be9
Author: Matthew Barnes <mbarnes redhat com>
Date: Tue Feb 16 12:49:05 2010 -0500
Bug 610124 - Autosave errors dialogues can't be dismissed
composer/e-composer-autosave.c | 34 +++++++++++++++++++++++++++-------
1 files changed, 27 insertions(+), 7 deletions(-)
---
diff --git a/composer/e-composer-autosave.c b/composer/e-composer-autosave.c
index f160a69..bf78343 100644
--- a/composer/e-composer-autosave.c
+++ b/composer/e-composer-autosave.c
@@ -36,6 +36,7 @@ typedef struct _AutosaveState AutosaveState;
struct _AutosaveState {
GFile *file;
gboolean enabled;
+ gboolean error_shown;
gboolean saved;
};
@@ -73,8 +74,7 @@ composer_autosave_state_new (void)
{
AutosaveState *state;
- state = g_slice_new (AutosaveState);
- state->file = NULL;
+ state = g_slice_new0 (AutosaveState);
state->enabled = TRUE;
return state;
@@ -119,15 +119,35 @@ static void
composer_autosave_finish_cb (EMsgComposer *composer,
GAsyncResult *result)
{
+ AutosaveState *state;
GError *error = NULL;
+ state = g_object_get_data (G_OBJECT (composer), "autosave");
+ g_return_if_fail (state != NULL);
+
e_composer_autosave_snapshot_finish (composer, result, &error);
if (error != NULL) {
- e_error_run (
- GTK_WINDOW (composer),
- "mail-composer:no-autosave",
- "", error->message, NULL);
+ gchar *basename;
+
+ if (G_IS_FILE (state->file))
+ basename = g_file_get_basename (state->file);
+ else
+ basename = g_strdup (" ");
+
+ /* Only show one error dialog at a
+ * time to avoid cascading dialogs. */
+ if (!state->error_shown) {
+ state->error_shown = TRUE;
+ e_error_run (
+ GTK_WINDOW (composer),
+ "mail-composer:no-autosave",
+ basename, error->message, NULL);
+ state->error_shown = FALSE;
+ } else
+ g_warning ("%s: %s", basename, error->message);
+
+ g_free (basename);
g_error_free (error);
}
}
@@ -144,7 +164,7 @@ composer_autosave_foreach (EMsgComposer *composer)
composer_autosave_finish_cb, NULL);
}
-static gint
+static gboolean
composer_autosave_timeout (void)
{
g_list_foreach (
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]