Also test scrolling to a new row in a mixed height model

This commit is contained in:
Kristian Rietveld 2010-10-14 10:57:20 +02:00
parent 3d31254fd9
commit 359818d6b7

View File

@ -210,6 +210,40 @@ scroll_fixture_tree_setup (ScrollFixture *fixture,
scroll_fixture_setup (fixture, GTK_TREE_MODEL (store), test_data); scroll_fixture_setup (fixture, GTK_TREE_MODEL (store), test_data);
} }
static void
scroll_fixture_mixed_tree_setup (ScrollFixture *fixture,
gconstpointer test_data)
{
GtkTreeStore *store;
GtkTreeIter iter, child;
int i;
store = gtk_tree_store_new (1, G_TYPE_STRING);
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter, 0, "Root\nnode", -1);
for (i = 0; i < 5; i++) {
gtk_tree_store_append (store, &child, &iter);
if (i % 2 == 0)
gtk_tree_store_set (store, &child, 0, "Child node", -1);
else
gtk_tree_store_set (store, &child,
0, "Child\nnode", -1);
}
for (i = 0; i < 5; i++) {
gtk_tree_store_append (store, &iter, NULL);
if (i % 2 != 0)
gtk_tree_store_set (store, &iter, 0, "Other node", -1);
else
gtk_tree_store_set (store, &iter, 0, "Other\nnode", -1);
}
/* The teardown will also destroy the model */
scroll_fixture_setup (fixture, GTK_TREE_MODEL (store), test_data);
}
static void static void
scroll_fixture_teardown (ScrollFixture *fixture, scroll_fixture_teardown (ScrollFixture *fixture,
gconstpointer test_data) gconstpointer test_data)
@ -682,11 +716,21 @@ create_new_row (GtkListStore *store,
gtk_list_store_prepend (store, iter); gtk_list_store_prepend (store, iter);
break; break;
case 3:
/* Add a row in the middle of the visible area */
gtk_list_store_insert (store, iter, 3);
break;
case 4: case 4:
/* Add a row in the middle of the visible area */ /* Add a row in the middle of the visible area */
gtk_list_store_insert (store, iter, 4); gtk_list_store_insert (store, iter, 4);
break; break;
case 5:
/* Add a row which is not completely visible */
gtk_list_store_insert (store, iter, 5);
break;
case 8: case 8:
/* Add a row which is not completely visible */ /* Add a row which is not completely visible */
gtk_list_store_insert (store, iter, 8); gtk_list_store_insert (store, iter, 8);
@ -1186,6 +1230,43 @@ main (int argc, char **argv)
scroll_new_row_tree, scroll_new_row_tree,
scroll_fixture_teardown); scroll_fixture_teardown);
/* Test scrolling to a newly created row, in a mixed height model */
g_test_add ("/TreeView/scrolling/new-row-mixed/path-0", ScrollFixture,
GINT_TO_POINTER (0),
scroll_fixture_mixed_setup,
scroll_new_row,
scroll_fixture_teardown);
g_test_add ("/TreeView/scrolling/new-row-mixed/path-3", ScrollFixture,
GINT_TO_POINTER (3),
scroll_fixture_mixed_setup,
scroll_new_row,
scroll_fixture_teardown);
/* We scroll to 8 to test a partial visible row. The 8 is
* based on my font setting of "Vera Sans 11" and
* the separators set to 0. (This should be made dynamic; FIXME).
*/
g_test_add ("/TreeView/scrolling/new-row-mixed/path-5", ScrollFixture,
GINT_TO_POINTER (5),
scroll_fixture_mixed_setup,
scroll_new_row,
scroll_fixture_teardown);
g_test_add ("/TreeView/scrolling/new-row-mixed/path-500", ScrollFixture,
GINT_TO_POINTER (500),
scroll_fixture_mixed_setup,
scroll_new_row,
scroll_fixture_teardown);
g_test_add ("/TreeView/scrolling/new-row-mixed/path-999", ScrollFixture,
GINT_TO_POINTER (999),
scroll_fixture_mixed_setup,
scroll_new_row,
scroll_fixture_teardown);
g_test_add ("/TreeView/scrolling/new-row-mixed/tree", ScrollFixture,
NULL,
scroll_fixture_mixed_tree_setup,
scroll_new_row_tree,
scroll_fixture_teardown);
/* Misc. tests */ /* Misc. tests */
g_test_add ("/TreeView/scrolling/specific/bug-316689", g_test_add ("/TreeView/scrolling/specific/bug-316689",
ScrollFixture, NULL, ScrollFixture, NULL,