+/**
+ * gtk_adjustment_get_step_increment:
+ * @adjustment: a #GtkAdjustment
+ *
+ * Retrieves the step increment of the adjustment.
+ *
+ * Return value: The current step increment of the adjustment.
+ *
+ * Since: 2.14
+ **/
+gdouble
+gtk_adjustment_get_step_increment (GtkAdjustment *adjustment)
+{
+ g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0);
+
+ return adjustment->priv->step_increment;
+}
+
+/**
+ * gtk_adjustment_set_step_increment:
+ * @adjustment: a #GtkAdjustment
+ * @step_increment: the new step increment
+ *
+ * Sets the step increment of the adjustment.
+ *
+ * See gtk_adjustment_set_lower() about how to compress multiple
+ * emissions of the #GtkAdjustment::changed signal when setting multiple adjustment
+ * properties.
+ *
+ * Since: 2.14
+ **/
+void
+gtk_adjustment_set_step_increment (GtkAdjustment *adjustment,
+ gdouble step_increment)
+{
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+ if (step_increment != adjustment->priv->step_increment)
+ g_object_set (adjustment, "step-increment", step_increment, NULL);
+}
+
+/**
+ * gtk_adjustment_get_page_increment:
+ * @adjustment: a #GtkAdjustment
+ *
+ * Retrieves the page increment of the adjustment.
+ *
+ * Return value: The current page increment of the adjustment.
+ *
+ * Since: 2.14
+ **/
+gdouble
+gtk_adjustment_get_page_increment (GtkAdjustment *adjustment)
+{
+ g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0);
+
+ return adjustment->priv->page_increment;
+}
+
+/**
+ * gtk_adjustment_set_page_increment:
+ * @adjustment: a #GtkAdjustment
+ * @page_increment: the new page increment
+ *
+ * Sets the page increment of the adjustment.
+ *
+ * See gtk_adjustment_set_lower() about how to compress multiple
+ * emissions of the #GtkAdjustment::changed signal when setting multiple adjustment
+ * properties.
+ *
+ * Since: 2.14
+ **/
+void
+gtk_adjustment_set_page_increment (GtkAdjustment *adjustment,
+ gdouble page_increment)
+{
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+ if (page_increment != adjustment->priv->page_increment)
+ g_object_set (adjustment, "page-increment", page_increment, NULL);
+}
+
+/**
+ * gtk_adjustment_get_page_size:
+ * @adjustment: a #GtkAdjustment
+ *
+ * Retrieves the page size of the adjustment.
+ *
+ * Return value: The current page size of the adjustment.
+ *
+ * Since: 2.14
+ **/
+gdouble
+gtk_adjustment_get_page_size (GtkAdjustment *adjustment)
+{
+ g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0);
+
+ return adjustment->priv->page_size;
+}
+
+/**
+ * gtk_adjustment_set_page_size:
+ * @adjustment: a #GtkAdjustment
+ * @page_size: the new page size
+ *
+ * Sets the page size of the adjustment.
+ *
+ * See gtk_adjustment_set_lower() about how to compress multiple
+ * emissions of the GtkAdjustment::changed signal when setting multiple adjustment
+ * properties.
+ *
+ * Since: 2.14
+ **/
+void
+gtk_adjustment_set_page_size (GtkAdjustment *adjustment,
+ gdouble page_size)
+{
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+ if (page_size != adjustment->priv->page_size)
+ g_object_set (adjustment, "page-size", page_size, NULL);
+}
+
+/**
+ * gtk_adjustment_configure:
+ * @adjustment: a #GtkAdjustment
+ * @value: the new value
+ * @lower: the new minimum value
+ * @upper: the new maximum value
+ * @step_increment: the new step increment
+ * @page_increment: the new page increment
+ * @page_size: the new page size
+ *
+ * Sets all properties of the adjustment at once.
+ *
+ * Use this function to avoid multiple emissions of the #GtkAdjustment::changed
+ * signal. See gtk_adjustment_set_lower() for an alternative way
+ * of compressing multiple emissions of #GtkAdjustment::changed into one.
+ *
+ * Since: 2.14
+ **/
+void
+gtk_adjustment_configure (GtkAdjustment *adjustment,
+ gdouble value,
+ gdouble lower,
+ gdouble upper,
+ gdouble step_increment,
+ gdouble page_increment,
+ gdouble page_size)
+{
+ GtkAdjustmentPrivate *priv;
+ gboolean value_changed = FALSE;
+ guint64 old_stamp = adjustment_changed_stamp;
+
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+ priv = adjustment->priv;
+
+ g_object_freeze_notify (G_OBJECT (adjustment));
+
+ g_object_set (adjustment,
+ "lower", lower,
+ "upper", upper,
+ "step-increment", step_increment,
+ "page-increment", page_increment,
+ "page-size", page_size,
+ NULL);
+
+ /* don't use CLAMP() so we don't end up below lower if upper - page_size
+ * is smaller than lower
+ */
+ value = MIN (value, upper - page_size);
+ value = MAX (value, lower);
+
+ if (value != priv->value)
+ {
+ /* set value manually to make sure "changed" is emitted with the
+ * new value in place and is emitted before "value-changed"
+ */
+ priv->value = value;
+ value_changed = TRUE;
+ }
+
+ g_object_thaw_notify (G_OBJECT (adjustment));
+
+ if (old_stamp == adjustment_changed_stamp)
+ gtk_adjustment_changed (adjustment); /* force emission before ::value-changed */
+
+ if (value_changed)
+ gtk_adjustment_value_changed (adjustment);
+}
+
+/**
+ * gtk_adjustment_changed:
+ * @adjustment: a #GtkAdjustment
+ *
+ * Emits a #GtkAdjustment::changed signal from the #GtkAdjustment.
+ * This is typically called by the owner of the #GtkAdjustment after it has
+ * changed any of the #GtkAdjustment properties other than the value.
+ */
+void
+gtk_adjustment_changed (GtkAdjustment *adjustment)
+{
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+ g_signal_emit (adjustment, adjustment_signals[CHANGED], 0);
+}
+
+/**
+ * gtk_adjustment_value_changed:
+ * @adjustment: a #GtkAdjustment
+ *
+ * Emits a #GtkAdjustment::value_changed signal from the #GtkAdjustment.
+ * This is typically called by the owner of the #GtkAdjustment after it has
+ * changed the #GtkAdjustment:value property.
+ */
+void
+gtk_adjustment_value_changed (GtkAdjustment *adjustment)
+{
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+ g_signal_emit (adjustment, adjustment_signals[VALUE_CHANGED], 0);
+ g_object_notify (G_OBJECT (adjustment), "value");
+}
+
+/**
+ * gtk_adjustment_clamp_page:
+ * @adjustment: a #GtkAdjustment.
+ * @lower: the lower value.
+ * @upper: the upper value.
+ *
+ * Updates the #GtkAdjustment:value property to ensure that the range
+ * between @lower and @upper is in the current page (i.e. between
+ * #GtkAdjustment:value and #GtkAdjustment:value + #GtkAdjustment:page_size).
+ * If the range is larger than the page size, then only the start of it will
+ * be in the current page.
+ * A #GtkAdjustment::changed signal will be emitted if the value is changed.
+ */