summaryrefslogtreecommitdiff
path: root/gtk/gtkrange.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-10-06 05:11:36 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-10-06 05:11:36 +0000
commitf0d016ef382658f790f9cb689fb9b93baf569dc8 (patch)
treed8a92735db496cf2719ecefe8e68d2180743de21 /gtk/gtkrange.c
parent73e7b0838c77e37b133b5b2b8df3be2b5ea38254 (diff)
downloadgtk+-f0d016ef382658f790f9cb689fb9b93baf569dc8.tar.gz
Replace a really gross way of rounding to a specified number of digits.
2004-10-06 Matthias Clasen <mclasen@redhat.com> * 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)
Diffstat (limited to 'gtk/gtkrange.c')
-rw-r--r--gtk/gtkrange.c13
1 files changed, 8 insertions, 5 deletions
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)