From 04d0e663d566edacf60d6469cf142346f6d38284 Mon Sep 17 00:00:00 2001
From: Phil Scott <phil.scott@gmail.com>
Date: Sun, 14 Feb 2021 15:27:05 -0500
Subject: [PATCH] Extends maximum size of remaining and elapsed time displayed,
 plus a failsafe

Elapsed and remaining now support > 9 hours, and if a timespan can't be rendered in that size **:**:** will be displayed
---
 .../Progress/Render_ReduceWidth.Output.verified.txt   |  6 +++---
 .../Widgets/Progress/Columns/ElapsedTimeColumn.cs     | 11 ++++++++---
 .../Widgets/Progress/Columns/RemainingTimeColumn.cs   | 11 ++++++++---
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/src/Spectre.Console.Tests/Expectations/Widgets/Progress/Render_ReduceWidth.Output.verified.txt b/src/Spectre.Console.Tests/Expectations/Widgets/Progress/Render_ReduceWidth.Output.verified.txt
index c81f6e0..c2f58f5 100644
--- a/src/Spectre.Console.Tests/Expectations/Widgets/Progress/Render_ReduceWidth.Output.verified.txt
+++ b/src/Spectre.Console.Tests/Expectations/Widgets/Progress/Render_ReduceWidth.Output.verified.txt
@@ -1,5 +1,5 @@
                     
-foo ━━━ 0% -:--:-- ⣷
-bar ━━━ 0% -:--:-- ⣷
-baz ━━━ 0% -:--:-- ⣷
+foo ━━ 0% --:--:-- ⣷
+bar ━━ 0% --:--:-- ⣷
+baz ━━ 0% --:--:-- ⣷
                     
diff --git a/src/Spectre.Console/Widgets/Progress/Columns/ElapsedTimeColumn.cs b/src/Spectre.Console/Widgets/Progress/Columns/ElapsedTimeColumn.cs
index 5a28d82..d30c49a 100644
--- a/src/Spectre.Console/Widgets/Progress/Columns/ElapsedTimeColumn.cs
+++ b/src/Spectre.Console/Widgets/Progress/Columns/ElapsedTimeColumn.cs
@@ -22,16 +22,21 @@ namespace Spectre.Console
             var elapsed = task.ElapsedTime;
             if (elapsed == null)
             {
-                return new Markup("-:--:--");
+                return new Markup("--:--:--");
             }
 
-            return new Text($"{elapsed.Value:h\\:mm\\:ss}", Style ?? Style.Plain);
+            if (elapsed.Value.TotalHours > 99)
+            {
+                return new Markup("**:**:**");
+            }
+
+            return new Text($"{elapsed.Value:hh\\:mm\\:ss}", Style ?? Style.Plain);
         }
 
         /// <inheritdoc/>
         public override int? GetColumnWidth(RenderContext context)
         {
-            return 7;
+            return 8;
         }
     }
 }
diff --git a/src/Spectre.Console/Widgets/Progress/Columns/RemainingTimeColumn.cs b/src/Spectre.Console/Widgets/Progress/Columns/RemainingTimeColumn.cs
index 2864de1..abdd99c 100644
--- a/src/Spectre.Console/Widgets/Progress/Columns/RemainingTimeColumn.cs
+++ b/src/Spectre.Console/Widgets/Progress/Columns/RemainingTimeColumn.cs
@@ -22,16 +22,21 @@ namespace Spectre.Console
             var remaining = task.RemainingTime;
             if (remaining == null)
             {
-                return new Markup("-:--:--");
+                return new Markup("--:--:--");
             }
 
-            return new Text($"{remaining.Value:h\\:mm\\:ss}", Style ?? Style.Plain);
+            if (remaining.Value.TotalHours > 99)
+            {
+                return new Markup("**:**:**");
+            }
+
+            return new Text($"{remaining.Value:hh\\:mm\\:ss}", Style ?? Style.Plain);
         }
 
         /// <inheritdoc/>
         public override int? GetColumnWidth(RenderContext context)
         {
-            return 7;
+            return 8;
         }
     }
 }