summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Dahlin <johan@gnome.org>2008-05-30 11:04:30 +0000
committerJohan Dahlin <johan@src.gnome.org>2008-05-30 11:04:30 +0000
commit2f5d8366351ac12bbaa08cc5cd3182d19b093e66 (patch)
tree0f213f883556ba63f032a5d55e1ac9bc14cdb666
parent3b3bf932791b0391cb4a232136742efb8f1ac518 (diff)
downloadgdk-pixbuf-2f5d8366351ac12bbaa08cc5cd3182d19b093e66.tar.gz
Merge from trunk:
2008-05-25 Johan Dahlin <johan@gnome.org> Merge from trunk: * gtk/gtkliststore.c: (list_store_text): Use type of the correct column (#529535). * tests/buildertest.c: (test_list_store): Add test. svn path=/branches/gtk-2-12/; revision=20252
-rw-r--r--ChangeLog8
-rw-r--r--gtk/gtkliststore.c4
-rw-r--r--tests/buildertest.c71
3 files changed, 81 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index dde94e983..7cf51ac3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-25 Johan Dahlin <johan@gnome.org>
+
+ Merge from trunk:
+
+ * gtk/gtkliststore.c: (list_store_text): Use type of the correct
+ column (#529535).
+ * tests/buildertest.c: (test_list_store): Add test.
+
2008-05-30 Tor Lillqvist <tml@novell.com>
Bug 533108 - leak of GDI region in function 'handle_wm_paint'
diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c
index 617a5fedd..81486b177 100644
--- a/gtk/gtkliststore.c
+++ b/gtk/gtkliststore.c
@@ -2197,7 +2197,7 @@ list_store_text (GMarkupParseContext *context,
string = g_strndup (text, text_len);
if (!gtk_builder_value_from_string_type (data->builder,
- data->column_types[i],
+ data->column_types[info->id],
string,
&data->values[i],
&tmp_error))
@@ -2206,7 +2206,7 @@ list_store_text (GMarkupParseContext *context,
tmp_error->domain,
tmp_error->code,
"Could not convert '%s' to type %s: %s\n",
- text, g_type_name (data->column_types[i]),
+ text, g_type_name (data->column_types[info->id]),
tmp_error->message);
g_error_free (tmp_error);
}
diff --git a/tests/buildertest.c b/tests/buildertest.c
index aed4aeaa9..e3e22bd3c 100644
--- a/tests/buildertest.c
+++ b/tests/buildertest.c
@@ -545,6 +545,31 @@ gboolean test_list_store (void)
" </data>"
" </object>"
"</interface>";
+ const char buffer3[] =
+ "<interface>"
+ " <object class=\"GtkListStore\" id=\"liststore1\">"
+ " <columns>"
+ " <column type=\"gchararray\"/>"
+ " <column type=\"gchararray\"/>"
+ " <column type=\"gint\"/>"
+ " </columns>"
+ " <data>"
+ " <row>"
+ " <col id=\"1\" context=\"foo\">Doe</col>"
+ " <col id=\"0\" translatable=\"yes\">John</col>"
+ " <col id=\"2\" comment=\"foobar\">25</col>"
+ " </row>"
+ " <row>"
+ " <col id=\"2\">50</col>"
+ " <col id=\"1\">Dole</col>"
+ " <col id=\"0\">Johan</col>"
+ " </row>"
+ " <row>"
+ " <col id=\"2\">19</col>"
+ " </row>"
+ " </data>"
+ " </object>"
+ "</interface>";
GtkBuilder *builder;
GObject *store;
GtkTreeIter iter;
@@ -594,6 +619,52 @@ gboolean test_list_store (void)
g_return_val_if_fail (age == 50, FALSE);
g_return_val_if_fail (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter) == FALSE, FALSE);
+ builder = builder_new_from_string (buffer3, -1, NULL);
+ store = gtk_builder_get_object (builder, "liststore1");
+ g_assert (gtk_tree_model_get_n_columns (GTK_TREE_MODEL (store)) == 3);
+ g_assert (gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), 0) == G_TYPE_STRING);
+ g_assert (gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), 1) == G_TYPE_STRING);
+ g_assert (gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), 2) == G_TYPE_INT);
+
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter) == TRUE);
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+ 0, &surname,
+ 1, &lastname,
+ 2, &age,
+ -1);
+ g_assert (surname != NULL);
+ g_assert (strcmp (surname, "John") == 0);
+ g_free (surname);
+ g_assert (lastname != NULL);
+ g_assert (strcmp (lastname, "Doe") == 0);
+ g_free (lastname);
+ g_assert (age == 25);
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter) == TRUE);
+
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+ 0, &surname,
+ 1, &lastname,
+ 2, &age,
+ -1);
+ g_assert (surname != NULL);
+ g_assert (strcmp (surname, "Johan") == 0);
+ g_free (surname);
+ g_assert (lastname != NULL);
+ g_assert (strcmp (lastname, "Dole") == 0);
+ g_free (lastname);
+ g_assert (age == 50);
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter) == TRUE);
+
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+ 0, &surname,
+ 1, &lastname,
+ 2, &age,
+ -1);
+ g_assert (surname == NULL);
+ g_assert (lastname == NULL);
+ g_assert (age == 19);
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter) == FALSE);
+
g_object_unref (builder);
return TRUE;