1. 02 Dec, 2019 1 commit
    • Tong Mu's avatar
      Improve MouseTracker lifecycle: Move checks to post-frame (#44631) · afb8f382
      Tong Mu authored
      This PR rewrites MouseTracker's lifecycle, so that mouse callbacks are all triggered in post frame, instead of the current one where some are triggered during the build phase. This PR also changes the onExit callback to MouseRegion, RenderMouseRegion, and MouseTrackerAnnotation, so that it is no longer triggered on dispose.
      afb8f382
  2. 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
  3. 01 Nov, 2019 1 commit
    • Greg Spencer's avatar
      Add convenience accessor for primaryFocus (#43859) · 3a30722f
      Greg Spencer authored
      This adds accessors for WidgetsBinding.instance.focusManager and WidgetsBinding.instance.focusManager.primaryFocus so that they can be more easily found in IDEs and accessed.
      
      This adds a top level getter for WidgetsBinding.instance.focusManager.primaryFocus called primaryFocus, and a static accessor FocusManager.instance that returns WidgetsBinding.instance.focusManager.
      3a30722f
  4. 31 Oct, 2019 1 commit
    • Greg Spencer's avatar
      Don't allow Disabled InkWells to be focusable (#43848) · 0028887a
      Greg Spencer authored
      Makes sure that disabled InkWell/InkResponse and widgets that use them don't allow themselves to be focused.
      
      ListTile, PopupMenu, and Stepper were not setting canRequestFocus properly on the InkWell, and InkWell was allowing focus even if it was disabled (it was basically just relying on the containing widget to set canRequestFocus properly). Now InkWell must both be enabled (have an onTap or similar) and have canRequestFocus set to true.
      0028887a
  5. 10 Oct, 2019 1 commit
    • Greg Spencer's avatar
      Re-land keyboard traversal PRs (#42278) · ce150971
      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
      ce150971
  6. 04 Oct, 2019 1 commit
  7. 02 Oct, 2019 1 commit
    • Greg Spencer's avatar
      Add an ActivateAction to controls that use InkWell. (#41220) · 4512a1c1
      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.
      4512a1c1
  8. 24 Sep, 2019 1 commit
  9. 04 Sep, 2019 1 commit
  10. 21 Aug, 2019 1 commit
  11. 16 Aug, 2019 1 commit
    • Greg Spencer's avatar
      Automatic focus highlight mode for FocusManager (#37825) · a11d7314
      Greg Spencer authored
      This adds a FocusHighlightMode to the FocusManager that switches based on the type of input that has recently been received. The initial value is based on the platform, but is updated as soon as user input is received. There is also a FocusHighlightStrategy enum so that the developer can change the strategy to a fixed value if needed.
      
      The default is to automatically detect the mode based on the last type of user input. If they use a mouse or keyboard, it shows the focus highlights. If they use a touch interface, then the highlights disappear. This is consistent with the way that Android and Chrome work. The controls still receive focus, only the display of the highlight changes.
      
      Text fields show the focus highlight regardless of the focus highlight mode.
      a11d7314
  12. 07 Aug, 2019 1 commit
  13. 15 May, 2019 1 commit
    • Greg Spencer's avatar
      Implements focus handling and hover for Material buttons. (#31438) · bb3c6605
      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.
      bb3c6605
  14. 09 Mar, 2019 1 commit
  15. 06 Mar, 2019 1 commit
    • Tong Mu's avatar
      Add minimum time gap requirement to double tap (#28749) · 2e1a8c74
      Tong Mu authored
      * First impl with StopwatchWithZone
      
      * Clean up params and name
      
      * Remove outdated TODO
      
      * Fix style
      
      * Fix a missing param. Add @require
      
      * Fix import meta
      
      * Fix code style
      
      * Add missing require. Fix comment style.
      
      * Fix code style
      
      * Fix code style
      2e1a8c74
  16. 01 Mar, 2019 1 commit
    • Alexandre Ardhuin's avatar
      Add missing trailing commas (#28673) · 387f8854
      Alexandre Ardhuin authored
      * add trailing commas on list/map/parameters
      
      * add trailing commas on Invocation with nb of arg>1
      
      * add commas for widget containing widgets
      
      * add trailing commas if instantiation contains trailing comma
      
      * revert bad change
      387f8854
  17. 27 Feb, 2019 1 commit
  18. 09 Jan, 2019 1 commit
  19. 08 Jan, 2019 1 commit
  20. 07 Jan, 2019 1 commit
  21. 16 Oct, 2018 1 commit
  22. 12 Sep, 2018 1 commit
  23. 07 Sep, 2018 1 commit
  24. 02 Aug, 2018 1 commit
  25. 27 Jul, 2018 1 commit
  26. 23 Jul, 2018 1 commit
  27. 16 Jul, 2018 2 commits
  28. 22 Jun, 2018 1 commit
  29. 18 Apr, 2018 1 commit
  30. 07 Feb, 2018 2 commits
  31. 01 Feb, 2018 1 commit
    • amirh's avatar
      Use RRects instead of Paths when possible in Material. (#14404) · d9ef7df9
      amirh authored
      0672055a changed the Material widget to
      always use Paths for representing the outline.
      These paths are later used for clipping and drawing a shadow.
      This changed introduced a performance regression, see:
      https://github.com/flutter/flutter/issues/14403
      
      We did not expect a path that is a rounded rectangle to be less
      performant than a rounded rectangle, as Skia should be able to tell the
      path is just a rounded rectangle.
      Until we find a solution for this regression, we keep using RRect when
      we can represent the shape with it.
      d9ef7df9
  32. 31 Jan, 2018 1 commit
    • amirh's avatar
      Support arbitrary shaped Material. (#14367) · 0672055a
      amirh authored
      For backward compatibility we keep supporting specifying the shape as a
      combination of MaterialType and borderRadius, and we just use that as a
      default when shapeBorder is null.
      
      To cleanup the implementation if shapeBorder was not specified we just
      translate the specified shape to a shapeBorder internally.
      I benchmarked paint, layout and hit testing, with the specialized shape
      clippers vs. the equivalent path clippers and did not see any
      significant performance difference.
      
      For testing, I extended the clippers/physicalShape matchers to match either the
      specialized shape or the equivalent shape.
      0672055a
  33. 03 Jan, 2018 1 commit
  34. 05 Sep, 2017 1 commit
  35. 01 Jul, 2017 1 commit
    • Ian Hickson's avatar
      Automatic silver keep alive (#11067) · 7ba1879b
      Ian Hickson authored
      * AutomaticKeepAlive
      
      A Widget that listens for notifications from widgets that don't want to die.
      
      * Automatically wrap SliverList and SliverGrid children in AutomaticKeepAlive widgets
      
      * Fixes for review comments
      7ba1879b
  36. 23 Jun, 2017 1 commit
  37. 04 Mar, 2017 1 commit
  38. 14 Jan, 2017 1 commit
    • Adam Barth's avatar
      Add SimpleDialogOption (#7494) · ad27fcd3
      Adam Barth authored
      The demo of the SimpleDialog had some useful code that should really be part of
      the framework. This patch extracts it into a SimpleDialogOption widget.
      
      Remove debugCheckHasScaffold because it is unused.
      
      Also, add tests for InkWell, SimpleDialog, and other widgets.
      ad27fcd3