Add accessors for GtkRange::round-digits

Patch by Christian Dywan,
https://bugzilla.gnome.org/show_bug.cgi?id=351755
This commit is contained in:
Matthias Clasen
2011-01-15 00:08:39 -05:00
parent 8e420bca02
commit ccc3d874ef
5 changed files with 81 additions and 17 deletions

View File

@ -2482,9 +2482,11 @@ gtk_range_set_adjustment
gtk_range_get_inverted gtk_range_get_inverted
gtk_range_set_inverted gtk_range_set_inverted
gtk_range_get_value gtk_range_get_value
gtk_range_set_value
gtk_range_set_increments gtk_range_set_increments
gtk_range_set_range gtk_range_set_range
gtk_range_set_value gtk_range_get_round_digits
gtk_range_set_round_digits
GtkSensitivityType GtkSensitivityType
gtk_range_set_lower_stepper_sensitivity gtk_range_set_lower_stepper_sensitivity
gtk_range_get_lower_stepper_sensitivity gtk_range_get_lower_stepper_sensitivity

View File

@ -2050,6 +2050,7 @@ gtk_range_get_lower_stepper_sensitivity
gtk_range_get_min_slider_size gtk_range_get_min_slider_size
gtk_range_get_range_rect gtk_range_get_range_rect
gtk_range_get_restrict_to_fill_level gtk_range_get_restrict_to_fill_level
gtk_range_get_round_digits
gtk_range_get_show_fill_level gtk_range_get_show_fill_level
gtk_range_get_slider_range gtk_range_get_slider_range
gtk_range_get_slider_size_fixed gtk_range_get_slider_size_fixed
@ -2065,6 +2066,7 @@ gtk_range_set_lower_stepper_sensitivity
gtk_range_set_min_slider_size gtk_range_set_min_slider_size
gtk_range_set_range gtk_range_set_range
gtk_range_set_restrict_to_fill_level gtk_range_set_restrict_to_fill_level
gtk_range_set_round_digits
gtk_range_set_show_fill_level gtk_range_set_show_fill_level
gtk_range_set_slider_size_fixed gtk_range_set_slider_size_fixed
gtk_range_set_upper_stepper_sensitivity gtk_range_set_upper_stepper_sensitivity

View File

@ -151,7 +151,8 @@ enum {
PROP_UPPER_STEPPER_SENSITIVITY, PROP_UPPER_STEPPER_SENSITIVITY,
PROP_SHOW_FILL_LEVEL, PROP_SHOW_FILL_LEVEL,
PROP_RESTRICT_TO_FILL_LEVEL, PROP_RESTRICT_TO_FILL_LEVEL,
PROP_FILL_LEVEL PROP_FILL_LEVEL,
PROP_ROUND_DIGITS
}; };
enum { enum {
@ -376,7 +377,7 @@ gtk_range_class_init (GtkRangeClass *class)
* @returns: %TRUE to prevent other handlers from being invoked for the * @returns: %TRUE to prevent other handlers from being invoked for the
* signal, %FALSE to propagate the signal further * signal, %FALSE to propagate the signal further
* *
* The ::change-value signal is emitted when a scroll action is * The #GtkRange::change-value signal is emitted when a scroll action is
* performed on a range. It allows an application to determine the * performed on a range. It allows an application to determine the
* type of scroll event that occurred and the resultant new value. * type of scroll event that occurred and the resultant new value.
* The application can handle the event itself and return %TRUE to * The application can handle the event itself and return %TRUE to
@ -385,12 +386,12 @@ gtk_range_class_init (GtkRangeClass *class)
* reached. * reached.
* *
* The value parameter is unrounded. An application that overrides * The value parameter is unrounded. An application that overrides
* the ::change-value signal is responsible for clamping the value to * the GtkRange::change-value signal is responsible for clamping the
* the desired number of decimal digits; the default GTK+ handler * value to the desired number of decimal digits; the default GTK+
* clamps the value based on @range->round_digits. * handler clamps the value based on #GtkRange:round-digits.
* *
* It is not possible to use delayed update policies in an overridden * It is not possible to use delayed update policies in an overridden
* ::change-value handler. * #GtkRange::change-value handler.
* *
* Since: 2.6 * Since: 2.6
*/ */
@ -495,6 +496,24 @@ gtk_range_class_init (GtkRangeClass *class)
G_MAXDOUBLE, G_MAXDOUBLE,
GTK_PARAM_READWRITE)); GTK_PARAM_READWRITE));
/**
* GtkRange:round-digits:
*
* The number of digits to round the value to when
* it changes, or -1. See #GtkRange::change-value.
*
* Since: 2.24
*/
g_object_class_install_property (gobject_class,
PROP_ROUND_DIGITS,
g_param_spec_int ("round-digits",
P_("Round Digits"),
P_("The number of widgets to round the value to."),
-1,
G_MAXINT,
-1,
GTK_PARAM_READWRITE));
gtk_widget_class_install_style_property (widget_class, gtk_widget_class_install_style_property (widget_class,
g_param_spec_int ("slider-width", g_param_spec_int ("slider-width",
P_("Slider Width"), P_("Slider Width"),
@ -629,6 +648,9 @@ gtk_range_set_property (GObject *object,
case PROP_FILL_LEVEL: case PROP_FILL_LEVEL:
gtk_range_set_fill_level (range, g_value_get_double (value)); gtk_range_set_fill_level (range, g_value_get_double (value));
break; break;
case PROP_ROUND_DIGITS:
gtk_range_set_round_digits (range, g_value_get_int (value));
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -670,6 +692,9 @@ gtk_range_get_property (GObject *object,
case PROP_FILL_LEVEL: case PROP_FILL_LEVEL:
g_value_set_double (value, gtk_range_get_fill_level (range)); g_value_set_double (value, gtk_range_get_fill_level (range));
break; break;
case PROP_ROUND_DIGITS:
g_value_set_int (value, gtk_range_get_round_digits (range));
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -4055,11 +4080,45 @@ _gtk_range_get_stop_positions (GtkRange *range,
return priv->n_marks; return priv->n_marks;
} }
/**
* gtk_range_set_round_digits:
* @range: a #GtkRange
* @round_digits: the precision in digits, or -1
*
* Sets the number of digits to round the value to when
* it changes. See #GtkRange::change-value.
*
* Since: 2.24
*/
void void
_gtk_range_set_round_digits (GtkRange *range, gtk_range_set_round_digits (GtkRange *range,
gint round_digits) gint round_digits)
{ {
g_return_if_fail (GTK_IS_RANGE (range));
g_return_if_fail (round_digits >= -1);
range->priv->round_digits = round_digits; range->priv->round_digits = round_digits;
g_object_notify (G_OBJECT (range), "round-digits");
}
/**
* gtk_range_get_round_digits:
* @range: a #GtkRange
*
* Gets the number of digits to round the value to when
* it changes. See #GtkRange::change-value.
*
* Return value: the number of digits to round to
*
* Since: 2.24
*/
gint
gtk_range_get_round_digits (GtkRange *range)
{
g_return_val_if_fail (GTK_IS_RANGE (range), -1);
return range->priv->round_digits;
} }
void void

View File

@ -143,6 +143,9 @@ gboolean gtk_range_get_restrict_to_fill_level (GtkRange *range
void gtk_range_set_fill_level (GtkRange *range, void gtk_range_set_fill_level (GtkRange *range,
gdouble fill_level); gdouble fill_level);
gdouble gtk_range_get_fill_level (GtkRange *range); gdouble gtk_range_get_fill_level (GtkRange *range);
void gtk_range_set_round_digits (GtkRange *range,
gint round_digits);
gint gtk_range_get_round_digits (GtkRange *range);
/* internal API */ /* internal API */
gdouble _gtk_range_get_wheel_delta (GtkRange *range, gdouble _gtk_range_get_wheel_delta (GtkRange *range,
@ -153,8 +156,6 @@ void _gtk_range_set_stop_values (GtkRange *range
gint n_values); gint n_values);
gint _gtk_range_get_stop_positions (GtkRange *range, gint _gtk_range_get_stop_positions (GtkRange *range,
gint **values); gint **values);
void _gtk_range_set_round_digits (GtkRange *range,
gint round_digits);
void _gtk_range_set_steppers (GtkRange *range, void _gtk_range_set_steppers (GtkRange *range,
gboolean has_a, gboolean has_a,
gboolean has_b, gboolean has_b,

View File

@ -443,7 +443,7 @@ gtk_scale_init (GtkScale *scale)
priv->draw_value = TRUE; priv->draw_value = TRUE;
priv->value_pos = GTK_POS_TOP; priv->value_pos = GTK_POS_TOP;
priv->digits = 1; priv->digits = 1;
_gtk_range_set_round_digits (range, priv->digits); gtk_range_set_round_digits (range, priv->digits);
gtk_scale_orientation_notify (range, NULL); gtk_scale_orientation_notify (range, NULL);
g_signal_connect (scale, "notify::orientation", g_signal_connect (scale, "notify::orientation",
@ -613,7 +613,7 @@ gtk_scale_set_digits (GtkScale *scale,
{ {
priv->digits = digits; priv->digits = digits;
if (priv->draw_value) if (priv->draw_value)
_gtk_range_set_round_digits (range, digits); gtk_range_set_round_digits (range, digits);
_gtk_scale_clear_layout (scale); _gtk_scale_clear_layout (scale);
gtk_widget_queue_resize (GTK_WIDGET (scale)); gtk_widget_queue_resize (GTK_WIDGET (scale));
@ -662,9 +662,9 @@ gtk_scale_set_draw_value (GtkScale *scale,
{ {
priv->draw_value = draw_value; priv->draw_value = draw_value;
if (draw_value) if (draw_value)
_gtk_range_set_round_digits (GTK_RANGE (scale), priv->digits); gtk_range_set_round_digits (GTK_RANGE (scale), priv->digits);
else else
_gtk_range_set_round_digits (GTK_RANGE (scale), -1); gtk_range_set_round_digits (GTK_RANGE (scale), -1);
_gtk_scale_clear_layout (scale); _gtk_scale_clear_layout (scale);