diff options
Diffstat (limited to 'e-util')
-rw-r--r-- | e-util/e-activity.c | 15 | ||||
-rw-r--r-- | e-util/e-activity.h | 2 | ||||
-rw-r--r-- | e-util/e-file-utils.c | 4 |
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) |