aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-activity.c
diff options
context:
space:
mode:
Diffstat (limited to 'e-util/e-activity.c')
-rw-r--r--e-util/e-activity.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/e-util/e-activity.c b/e-util/e-activity.c
index 2c0ba6adf0..1c1655f010 100644
--- a/e-util/e-activity.c
+++ b/e-util/e-activity.c
@@ -40,6 +40,10 @@ struct _EActivityPrivate {
gchar *icon_name;
gchar *text;
gdouble percent;
+
+ /* Whether to emit a runtime warning if we
+ * have to suppress a bogus percent value. */
+ gboolean warn_bogus_percent;
};
enum {
@@ -222,6 +226,19 @@ activity_describe (EActivity *activity)
percent = e_activity_get_percent (activity);
state = e_activity_get_state (activity);
+ /* Sanity check the percentage. */
+ if (percent > 100.0) {
+ if (activity->priv->warn_bogus_percent) {
+ g_warning (
+ "Nonsensical (%d%% complete) reported on "
+ "activity \"%s\"", (gint) (percent), text);
+ activity->priv->warn_bogus_percent = FALSE;
+ }
+ percent = -1.0; /* suppress it */
+ } else {
+ activity->priv->warn_bogus_percent = TRUE;
+ }
+
if (state == E_ACTIVITY_CANCELLED) {
/* Translators: This is a cancelled activity. */
g_string_printf (string, _("%s (cancelled)"), text);
@@ -338,6 +355,8 @@ e_activity_init (EActivity *activity)
{
activity->priv = G_TYPE_INSTANCE_GET_PRIVATE (
activity, E_TYPE_ACTIVITY, EActivityPrivate);
+
+ activity->priv->warn_bogus_percent = TRUE;
}
EActivity *