@@ -92,7 +92,6 @@ class SemanticsData extends Diagnosticable {
92
92
@required this .decreasedValue,
93
93
@required this .hint,
94
94
@required this .textDirection,
95
- @required this .nextNodeId,
96
95
@required this .previousNodeId,
97
96
@required this .rect,
98
97
@required this .textSelection,
@@ -152,10 +151,6 @@ class SemanticsData extends Diagnosticable {
152
151
/// [increasedValue] , and [decreasedValue] .
153
152
final TextDirection textDirection;
154
153
155
- /// The index indicating the ID of the next node in the traversal order after
156
- /// this node for the platform's accessibility services.
157
- final int nextNodeId;
158
-
159
154
/// The index indicating the ID of the previous node in the traversal order before
160
155
/// this node for the platform's accessibility services.
161
156
final int previousNodeId;
@@ -242,7 +237,6 @@ class SemanticsData extends Diagnosticable {
242
237
properties.add (new StringProperty ('decreasedValue' , decreasedValue, defaultValue: '' ));
243
238
properties.add (new StringProperty ('hint' , hint, defaultValue: '' ));
244
239
properties.add (new EnumProperty <TextDirection >('textDirection' , textDirection, defaultValue: null ));
245
- properties.add (new IntProperty ('nextNodeId' , nextNodeId, defaultValue: null ));
246
240
properties.add (new IntProperty ('previousNodeId' , previousNodeId, defaultValue: null ));
247
241
if (textSelection? .isValid == true )
248
242
properties.add (new MessageProperty ('textSelection' , '[${textSelection .start }, ${textSelection .end }]' ));
@@ -264,7 +258,6 @@ class SemanticsData extends Diagnosticable {
264
258
&& typedOther.decreasedValue == decreasedValue
265
259
&& typedOther.hint == hint
266
260
&& typedOther.textDirection == textDirection
267
- && typedOther.nextNodeId == nextNodeId
268
261
&& typedOther.previousNodeId == previousNodeId
269
262
&& typedOther.rect == rect
270
263
&& setEquals (typedOther.tags, tags)
@@ -276,7 +269,7 @@ class SemanticsData extends Diagnosticable {
276
269
}
277
270
278
271
@override
279
- int get hashCode => ui.hashValues (flags, actions, label, value, increasedValue, decreasedValue, hint, textDirection, nextNodeId, previousNodeId, rect, tags, textSelection, scrollPosition, scrollExtentMax, scrollExtentMin, transform);
272
+ int get hashCode => ui.hashValues (flags, actions, label, value, increasedValue, decreasedValue, hint, textDirection, previousNodeId, rect, tags, textSelection, scrollPosition, scrollExtentMax, scrollExtentMin, transform);
280
273
}
281
274
282
275
class _SemanticsDiagnosticableNode extends DiagnosticableNode <SemanticsNode > {
@@ -1074,30 +1067,10 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
1074
1067
1075
1068
/// The sort order for ordering the traversal of [SemanticsNode] s by the
1076
1069
/// platform's accessibility services (e.g. VoiceOver on iOS and TalkBack on
1077
- /// Android). This is used to determine the [nextNodeId] and [previousNodeId]
1078
- /// during a semantics update.
1070
+ /// Android). This is used to determine the [previousNodeId] during a semantics update.
1079
1071
SemanticsSortOrder _sortOrder;
1080
1072
SemanticsSortOrder get sortOrder => _sortOrder;
1081
1073
1082
- /// The ID of the next node in the traversal order after this node.
1083
- ///
1084
- /// Only valid after at least one semantics update has been built.
1085
- ///
1086
- /// This is the value passed to the engine to tell it what the order
1087
- /// should be for traversing semantics nodes.
1088
- ///
1089
- /// If this is set to -1, it will indicate that there is no next node to
1090
- /// the engine (i.e. this is the last node in the sort order). When it is
1091
- /// null, it means that no semantics update has been built yet.
1092
- int _nextNodeId;
1093
- void _updateNextNodeId (int value) {
1094
- if (value == _nextNodeId)
1095
- return ;
1096
- _nextNodeId = value;
1097
- _markDirty ();
1098
- }
1099
- int get nextNodeId => _nextNodeId;
1100
-
1101
1074
/// The ID of the previous node in the traversal order before this node.
1102
1075
///
1103
1076
/// Only valid after at least one semantics update has been built.
@@ -1221,7 +1194,6 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
1221
1194
String increasedValue = _increasedValue;
1222
1195
String decreasedValue = _decreasedValue;
1223
1196
TextDirection textDirection = _textDirection;
1224
- int nextNodeId = _nextNodeId;
1225
1197
int previousNodeId = _previousNodeId;
1226
1198
Set <SemanticsTag > mergedTags = tags == null ? null : new Set <SemanticsTag >.from (tags);
1227
1199
TextSelection textSelection = _textSelection;
@@ -1235,7 +1207,6 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
1235
1207
flags | = node._flags;
1236
1208
actions | = node._actionsAsBits;
1237
1209
textDirection ?? = node._textDirection;
1238
- nextNodeId ?? = node._nextNodeId;
1239
1210
previousNodeId ?? = node._previousNodeId;
1240
1211
textSelection ?? = node._textSelection;
1241
1212
scrollPosition ?? = node._scrollPosition;
@@ -1276,7 +1247,6 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
1276
1247
decreasedValue: decreasedValue,
1277
1248
hint: hint,
1278
1249
textDirection: textDirection,
1279
- nextNodeId: nextNodeId,
1280
1250
previousNodeId: previousNodeId,
1281
1251
rect: rect,
1282
1252
transform: transform,
@@ -1319,7 +1289,6 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
1319
1289
increasedValue: data.increasedValue,
1320
1290
hint: data.hint,
1321
1291
textDirection: data.textDirection,
1322
- nextNodeId: data.nextNodeId,
1323
1292
previousNodeId: data.previousNodeId,
1324
1293
textSelectionBase: data.textSelection != null ? data.textSelection.baseOffset : - 1 ,
1325
1294
textSelectionExtent: data.textSelection != null ? data.textSelection.extentOffset : - 1 ,
@@ -1394,7 +1363,6 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
1394
1363
properties.add (new StringProperty ('decreasedValue' , _decreasedValue, defaultValue: '' ));
1395
1364
properties.add (new StringProperty ('hint' , _hint, defaultValue: '' ));
1396
1365
properties.add (new EnumProperty <TextDirection >('textDirection' , _textDirection, defaultValue: null ));
1397
- properties.add (new IntProperty ('nextNodeId' , _nextNodeId, defaultValue: null ));
1398
1366
properties.add (new IntProperty ('previousNodeId' , _previousNodeId, defaultValue: null ));
1399
1367
properties.add (new DiagnosticsProperty <SemanticsSortOrder >('sortOrder' , sortOrder, defaultValue: null ));
1400
1368
if (_textSelection? .isValid == true )
@@ -1571,10 +1539,10 @@ class SemanticsOwner extends ChangeNotifier {
1571
1539
super .dispose ();
1572
1540
}
1573
1541
1574
- // Updates the nextNodeId and previousNodeId IDs on the semantics nodes. These
1575
- // IDs are used on the platform side to order the nodes for traversal by the
1576
- // accessibility services. If the nextNodeId or previousNodeId for a node
1577
- // changes, the node will be marked as dirty.
1542
+ // Updates the previousNodeId IDs on the semantics nodes. These IDs are used
1543
+ // on the platform side to order the nodes for traversal by the accessibility
1544
+ // services. If the previousNodeId for a node changes, the node will be marked as
1545
+ // dirty.
1578
1546
void _updateTraversalOrder () {
1579
1547
final List <_TraversalSortNode > nodesInSemanticsTraversalOrder = < _TraversalSortNode > [];
1580
1548
SemanticsSortOrder currentSortOrder = new SemanticsSortOrder (keys: < SemanticsSortKey > []);
@@ -1609,20 +1577,12 @@ class SemanticsOwner extends ChangeNotifier {
1609
1577
return true ;
1610
1578
}
1611
1579
rootSemanticsNode.visitChildren (visitor);
1612
-
1613
- if (nodesInSemanticsTraversalOrder.isEmpty)
1614
- return ;
1615
-
1616
1580
nodesInSemanticsTraversalOrder.sort ();
1617
- _TraversalSortNode node = nodesInSemanticsTraversalOrder.removeLast ();
1618
- node.node._updateNextNodeId (- 1 );
1619
- while (nodesInSemanticsTraversalOrder.isNotEmpty) {
1620
- final _TraversalSortNode previousNode = nodesInSemanticsTraversalOrder.removeLast ();
1621
- node.node._updatePreviousNodeId (previousNode.node.id);
1622
- previousNode.node._updateNextNodeId (node.node.id);
1623
- node = previousNode;
1581
+ int previousNodeId = - 1 ;
1582
+ for (_TraversalSortNode node in nodesInSemanticsTraversalOrder) {
1583
+ node.node._updatePreviousNodeId (previousNodeId);
1584
+ previousNodeId = node.node.id;
1624
1585
}
1625
- node.node._updatePreviousNodeId (- 1 );
1626
1586
}
1627
1587
1628
1588
/// Update the semantics using [Window.updateSemantics] .
0 commit comments