Commit a24f7564 authored by Cosimo Cecchi's avatar Cosimo Cecchi

treestore: fix transformation of GValues on set

There are three bugs here:
- we should check if the value type is transformable instead of being
  compatible, since that's all we care about in order to call
  g_value_transform()
- the check is only meaningful in the direction
  passed-in-type->column-type and not viceversa
- we should init the destination GValue to the column type before
  calling g_value_transform on it, or the destination type information
  will be missing and the method will fail

Thanks to Jasper St. Pierre and Colin Walters for all the help in
tracking this down.

https://bugzilla.gnome.org/show_bug.cgi?id=677649
parent e92e7672
......@@ -853,8 +853,7 @@ gtk_tree_store_real_set_value (GtkTreeStore *tree_store,
if (! g_type_is_a (G_VALUE_TYPE (value), priv->column_headers[column]))
{
if (! (g_value_type_compatible (G_VALUE_TYPE (value), priv->column_headers[column]) &&
g_value_type_compatible (priv->column_headers[column], G_VALUE_TYPE (value))))
if (! (g_value_type_transformable (G_VALUE_TYPE (value), priv->column_headers[column])))
{
g_warning ("%s: Unable to convert from %s to %s\n",
G_STRLOC,
......@@ -862,6 +861,8 @@ gtk_tree_store_real_set_value (GtkTreeStore *tree_store,
g_type_name (priv->column_headers[column]));
return retval;
}
g_value_init (&real_value, priv->column_headers[column]);
if (!g_value_transform (value, &real_value))
{
g_warning ("%s: Unable to make conversion from %s to %s\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment