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:
committed by
Matthias Clasen
parent
13cf7c2256
commit
d6ddcb5b93
@@ -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--;
|
||||
|
||||
Reference in New Issue
Block a user