diff --git a/ChangeLog b/ChangeLog index 255ddb4aa8..f7ca661a86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-10-06 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_real_change_value): Replace a really + gross way of rounding to a specified number of digits. (#145232, + Peter Zelezny, patch by Soeren Sandmann) + Wed Oct 6 00:45:04 2004 * gdk/gdkwindow.c (gdk_window_is_viewable): check the iteration window diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 255ddb4aa8..f7ca661a86 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +2004-10-06 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_real_change_value): Replace a really + gross way of rounding to a specified number of digits. (#145232, + Peter Zelezny, patch by Soeren Sandmann) + Wed Oct 6 00:45:04 2004 * gdk/gdkwindow.c (gdk_window_is_viewable): check the iteration window diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 255ddb4aa8..f7ca661a86 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +2004-10-06 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_real_change_value): Replace a really + gross way of rounding to a specified number of digits. (#145232, + Peter Zelezny, patch by Soeren Sandmann) + Wed Oct 6 00:45:04 2004 * gdk/gdkwindow.c (gdk_window_is_viewable): check the iteration window diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 255ddb4aa8..f7ca661a86 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +2004-10-06 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_real_change_value): Replace a really + gross way of rounding to a specified number of digits. (#145232, + Peter Zelezny, patch by Soeren Sandmann) + Wed Oct 6 00:45:04 2004 * gdk/gdkwindow.c (gdk_window_is_viewable): check the iteration window diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index fe0b7ab711..80240ef600 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -2390,12 +2390,15 @@ gtk_range_real_change_value (GtkRange *range, if (range->round_digits >= 0) { - char buffer[128]; + glong power; + gint i; - /* This is just so darn lame. */ - g_snprintf (buffer, 128, "%0.*f", - range->round_digits, value); - sscanf (buffer, "%lf", &value); + i = range->round_digits; + power = 1; + while (i--) + power *= 10; + + value = floor ((value * power) + 0.5) / power; } if (range->adjustment->value != value)