From 52df89dc6ce7c3c58dcac6b781b8ff540336fce8 Mon Sep 17 00:00:00 2001
From: ZenWalker <scow@riseup.net>
Date: Wed, 6 Sep 2017 16:22:42 +0200
Subject: [PATCH] Fix: idle slider display bug

Fixes #101
---
 src/mate-screensaver-preferences.c | 63 ++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/src/mate-screensaver-preferences.c b/src/mate-screensaver-preferences.c
index d3a11a7a..f48a369b 100644
--- a/src/mate-screensaver-preferences.c
+++ b/src/mate-screensaver-preferences.c
@@ -942,6 +942,8 @@ time_to_string_text (long time)
 	char *secs, *mins, *hours, *string;
 	int   sec, min, hour;
 
+	int   inc_len, len_hour, len_minutes;
+
 	sec = time % 60;
 	time = time - sec;
 	min = (time % (60 * 60)) / 60;
@@ -957,6 +959,37 @@ time_to_string_text (long time)
 	secs = g_strdup_printf (ngettext ("%d second",
 	                                  "%d seconds", sec), sec);
 
+	inc_len = strlen (g_strdup_printf (_("%s %s"), 
+	                  g_strdup_printf (ngettext ("%d hour",
+	                                             "%d hours", 1), 1),
+	                  g_strdup_printf (ngettext ("%d minute",
+	                                             "%d minutes", 59), 59))) - 1;
+
+	len_hour = strlen (g_strdup_printf (ngettext ("%d hour",
+	                                              "%d hours", 1), 1));
+
+	len_minutes = 0;
+
+	for (int n = 2; n < 60; n++)
+	{
+		if (n < 10)
+		{
+			if ((strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+	                                                                        "%d minutes", n), n), NULL)) - 2) > len_minutes)
+
+				len_minutes = strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+	                                                                                         "%d minutes", n), n), NULL)) - 2;
+		}
+		else
+		{
+			if ((strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+	                                                                        "%d minutes", n), n), NULL)) - 3) > len_minutes)
+
+				len_minutes = strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+	                                                                                         "%d minutes", n), n), NULL)) - 3;
+		}
+	}
+
 	if (hour > 0)
 	{
 		if (sec > 0)
@@ -986,6 +1019,36 @@ time_to_string_text (long time)
 		{
 			/* minutes */
 			string = g_strdup_printf (_("%s"), mins);
+
+			if (min < 10)
+			{
+				if (min == 1)
+					while (strlen (string) != (2 * len_hour + inc_len - 4))
+					{
+						if (strlen (string) % 2 == 0)
+							string = g_strconcat (string, " ", NULL);
+						else
+							string = g_strconcat (" " , string, NULL);
+					}
+				else
+					while (strlen (string) != (len_minutes + inc_len))
+					{
+						if (strlen (string) % 2 == 0)
+							string = g_strconcat (string, " ", NULL);
+						else
+							string = g_strconcat (" " , string, NULL);
+					}
+			}
+			else
+			{
+				while (strlen (string) != (len_minutes + inc_len - 1))
+				{
+					if (strlen (string) % 2 == 0)
+						string = g_strconcat (string, " ", NULL);
+					else
+						string = g_strconcat (" " , string, NULL);
+				}
+			}
 		}
 	}
 	else
-- 
GitLab