scale, spinbutton: Avoid -0.0
This is a very longstanding bug; time to finally put it to rest. https://bugzilla.gnome.org/show_bug.cgi?id=118959
This commit is contained in:
@@ -1933,6 +1933,19 @@ gtk_scale_real_get_layout_offsets (GtkScale *scale,
|
|||||||
*y = value_alloc.y;
|
*y = value_alloc.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gchar *
|
||||||
|
weed_out_neg_zero (gchar *str, gint digits)
|
||||||
|
{
|
||||||
|
if (str[0] == '-')
|
||||||
|
{
|
||||||
|
gchar neg_zero[8];
|
||||||
|
snprintf (neg_zero, 8, "%0.*f", digits, -0.0);
|
||||||
|
if (strcmp (neg_zero, str) == 0)
|
||||||
|
memmove (str, str + 1, strlen (str) - 1);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Emits #GtkScale::format-value signal to format the value,
|
* Emits #GtkScale::format-value signal to format the value,
|
||||||
* if no user signal handlers, falls back to a default format.
|
* if no user signal handlers, falls back to a default format.
|
||||||
@@ -1950,7 +1963,10 @@ gtk_scale_format_value (GtkScale *scale,
|
|||||||
if (fmt)
|
if (fmt)
|
||||||
return fmt;
|
return fmt;
|
||||||
else
|
else
|
||||||
return g_strdup_printf ("%0.*f", scale->priv->digits, value);
|
{
|
||||||
|
fmt = g_strdup_printf ("%0.*f", scale->priv->digits, value);
|
||||||
|
return weed_out_neg_zero (fmt, scale->priv->digits);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -1115,6 +1115,19 @@ measure_string_width (PangoLayout *layout,
|
|||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gchar *
|
||||||
|
weed_out_neg_zero (gchar *str, gint digits)
|
||||||
|
{
|
||||||
|
if (str[0] == '-')
|
||||||
|
{
|
||||||
|
gchar neg_zero[8];
|
||||||
|
snprintf (neg_zero, 8, "%0.*f", digits, -0.0);
|
||||||
|
if (strcmp (neg_zero, str) == 0)
|
||||||
|
memmove (str, str + 1, strlen (str) - 1);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
static gchar *
|
static gchar *
|
||||||
gtk_spin_button_format_for_value (GtkSpinButton *spin_button,
|
gtk_spin_button_format_for_value (GtkSpinButton *spin_button,
|
||||||
gdouble value)
|
gdouble value)
|
||||||
@@ -1122,7 +1135,7 @@ gtk_spin_button_format_for_value (GtkSpinButton *spin_button,
|
|||||||
GtkSpinButtonPrivate *priv = spin_button->priv;
|
GtkSpinButtonPrivate *priv = spin_button->priv;
|
||||||
gchar *buf = g_strdup_printf ("%0.*f", priv->digits, value);
|
gchar *buf = g_strdup_printf ("%0.*f", priv->digits, value);
|
||||||
|
|
||||||
return buf;
|
return weed_out_neg_zero (buf, priv->digits);
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
gint
|
||||||
|
Reference in New Issue
Block a user