- 21 Feb, 2019 1 commit
-
-
Alexandre Ardhuin authored
-
- 12 Sep, 2018 1 commit
-
-
Alexandre Ardhuin authored
* enable lint unnecessary_new * fix tests * fix tests * fix tests
-
- 05 Dec, 2017 1 commit
-
-
Yegor authored
Summary: - Add `key` field to `SemanticsNode`, while moving key into `foundation` library so it can be used by the render layer. - Introduce `SemanticsProperties` and move many of the `Semantics` fields into it. - Introduce `CustomPaintSemantics` - a `SemanticsNode` prototype created by `CustomPainter`. - Introduce `semanticsBuilder` and `shouldRebuildSemantics` in `CustomerPainter` **Breaking change** The default `Semantics` constructor becomes non-const (due to https://github.com/dart-lang/sdk/issues/20962). However, a new `const Semantics.fromProperties` is added that still allowed creating constant `Semantics` widgets ([mailing list announcement](https://groups.google.com/forum/#!topic/flutter-dev/KQXBl2_1sws)). Fixes https://github.com/flutter/flutter/issues/11791 Fixes https://github.com/flutter/flutter/issues/1666
-
- 30 Nov, 2017 1 commit
-
-
Michael Goderbauer authored
* ensures that only semantics boundaries will be added to owner._nodesNeedingSemantics as expected by compiler. * no longer throws assert if markNeedsSemanticsUpdate is called on non-semantic-boundary render object with a non-semantic-boundary parent. * Fixes #13109. * removes onlyLocalUpdates from markNeedsSemanticsUpdate as its no longer needed.
-
- 18 Oct, 2017 1 commit
-
-
Michael Goderbauer authored
* Oct 12 10:12am * implicit_semantics_test.dart passes * refactoring * works in nice * minor rename * more doc comments * to be explicit check better * fix test * ++ * ++ * semantics_9_test (BlockSemantics) and implicit_semantics_test are passing * doc updates * tiny refactor * fix static errors in tests * fix gesture detector * ++ * ++ * geometry * ++ * remove noGeometry * revert test * + * all tests but scrolling/clipping pass * clipping works * scrolling halfway * sliver tests pass * ALL TESTS PASS * SemanticsNode changed * docs and tiny fixes * card test * more doc comments * remove missed print * more tests * make test pass on Linux * remove changes to intellij proj file * review comments
-
- 07 Sep, 2017 1 commit
-
-
Ian Hickson authored
-
- 31 Aug, 2017 1 commit
-
-
Alexandre Ardhuin authored
* upgrade to linter-0.1.35 * re-enable lint prefer_const_constructors * address review comments
-
- 26 Aug, 2017 1 commit
-
-
Michael Goderbauer authored
* refactor to ensureAction + some related doc fixes * Update docs for markNeedsSemanticsUpdate * rewording * rewording * ensureAction test * ensureAction test * ensureAction test * more tests * refactor to allways reset node * tiny fixes * more test * doc fixes * one more test * review comments
-
- 08 Aug, 2017 1 commit
-
-
Michael Goderbauer authored
Don't trigger an assert when markNeedsSemanticsUpdate is called multiple times in edge cases (#11544) * Don't trigger assert if a render object ceases to be a semantic boundary This bug was exposed by https://github.com/flutter/flutter/pull/11309, which caused the following assertion to trigger when scrolling in the Animation demo: ``` The following assertion was thrown during _updateSemantics(): 'package:flutter/src/rendering/object.dart': Failed assertion: line 2626 pos 16: 'fragment is _InterestingSemanticsFragment': is not true. ``` A minimal reproduction of the bug can be found in `semantics_10_test.dart`, which has been added as a regression test for the bug by this PR. Looking at that test, here is a description of the faulty behaviour: 1. During the second `pumpWidget` call `RenderExcludeSemantics` marks itself as needing a semantics update (due to excluding going from `false` -> `true`). 2. This causes the nearest ancestor with semantics information (here: `RenderSemanticsAnnotations` representing the "container" Semantics widget) to be added to the `_nodesNeedingSemantics` list. 3. `RenderSliverList` (implementation behind ListView) marks itself as needing a semantics update (due to its changing children). 4. This causes the `RenderSemanticsGestureHandler` to be added to the `_nodesNeedingSemantics` list. 5. Next, canDrag is updated from `true` -> `false`. This means, `RenderSemanticsGestureHandler` is no longer a semantics boundary, it marks itself as needing a semantics update. 6. The nearest ancestor with semantics (`RenderSemanticsAnnotations`, the "container") is added to the `_nodesNeedingSemantics` list (this is a no-op because it is already in the list). 7. During `flushSemantics`, the `_nodesNeedingSemantics` list is walked. The first entry (`RenderSemanticsAnnotations`) updates the semantics tree to only contain the container widget and drop everything else (= no children of the ExcludeSemantics widget are walked). 8. The second entry (`RenderSemanticsGestureHandler`) is updated. It does not add any semantics of its own and is no longer a semantics boundary. Therefore, it wants to merge its descendent semantics into its parents. Here is where the assert throws because the algorithm assumes that every entry in the `_nodesNeedingSemantics` list will produce and own an `_InterestingSemanticsFragment` (passing your semantics on to your parents is not interesting). The problem here seems to be step 4 in combination with step 5. In step 4 we rely on the fact that `RenderSemanticsGestureHandler` is an (explicit or implicit) semantics boundary and that it will be able to absorb the semantics change of `RenderSliverList`. This is true at this time. However, in step 4 `RenderSemanticsGestureHandler` decides to no longer be an (explicit or implicit) semantics boundary and our assumption from step 5 becomes incorrect. We did nothing to correct this assumption. This PR removes a node, that could potentially cease to be a (explicit or implicit) semantics boundary from the `_nodesNeedingSemantics` list to fix that problem. Please node that this does not mean that the node's semantics will not be updated: The node's closest ances tor with semantics is added to that list during the `markNeedsSemanticsUpdate` call. During `flushSemantics` we will walk from this node to update the semantics of it's children (if changed), which will include the node in question. * tiny fix * simplify test * analyzer fixes * review comments
-