1. 11 Feb, 2020 4 commits
    • LongCatIsLooong's avatar
    • Alexandre Ardhuin's avatar
      f15c887c
    • 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
    • Gary Qian's avatar
  2. 10 Feb, 2020 5 commits
  3. 08 Feb, 2020 1 commit
  4. 07 Feb, 2020 1 commit
  5. 06 Feb, 2020 4 commits
  6. 05 Feb, 2020 3 commits
  7. 04 Feb, 2020 3 commits
  8. 03 Feb, 2020 1 commit
  9. 01 Feb, 2020 2 commits
  10. 31 Jan, 2020 7 commits
  11. 30 Jan, 2020 6 commits
  12. 29 Jan, 2020 2 commits
  13. 28 Jan, 2020 1 commit