1. 14 Mar, 2023 1 commit
  2. 28 Feb, 2023 1 commit
  3. 23 Feb, 2023 1 commit
  4. 18 Jan, 2023 1 commit
  5. 10 Jan, 2023 1 commit
    • Yegor's avatar
      add closed/open focus traversal; use open on web (#115961) · 42053575
      Yegor authored
      * allow focus to leave FlutterView
      
      * fix tests and docs
      
      * small doc update
      
      * fix analysis lint
      
      * use closed loop for dialogs
      
      * add tests for new API
      
      * address comments
      
      * test FocusScopeNode.traversalEdgeBehavior setter; reverse wrap-around
      
      * rename actionResult to invokeResult
      
      * address comments
      42053575
  6. 01 Dec, 2022 1 commit
    • Greg Spencer's avatar
      Tweak directional focus traversal (#116230) · 0234b18f
      Greg Spencer authored
      * Use distance instead of coord
      
      * Sort by distance prefer axis
      
      * Switch initial sort back to sort by coordinate.
      
      * revert test change
      
      * Fix tests
      
      * Simplify test case
      
      * Add a test for irregular grids
      
      * Review Changes
      0234b18f
  7. 12 Apr, 2022 1 commit
  8. 06 Apr, 2022 1 commit
  9. 10 Jan, 2022 1 commit
  10. 08 Oct, 2021 3 commits
  11. 29 Jul, 2021 1 commit
  12. 28 Jul, 2021 1 commit
  13. 26 Jul, 2021 1 commit
  14. 20 Jul, 2021 1 commit
  15. 26 Apr, 2021 1 commit
  16. 21 Apr, 2021 1 commit
  17. 04 Mar, 2021 1 commit
  18. 16 Feb, 2021 1 commit
  19. 27 Jan, 2021 2 commits
  20. 20 Nov, 2020 1 commit
  21. 29 Oct, 2020 1 commit
  22. 12 Oct, 2020 1 commit
  23. 09 Jul, 2020 1 commit
  24. 11 Jun, 2020 1 commit
  25. 03 Jun, 2020 1 commit
  26. 08 May, 2020 1 commit
    • Pierre-Louis's avatar
      Expose includeSemantics option to RawKeyboardListener (#56549) · e04450c0
      Pierre-Louis authored
      * Expose includeSemantics option to RawKeyboardListener
      
      * Revert "Expose includeSemantics option to RawKeyboardListener"
      
      This reverts commit 684edccfb0bacb358285b34b7a6dafd45a070ca7.
      
      * Set includeSemantics to false
      
      * Expose includeSemantics for RawKeyboardListener
      
      * Add test
      e04450c0
  27. 05 May, 2020 1 commit
  28. 01 May, 2020 1 commit
    • Greg Spencer's avatar
      Add `ExcludeFocus` widget, and a way to prevent focusability for a subtree. (#55756) · fdc4d21b
      Greg Spencer authored
      This adds an ExcludeFocus widget that prevents widgets in a subtree from having or obtaining focus. It also adds the ability for a FocusNode to conditionally prevent its children from being focusable when it isn't focusable (i.e. when canRequestFocus is false).
      
      It does this by adding an descendantsAreFocusable attribute to the FocusNode, which, when false, prevents the descendants of the node from being focusable (and removes focus from them if they are currently focused).
      fdc4d21b
  29. 10 Apr, 2020 1 commit
  30. 13 Feb, 2020 1 commit
    • Greg Spencer's avatar
      Reland: Add OrderedFocusTraversalPolicy and FocusTraversalGrou… (#50672) · d57d4935
      Greg Spencer authored
      This re-lands #49235 with the addition of includeSemantics flag on the Focus widget so that the FocusTraversalGroup can create a Focus widget without affecting the semantics tree.
      
      The FocusTraversalGroup uses the Focus widget to create a grouping of descendants for traversal, but doesn't actually participate in focus (canRequestFocus is always false), so we don't want it to add a Semantics widget in that case, since that can cause semantics changes. The canRequestFocus attribute can also be used when a widget is disabled, so we do sometimes want to include Semantics even if that is false, but not in the case where it is always false, as for FocusTraversalGroup.
      
      - Added a test to make sure that FocusTraversalGroup doesn't add any semantics information.
      d57d4935
  31. 12 Feb, 2020 1 commit
  32. 11 Feb, 2020 1 commit
    • Greg Spencer's avatar
      Add OrderedFocusTraversalPolicy and FocusTraversalGroup to all… (#49235) · 8ef5e2f0
      Greg Spencer authored
      This change adds a way to provide explicit focus order for a part of the widget tree.
      
      It adds FocusTraversalPolicyGroup, which in many ways is similar to DefaultFocusTraversal, except that it groups a widget subtree together so that those nodes are traversed as a group. DefaultFocusTraversal doesn't work as one would expect: If there is more than one DefaultFocusTraversal inside of a focus scope, the policy can change depending on which node was asked to move "next", which can cause unexpected behavior. The new grouping mechanism doesn't have that problem. I deprecate DefaultFocusTraversal in this PR.
      
      It also adds OrderedFocusTraversalPolicy, which is a policy that can be supplied to FocusTraversalPolicyGroup to set the policy for a sub-tree. It looks for FocusTraversalOrder inherited widgets, which use a FocusOrder to do the sorting. FocusOrder has two subclasses: NumericalFocusOrder (which sorts based on a double), and LexicalFocusOrder, which sorts based on a String.
      
      As part of doing this, I refactored the way FocusTraversalPolicy is implemented so that it has more default implementation methods, and exposes a new protected member: sortDescendants, which makes it easier for developers to make their own policy subclasses: they only need to implement sortDescendants to get a new ordering behavior, but can also still override any of the default implementation behaviors if they need different behavior.
      
      I was able to do this without breaking the API (AFAICT).
      8ef5e2f0
  33. 27 Nov, 2019 1 commit
    • Ian Hickson's avatar
      License update (#45373) · 449f4a66
      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
      449f4a66
  34. 20 Nov, 2019 1 commit
    • Greg Spencer's avatar
      Scroll scrollable to keep focused control visible. (#44965) · 0d27fdce
      Greg Spencer authored
      Before this change, it was possible to move the focus onto a control that was no longer in the view using focus traversal. This changes that, so that when a control is focused, it makes sure that if it is the child of a scrollable, that the scrollable attempts to keep it in view. If it is already in view, then nothing scrolls.
      
      When asked to move in a direction, the focus traversal code tries to find a control to move to inside the scrollable first, and then looks for things outside of the scrollable only once the scrollable has reached its limit in that direction.
      0d27fdce
  35. 06 Nov, 2019 1 commit
    • Greg Spencer's avatar
      Synchronize modifier keys in RawKeyboard.keysPressed with modifier flags on events. (#43948) · 028ed712
      Greg Spencer authored
      Currently, we listen to keyboard events to find out which keys should be represented in RawKeyboard.instance.keysPressed, but that's not sufficient to represent the physical state of the keys, since modifier keys could have been pressed when the overall app did not have keyboard focus (especially on desktop platforms).
      
      This PR synchronizes the list of modifier keys in keysPressed with the modifier key flags that are present in the raw key event so that they can be relied upon to represent the current state of the keyboard. When synchronizing these states, we don't send any new key events, since they didn't happen when the app had keyboard focus, but if you ask "is this key down", we'll give the right answer
      028ed712
  36. 30 Oct, 2019 1 commit
  37. 17 Oct, 2019 1 commit