aboutsummaryrefslogtreecommitdiffstats
path: root/e-util
diff options
context:
space:
mode:
Diffstat (limited to 'e-util')
-rw-r--r--e-util/e-activity.c15
-rw-r--r--e-util/e-activity.h2
-rw-r--r--e-util/e-file-utils.c4
3 files changed, 18 insertions, 3 deletions
diff --git a/e-util/e-activity.c b/e-util/e-activity.c
index 231de505b4..2e3a078f82 100644
--- a/e-util/e-activity.c
+++ b/e-util/e-activity.c
@@ -498,3 +498,18 @@ e_activity_set_text (EActivity *activity,
g_object_notify (G_OBJECT (activity), "text");
}
+gboolean
+e_activity_handle_cancellation (EActivity *activity,
+ const GError *error)
+{
+ gboolean handled = FALSE;
+
+ g_return_val_if_fail (E_IS_ACTIVITY (activity), FALSE);
+
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+ e_activity_set_state (activity, E_ACTIVITY_CANCELLED);
+ handled = TRUE;
+ }
+
+ return handled;
+}
diff --git a/e-util/e-activity.h b/e-util/e-activity.h
index 4602a5696e..3e56f992f8 100644
--- a/e-util/e-activity.h
+++ b/e-util/e-activity.h
@@ -84,6 +84,8 @@ void e_activity_set_state (EActivity *activity,
const gchar * e_activity_get_text (EActivity *activity);
void e_activity_set_text (EActivity *activity,
const gchar *text);
+gboolean e_activity_handle_cancellation (EActivity *activity,
+ const GError *error);
G_END_DECLS
diff --git a/e-util/e-file-utils.c b/e-util/e-file-utils.c
index 2d5ff30ff7..49fd4a07ee 100644
--- a/e-util/e-file-utils.c
+++ b/e-util/e-file-utils.c
@@ -85,9 +85,7 @@ file_replace_contents_cb (GFile *file,
g_file_replace_contents_finish (file, result, &new_etag, &error);
- if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- e_activity_set_state (context->activity, E_ACTIVITY_CANCELLED);
- else
+ if (!e_activity_handle_cancellation (context->activity, error))
e_activity_set_state (context->activity, E_ACTIVITY_COMPLETED);
if (error == NULL)