}
}
+static double
+gtk_adjustment_sanitize_value (GtkAdjustment *self,
+ double value)
+{
+ GtkAdjustmentPrivate *priv = gtk_adjustment_get_instance_private (self);
+
+ /* don't use CLAMP() so we don't end up below lower if upper - page_size
+ * is smaller than lower
+ */
+ value = MIN (value, priv->upper - priv->page_size);
+ value = MAX (value, priv->lower);
+
+ return value;
+}
+
/**
* gtk_adjustment_new:
* @value: the initial value
{
GtkAdjustmentPrivate *priv = gtk_adjustment_get_instance_private (adjustment);
+ value = gtk_adjustment_sanitize_value (adjustment, value);
+
if (priv->value != value)
{
priv->value = value;
{
GtkAdjustmentPrivate *priv = gtk_adjustment_get_instance_private (adjustment);
- /* don't use CLAMP() so we don't end up below lower if upper - page_size
- * is smaller than lower
- */
- value = MIN (value, priv->upper - priv->page_size);
- value = MAX (value, priv->lower);
+ value = gtk_adjustment_sanitize_value (adjustment, value);
if (animate && priv->duration != 0 && priv->clock != NULL)
{
gtk_adjustment_set_page_increment (adjustment, page_increment);
gtk_adjustment_set_page_size (adjustment, page_size);
- /* 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);
+ value = gtk_adjustment_sanitize_value (adjustment, value);
if (value != priv->value)
{
}
}
+static void
+add_type_name (GPtrArray *type_names,
+ GType type)
+{
+ char *options[2];
+
+ options[0] = type_name_mangle (g_type_name (type), FALSE);
+ g_ptr_array_add (type_names, options[0]);
+
+ options[1] = type_name_mangle (g_type_name (type), TRUE);
+ if (g_str_equal (options[0], options[1]))
+ g_free (options[1]);
+ else
+ g_ptr_array_add (type_names, options[1]);
+}
+
const char *getters[] = { "get", "is", "ref" };
const char *setters[] = { "set" };
const char *property_name)
{
GPtrArray *options;
- char *type_name_options[2];
- guint n_type_name_options, n_verbs;
+ GPtrArray *type_names;
+ GType *interfaces;
+ guint n_verbs, n_interfaces;
const char **verbs;
guint i, j;
n_verbs = G_N_ELEMENTS (setters);
}
- type_name_options[0] = type_name_mangle (g_type_name (type), FALSE);
- type_name_options[1] = type_name_mangle (g_type_name (type), TRUE);
- if (g_str_equal (type_name_options[0], type_name_options[1]))
- n_type_name_options = 1;
- else
- n_type_name_options = 2;
+ type_names = g_ptr_array_new_with_free_func (g_free);
+ add_type_name (type_names, type);
+ interfaces = g_type_interfaces (type, &n_interfaces);
+ for (i = 0; i < n_interfaces; i++)
+ add_type_name (type_names, interfaces[i]);
+ g_free (interfaces);
options = g_ptr_array_new ();
- for (i = 0; i < n_type_name_options; i++)
+ for (i = 0; i < type_names->len; i++)
{
for (j = 0; j < n_verbs; j++)
{
GString *str;
- str = g_string_new (type_name_options[i]);
+ str = g_string_new (g_ptr_array_index (type_names, i));
g_string_append_c (str, '_');
g_string_append (str, verbs[j]);
g_string_append_c (str, '_');
GString *str;
/* try without a verb */
- str = g_string_new (type_name_options[i]);
+ str = g_string_new (g_ptr_array_index (type_names, i));
g_string_append_c (str, '_');
property_name_mangle (str, property_name);
}
}
- g_free (type_name_options[0]);
- g_free (type_name_options[1]);
+ g_ptr_array_free (type_names, TRUE);
g_ptr_array_add (options, NULL);
}
g_test_message ("No %s for property %s::%s", get ? "getter" : "setter", g_type_name (type), property_name);
- for (i = 0; names[i] != NULL; i++)
+ if (g_test_verbose ())
{
- g_test_message (" %s", names[i]);
+ for (i = 0; names[i] != NULL; i++)
+ {
+ g_test_message (" %s", names[i]);
+ }
}
g_test_fail ();