mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 19:00:08 +00:00
GtkListBox: Fix a bug in unselection
Ensure that gtk_list_box_get_selected_row returns NULL after gtk_list_box_unselect_all. Add a testcase that detects this problem.
This commit is contained in:
parent
fcdec5ac41
commit
e6e511eb46
@ -1449,6 +1449,8 @@ gtk_list_box_unselect_all_internal (GtkListBox *box)
|
||||
dirty |= gtk_list_box_row_set_selected (row, FALSE);
|
||||
}
|
||||
|
||||
BOX_PRIV (box)->selected_row = NULL;
|
||||
|
||||
return dirty;
|
||||
}
|
||||
|
||||
|
@ -137,11 +137,17 @@ test_selection (void)
|
||||
g_assert_cmpint (count, ==, 1);
|
||||
row2 = gtk_list_box_get_selected_row (list);
|
||||
g_assert (row2 == row);
|
||||
gtk_list_box_unselect_all (list);
|
||||
row2 = gtk_list_box_get_selected_row (list);
|
||||
g_assert (row2 == NULL);
|
||||
gtk_list_box_select_row (list, row);
|
||||
row2 = gtk_list_box_get_selected_row (list);
|
||||
g_assert (row2 == row);
|
||||
|
||||
gtk_list_box_set_selection_mode (list, GTK_SELECTION_BROWSE);
|
||||
gtk_container_remove (GTK_CONTAINER (list), GTK_WIDGET (row));
|
||||
g_assert (callback_row == NULL);
|
||||
g_assert_cmpint (count, ==, 2);
|
||||
g_assert_cmpint (count, ==, 4);
|
||||
row2 = gtk_list_box_get_selected_row (list);
|
||||
g_assert (row2 == NULL);
|
||||
|
||||
@ -149,12 +155,12 @@ test_selection (void)
|
||||
gtk_list_box_select_row (list, row);
|
||||
g_assert (gtk_list_box_row_is_selected (row));
|
||||
g_assert (callback_row == row);
|
||||
g_assert_cmpint (count, ==, 3);
|
||||
g_assert_cmpint (count, ==, 5);
|
||||
|
||||
gtk_list_box_set_selection_mode (list, GTK_SELECTION_NONE);
|
||||
g_assert (!gtk_list_box_row_is_selected (row));
|
||||
g_assert (callback_row == NULL);
|
||||
g_assert_cmpint (count, ==, 4);
|
||||
g_assert_cmpint (count, ==, 6);
|
||||
row2 = gtk_list_box_get_selected_row (list);
|
||||
g_assert (row2 == NULL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user