Skip to content

Commit a785b25

Browse files
author
Jonah Williams
authored
do not count Hidden nodes at the beginning of the scrollable (flutter#6381)
1 parent f6af1f2 commit a785b25

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

shell/platform/android/io/flutter/view/AccessibilityBridge.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -720,17 +720,19 @@ void updateSemantics(ByteBuffer buffer, String[] strings) {
720720
event.setMaxScrollX((int) max);
721721
}
722722
if (object.scrollChildren > 0) {
723+
// We don't need to add 1 to the scroll index because TalkBack does this automagically.
723724
event.setItemCount(object.scrollChildren);
724725
event.setFromIndex(object.scrollIndex);
725-
int visibleChildren = object.childrenInHitTestOrder.size() - 1;
726-
// We assume that only children at the end of the list can be hidden.
727-
assert(!object.childrenInHitTestOrder.get(object.scrollIndex).hasFlag(Flag.IS_HIDDEN));
728-
for (; visibleChildren >= 0; visibleChildren--) {
729-
SemanticsObject child = object.childrenInHitTestOrder.get(visibleChildren);
726+
int visibleChildren = 0;
727+
// handle hidden children at the beginning and end of the list.
728+
for (SemanticsObject child : object.childrenInHitTestOrder) {
730729
if (!child.hasFlag(Flag.IS_HIDDEN)) {
731730
break;
732731
}
732+
visibleChildren += 1;
733733
}
734+
assert(object.scrollIndex + visibleChildren <= object.scrollChildren);
735+
assert(!object.childrenInHitTestOrder.get(object.scrollIndex).hasFlag(Flag.IS_HIDDEN));
734736
event.setToIndex(object.scrollIndex + visibleChildren);
735737
}
736738
sendAccessibilityEvent(event);

0 commit comments

Comments
 (0)