mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-08 09:40:10 +00:00
a11y: Fix GtkListview's selection interface implementation
When determining the number of selected children, we were properly counting only items, but in the rest, we were confused by row headers. Because the GtkListItemBase methods did not throw a warning on inappropriate pointer type passed, we happily passed the row headers, got some private data object as the wrong type, and then returned nonsense, for example, 2 for gtk_list_item_base_get_selected.
This commit is contained in:
parent
3349996af5
commit
d60630ea8d
@ -256,6 +256,8 @@ listview_handle_method (GDBusConnection *connection,
|
||||
child;
|
||||
child = gtk_widget_get_next_sibling (child))
|
||||
{
|
||||
if (!GTK_IS_LIST_ITEM_BASE (child))
|
||||
continue;
|
||||
if (gtk_list_item_base_get_selected (GTK_LIST_ITEM_BASE (child)))
|
||||
{
|
||||
if (idx == 0)
|
||||
@ -288,6 +290,8 @@ listview_handle_method (GDBusConnection *connection,
|
||||
child;
|
||||
child = gtk_widget_get_next_sibling (child))
|
||||
{
|
||||
if (!GTK_IS_LIST_ITEM_BASE (child))
|
||||
continue;
|
||||
if (idx == 0)
|
||||
break;
|
||||
idx--;
|
||||
@ -320,6 +324,8 @@ listview_handle_method (GDBusConnection *connection,
|
||||
child;
|
||||
child = gtk_widget_get_next_sibling (child))
|
||||
{
|
||||
if (!GTK_IS_LIST_ITEM_BASE (child))
|
||||
continue;
|
||||
if (idx == 0)
|
||||
break;
|
||||
idx--;
|
||||
@ -353,6 +359,8 @@ listview_handle_method (GDBusConnection *connection,
|
||||
child;
|
||||
child = gtk_widget_get_next_sibling (child))
|
||||
{
|
||||
if (!GTK_IS_LIST_ITEM_BASE (child))
|
||||
continue;
|
||||
if (gtk_list_item_base_get_selected (GTK_LIST_ITEM_BASE (child)))
|
||||
{
|
||||
if (idx == 0)
|
||||
@ -388,6 +396,8 @@ listview_handle_method (GDBusConnection *connection,
|
||||
child;
|
||||
child = gtk_widget_get_next_sibling (child))
|
||||
{
|
||||
if (!GTK_IS_LIST_ITEM_BASE (child))
|
||||
continue;
|
||||
if (idx == 0)
|
||||
break;
|
||||
idx--;
|
||||
|
Loading…
Reference in New Issue
Block a user