- 05 Dec, 2019 2 commits
-
-
Greg Spencer authored
This fixes an issue where lines like this: focusNode.canRequestFocus = widget.canRequestFocus ?? focusNode.canRequestFocus; Were causing the canRequestFocus bit to copy the status of the enclosing scope, since canRequestFocus also looks to the enclosing scope to decide if it can focus.
-
Greg Spencer authored
This normalizes all of the "See also" blocks in comments so that they conform in style. They all look like this now: /// See also: /// /// * [MyFavoriteWidget], because it's cool. class Foo {} I removed some useless "See also" blocks, and added commentary to ones that were just "bare" references. This is my penance for adding so many bullets that are "-" instead of "*". :-)
-
- 27 Nov, 2019 1 commit
-
-
Ian Hickson authored
* Update project.pbxproj files to say Flutter rather than Chromium Also, the templates now have an empty organization so that we don't cause people to give their apps a Flutter copyright. * Update the copyright notice checker to require a standard notice on all files * Update copyrights on Dart files. (This was a mechanical commit.) * Fix weird license headers on Dart files that deviate from our conventions; relicense Shrine. Some were already marked "The Flutter Authors", not clear why. Their dates have been normalized. Some were missing the blank line after the license. Some were randomly different in trivial ways for no apparent reason (e.g. missing the trailing period). * Clean up the copyrights in non-Dart files. (Manual edits.) Also, make sure templates don't have copyrights. * Fix some more ORGANIZATIONNAMEs
-
- 22 Nov, 2019 1 commit
-
-
Alexandre Ardhuin authored
* make BuildContext.{ancestorStateOfType,ancestorRenderObjectOfType,rootAncestorStateOfType} generic * make BuildContext.inheritFromWidgetOfExactType generic * make BuildContext.ancestorInheritedElementForWidgetOfExactType generic * make BuildContext.ancestorWidgetOfExactType generic * fix snippet * bump scoped_model on temp version * update names * Revert "bump scoped_model on temp version" This reverts commit d1fcbba028cdb07f44738d1652391692d1ea5ec0. * address review comments * fix ci * address review comments * repeat the deprecation notice * fix uppercase * use of recommanded deprecation syntax * address review comment
-
- 19 Nov, 2019 1 commit
-
-
Greg Spencer authored
This adds a FocusableActionDetector, a widget which combines the functionality of Actions, Shortcuts, MouseRegion and a Focus widget to create a detector that defines actions and key bindings, and will notify that the focus or hover highlights should be shown or not. This widget can be used to give a control the required detection modes for focus and hover handling on desktop and web platforms. I replaced a bunch of similar code in many of our widgets with this widget, and found that pretty much any control that wants to be focusable wants all of these features as well: focus highlights, hover highlights, and actions to activate it. Also eliminated an extra _hasFocus variable in FocusState that wasn't being used.
-
- 18 Oct, 2019 1 commit
-
-
Greg Spencer authored
This adds a canRequestFocus and skipTraversal argument to FocusScope and FocusScopeNode, so that a scope can prevent being traversed. This allows a fix for a problem in the gallery where the focus while traversing the list of items would sometimes appear to disappear, since it would be focusing things that were in the backdrop that were part of the tree, but were not visible. Related Issues Fixes #42955
-
- 15 Oct, 2019 1 commit
-
-
Greg Spencer authored
This optimizes certain paths in the FocusManager, FocusNode, and FocusScopeNode classes in order to fix a regression in stock_animation_open_first_frame_average when I added more focus nodes to the tree to do focus traversal. Mainly I removed some remaining sync* iterators, and also started caching the computation of descendants and ancestors, since those are iterated over fairly often. This improves stock_animation_open_first_frame_average by about 2.8% overall (so about half of a 4.9% regression, both averaged over 10 runs). Addresses #42564
-
- 10 Oct, 2019 1 commit
-
-
Greg Spencer authored
This attempts to reland #40186 and #41220, that were reverted in #41945. The main modifications from the original PRs are that I predefine the shortcuts and actions maps instead of defining them inline in the build function, and I use a new mapEquals to do a deep comparison so that we don't rebuild modified things if the contents of the map haven't changed. I also eliminated an operator== and hashCode that were defined on the Actions widget, since widgets shouldn't have those. (it's too bad though: I get an 85% speedup if we leave this in! Too bad it prevents rebuilding of the children...) Fixes #40101
-
- 09 Oct, 2019 1 commit
-
-
Greg Spencer authored
This adds a Semantics node to the Focus and FocusScope widgets, setting the focused and focusable attributes so that the accessibility subsystem can be told when a control has the input focus. Includes an engine roll to flutter/engine@77252d2, and the following 8 engine changes: flutter/engine@77252d2 Greg Spencer Add missing focusable testing info (flutter/engine#13013) flutter/engine@0e42a29 skia-flutter-.. Roll src/third_party/skia 54548626a977..e27a503a0a21 (1 commits) (flutter/engine#13024) flutter/engine@6b56ed7 gaaclarke Refactor: FlutterDartProject (flutter/engine#13006) flutter/engine@393480c skia-flutter-.. Roll src/third_party/skia 77dde599c98a..54548626a977 (1 commits) (flutter/engine#13023) flutter/engine@080b89d skia-flutter-.. Roll src/third_party/skia 2b1a25a4d324..77dde599c98a (1 commits) (flutter/engine#13021) flutter/engine@90b0f30 Ben Konyi Roll src/third_party/dart f4a72bfc64..bb04f145b2 (18 commits) (flutter/engine#13020) flutter/engine@049fb89 skia-flutter-.. Roll fuchsia/sdk/core/linux-amd64 from q_uYX... to cknsi... (flutter/engine#13019) flutter/engine@6925b2a skia-flutter-.. Roll fuchsia/sdk/core/mac-amd64 from wuAtw... to u0JpE... (flutter/engine#13018) Related Issues Addresses #40101 Landing on red in order to fix the build: it's red because of the needed engine roll.
-
- 04 Oct, 2019 1 commit
-
-
Greg Spencer authored
-
- 02 Oct, 2019 1 commit
-
-
Greg Spencer authored
Adds an ActivateAction to controls that use InkWell. Make InkWell host the Focus for those controls, and add the top level binding to the ENTER key. This will make it possible to trigger a button using the enter key, and to get an ink response when the button is triggered. This is a breaking change because it moves the Focus widget into the InkWell. If you have a component that uses the InkWell directly and you used to wrap that InkWell in a Focus widget to give it its notion of focus, it will now not look for that Focus ancestor for its focus state anymore. In order to control focus on the InkWell, you need to give it a FocusNode directly, via the new focusNode parameter. This should not affect users of widgets like OutlineButton or FloatingActionButton and the like, since those have been modified in this PR.
-
- 26 Sep, 2019 1 commit
-
-
Greg Spencer authored
The proposed change will change focus handling when pushing and popping routes so that the FocusScopeNode for the route receives focus when pushed, and that the FocusScopeNode in the navigator receives focus when the route is popped. This means that the last setFirstFocus call on the scope is used to determine which control actually receives focus. When the focus scope receives focus, it traverses its children, trying to find a non-scope node that is the "first focus" of itself or a child node. This is a breaking change, because the focus behavior has changed. If you push a route after this change, and had a 'first focus' set on a widget via FocusScopeNode.setFirstFocus, it won't currently receive focus immediately, but after this change it will. Similarly, if you pop a route after this change, the focus will go back to where it was before the route was pushed, which is correct, but different from what happens now.
-
- 10 Sep, 2019 1 commit
-
-
Greg Spencer authored
Fixed passing autofocus to MaterialButton, and when rebuilding Focus widget, and added a test for Focus and MaterialButton to test that it works properly.
-
- 16 Aug, 2019 1 commit
-
-
Greg Spencer authored
* Add an 'unfocusable' focus node to allow developers to indicate when they don't want a Focus widget to be active * more unfocusable changes. not working. * Switch to focusable attribute * Rename to canRequestFocus * Turn off debug output * Update docs * Removed unused import
-
- 15 Aug, 2019 1 commit
-
-
Greg Spencer authored
Add an autofocus parameter to widgets which use Focus widget internally, and update related docs. This will allow developers to request that a particular widget be automatically focused when shown.
-
- 16 May, 2019 1 commit
-
-
Greg Spencer authored
Until this change, Focus.of would return a FocusScopeNode if it found a FocusScope widget. This isn't really all that useful, and can easily lead to bad situations where many widgets think that the scope they are in (or the root scope!) is their indication of being focused. This changes Focus.of to throw an exception if it doesn't find a Focus widget before reaching the nearest FocusScope widget, or the root of the widget hierarchy. It also adds a nullOk optional bool to Focus.of so that if a caller expects to not find a Focus widget, it can deal with that as it sees fit. I modified InkWell to use this new behavior. This fixes an unreported issue that widgets using an InkWell will be drawn as focused the first time they are visited.
-
- 15 May, 2019 1 commit
-
-
Greg Spencer authored
This implements focus and hover handling for Material buttons. It inserts Focus widgets into the tree in order to allow buttons to be focusable via keyboard traversal (a.k.a. TAB traversal), and Listener widgets into the InkWell to allow the detection of hover states for widgets. Addresses #11344, #1608, and #13264.
-
- 10 May, 2019 1 commit
-
-
Greg Spencer authored
This implements a DefaultFocusTraversal widget to describe the focus traversal policy for its children, defined by a FocusTraversalPolicy object from which custom policies may be created. Pre-defined policies include widget-order traversal, "reading order" traversal and directional traversal.
-
- 25 Apr, 2019 1 commit
-
-
Greg Spencer authored
This re-lands the Focus changes in #30040. Correctness changes in routes.dart, and removes the automatic requesting of focus on reparent when there is no current focus, which caused undesirable selections. Addresses #11344, #1608, #13264, and #1678 Fixes #30084 Fixes #26704
-
- 23 Apr, 2019 1 commit
-
-
Greg Spencer authored
This reverts commit 4218c0bc.
-
- 22 Apr, 2019 1 commit
-
-
Greg Spencer authored
Implements focus traversal for desktop platforms, including re-implementing the existing focus manager and focus tree. This implements a Focus widget that can be put into a widget tree to allow input focus to be given to a particular part of a widget tree. It incorporates with the existing FocusScope and FocusNode infrastructure, and has minimal breakage to the API, although FocusScope.reparentIfNeeded is removed, replaced by a call to FocusAttachment.reparent(), so this is a breaking change: FocusScopeNodes must now be attached to the focus tree using FocusScopeNode.attach, which takes a context and an optional onKey callback, and returns a FocusAttachment that should be kept by the widget that hosts the FocusScopeNode. This is necessary because of the need to make sure that the focus tree reflects the widget hierarchy. Callers that used to call FocusScope(context).reparentIfNeeded in their build method will call reparent on a FocusAttachment instead, which they will obtain by calling FocusScopeNode.attach in their initState method. Widgets that own FocusNodes will need to call dispose on the focus node in their dispose method. Addresses #11344, #1608, #13264, and #1678 Fixes #30084 Fixes #26704
-
- 08 Mar, 2019 1 commit
-
-
Greg Spencer authored
In anticipation of changing a lot of the focus code, I'm adding some tests for the FocusScope. As a result, I was able to find and fix a bug where there was an incorrect assert. I also added some more documentation. Several of the tests enforce what I think is incorrect behavior related to passing focus off when the widget tree gets rebuilt without focus nodes that were previously there, but I'm not going to change that behavior in this PR. I also renamed focus_test.dart to focus_scope_test.dart to be more in line with our naming conventions.
-
- 05 Feb, 2019 1 commit
-
-
Hans Muller authored
Updated focus handling in FocusManager et al and EditableText so that TextFields within nested FocusScopes can gain the focus and show the keybaord.
-
- 12 Sep, 2018 1 commit
-
-
Alexandre Ardhuin authored
* enable lint unnecessary_new * fix tests * fix tests * fix tests
-
- 16 Jul, 2018 1 commit
-
-
Sigurd Meldgaard authored
-
- 05 Jun, 2018 1 commit
-
-
Alexandre Ardhuin authored
-
- 03 May, 2018 1 commit
-
-
Konstantin Scheglov authored
-
- 21 Dec, 2017 1 commit
-
-
Ian Hickson authored
This attempts to apply some of what we learnt from UX studies, namely that people wonder how to add multiple children to widget that take one child.
-
- 04 Dec, 2017 1 commit
-
-
krisgiesing authored
Separate focus management by build owner Currently the focus manager is held by the singleton WidgetBinding. This change places a focus manager in each build owner object, which allows clients to run offscreen pipelines without disturbing focus management for the main UI.
-
- 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
-
- 23 Apr, 2017 1 commit
-
-
Alexandre Ardhuin authored
* more widget const constructors * prefer const constructors * address review comments
-
- 11 Apr, 2017 1 commit
-
-
xster authored
Rename State.config to State.widget Rename State.didUpdateConfig to State.didUpdateWidget Renamed all State subclasses' local variables named config to something else
-
- 05 Apr, 2017 1 commit
-
-
Adam Barth authored
Mostly related to semantics and scrolling.
-
- 31 Mar, 2017 1 commit
-
-
Adam Barth authored
We now have an explicit focus tree that we manage. Instead of using GlobalKeys to manage focus, we use FocusNode and FocusScopeNode objects. The FocusNode is Listenable and notifies when its focus state changes. Focus notifications trigger by tree mutations are now delayed by one frame, which is necessary to handle certain complex tree mutations. In the common case of focus changes being triggered by user input, the focus notificiation still arives in the same frame.
-