GtkScalePrivate *priv = gtk_scale_get_instance_private (scale);
GtkAdjustment *adjustment = gtk_range_get_adjustment (GTK_RANGE (scale));
double lowest_value, highest_value;
- char *old_text;
char *text;
int size = 0;
int min;
lowest_value = gtk_adjustment_get_lower (adjustment);
highest_value = gtk_adjustment_get_upper (adjustment);
- old_text = g_strdup (gtk_label_get_label (GTK_LABEL (priv->value_widget)));
gtk_widget_set_size_request (priv->value_widget, -1, -1);
text = gtk_scale_format_value (scale, lowest_value);
size = MAX (size, min);
g_free (text);
+ text = gtk_scale_format_value (scale, gtk_adjustment_get_value (adjustment));
gtk_widget_set_size_request (priv->value_widget, size, -1);
- gtk_label_set_label (GTK_LABEL (priv->value_widget), old_text);
- g_free (old_text);
+ gtk_label_set_label (GTK_LABEL (priv->value_widget), text);
+ g_free (text);
}
static void
if (priv->draw_value)
gtk_range_set_round_digits (range, digits);
+ if (priv->value_widget)
+ update_label_request (scale);
+
gtk_widget_queue_resize (GTK_WIDGET (scale));
g_object_notify_by_pspec (G_OBJECT (scale), properties[PROP_DIGITS]);
priv->draw_value = draw_value;
if (draw_value)
{
- char *txt;
-
- txt = gtk_scale_format_value (scale,
- gtk_adjustment_get_value (gtk_range_get_adjustment (GTK_RANGE (scale))));
-
priv->value_widget = g_object_new (GTK_TYPE_LABEL,
"css-name", "value",
- "label", txt,
NULL);
- g_free (txt);
gtk_widget_insert_after (priv->value_widget, GTK_WIDGET (scale), NULL);
gtk_range_set_round_digits (GTK_RANGE (scale), priv->digits);
GDestroyNotify destroy_notify)
{
GtkScalePrivate *priv = gtk_scale_get_instance_private (scale);
- GtkAdjustment *adjustment;
- char *text;
g_return_if_fail (GTK_IS_SCALE (scale));
priv->format_value_func_user_data = user_data;
priv->format_value_func_destroy_notify = destroy_notify;
- if (!priv->value_widget)
- return;
-
- update_label_request (scale);
-
- adjustment = gtk_range_get_adjustment (GTK_RANGE (scale));
- text = gtk_scale_format_value (scale,
- gtk_adjustment_get_value (adjustment));
- gtk_label_set_label (GTK_LABEL (priv->value_widget), text);
-
- g_free (text);
+ if (priv->value_widget)
+ update_label_request (scale);
}