1. 12 Jun, 2017 1 commit
  2. 06 Jun, 2017 1 commit
  3. 02 Jun, 2017 1 commit
    • Ian Hickson's avatar
      Sprinkle some mixin magic incantations (#10442) · 9eae8b83
      Ian Hickson authored
      This prevents some of our mixins from being subclassed.
      
      Also, move mixins to using 'extends' instead of 'implements' for
      future compatibility with Dart changes.
      
      Also, rename a class that had Mixin in the name but was not a mixin.
      9eae8b83
  4. 01 Jun, 2017 1 commit
  5. 25 May, 2017 1 commit
    • Chris Bracken's avatar
      Support inactive, suspending AppLifecycleStates (#10306) · 9452a344
      Chris Bracken authored
      * Rolls the engine to 75c74dc463d56e17be10315cfde409010fd8f90b.
      * Adds framework support for the `AppLifecycleState.inactive` and `AppLifecycleState.suspending` states.
      
      What are the new states?
      ------------------------
      * `AppLifecycleState.inactive` is emitted on iOS only and corresponds to iOS's foreground inactive state. Current iOS state transitions are:
      `resumed` <--> `inactive` <--> `paused`
      
      * `AppLifecycleState.suspending` is currently emitted on Android only and corresponds to the
      transition to Android's stopped state. Current Android state transitions are:
      `resumed` <--> `paused` --> `suspending` --> `resumed`
      
      These transitions may change in future.
      
      This is a breaking change on iOS
      --------------------------------
      
      This changes the semantics of the `AppLifecycleState.paused` state on
      iOS. The behaviour associated with this state is unchanged on Android.
      
      For background on iOS application states see the state transition
      diagram in the [App Programming Guide for iOS](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html#//apple_ref/doc/uid/TP40007072-CH2-SW6).
      
      On iOS, prior to this change, `AppLifecycleState.paused` corresponded to
      a transition to the _foreground inactive_ state. It now corresponds to a
      transition to the _background state_. The newly-added
      `AppLifecycleState.inactive` state now corresponds to entering the
      _foreground inactive_ state, which (currently) has no exact analogue on
      Android.
      
      Briefly, the _foreground inactive_ state is the state entered when
      switching from an app to the app switcher, receiving a phone call, or
      responding to a TouchID request. Apps are permitted to continue
      animating/updating views in this state if desired. From the _foreground
      inactive_ state, the app may transition back to _active_ (e.g., entering
      the app switcher then resuming the app), or to the _background_ state
      (e.g., switching to the home screen or another app).
      
      What to change
      --------------
      If your app does not handle the `AppLifecycleState.paused` state in a
      `WidgetsBindingObserver.didChangeAppLifecycleState` implementation, no
      changes are required.
      
      If you do handle `AppLifecycleState.paused`, you may additionally wish
      to also handle `AppLifecycleState.inactive`. For example, games should
      probably pause on entering the app switcher rather than wait to be
      backgrounded.
      
      More details
      ------------
      For background on Android application states see the state transition
      diagram in the [Android Activity Lifecycle docs](https://developer.android.com/guide/components/activities/activity-lifecycle.html#alc).
      9452a344
  6. 06 May, 2017 1 commit
  7. 05 May, 2017 1 commit
  8. 02 May, 2017 1 commit
    • Ian Hickson's avatar
      Flush microtasks after transient callbacks are run. (#9702) · e8c46927
      Ian Hickson authored
      This splits the frame pipeline into two, beginFrame and drawFrame.
      
      As part of making this change I added some debugging hooks that helped
      debug the issues that came up:
      
       * I added debugPrintScheduleFrameStacks which prints a stack whenever
         a frame is actually scheduled, so you can see why frames are being
         scheduled.
      
       * I added some toString output to EditableText and RawKeyboardListener.
      
       * I added a scheduler_tester.dart library for scheduler library tests.
      
       * I changed the test framework to flush microtasks before pumping.
      
       * Some asserts that had the old string literal form were replaced by
         asserts with messages.
      
      I also fixed a few subtle bugs that this uncovered:
      
       * setState() now calls `ensureVisualUpdate`, rather than
         `scheduleFrame`. This means that calling it from an
         AnimationController callback does not actually schedule an extra
         redundant frame as it used to.
      
       * I corrected some documentation.
      e8c46927
  9. 21 Apr, 2017 2 commits
  10. 31 Mar, 2017 1 commit
    • Adam Barth's avatar
      Improve focus management (#9074) · 89aaaa9c
      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.
      89aaaa9c
  11. 17 Mar, 2017 2 commits
  12. 15 Mar, 2017 2 commits
  13. 04 Mar, 2017 1 commit
  14. 23 Feb, 2017 1 commit
  15. 03 Feb, 2017 1 commit
  16. 02 Feb, 2017 2 commits
  17. 18 Jan, 2017 1 commit
  18. 19 Nov, 2016 1 commit
  19. 16 Nov, 2016 1 commit
  20. 26 Oct, 2016 1 commit
  21. 25 Oct, 2016 1 commit
  22. 13 Oct, 2016 1 commit
  23. 06 Oct, 2016 1 commit
  24. 28 Sep, 2016 1 commit
    • Ian Hickson's avatar
      Fix globalToLocal and update spinning_mixed (#6035) · e01592a0
      Ian Hickson authored
      * globalToLocal was just broken when there was a rotation and a
        translation at the same time. This fixes that and adds a test.
      
      * update graphic used by spinning_mixed since the old one went 404.
      
      * simplify some of the code in the demo.
      
      * fix MatrixUtils.transformPoint to be consistent with how we transform
        points elsewhere.
      
      * stop transforming points elsewhere, just use
        MatrixUtils.transformPoint.
      
      * make the Widget binding handle not having a root element.
      
      * make the spinning_mixed demo update its widget tree.
      e01592a0
  25. 16 Sep, 2016 1 commit
  26. 15 Sep, 2016 1 commit
  27. 09 Sep, 2016 1 commit
    • Ian Hickson's avatar
      Fix hot reload (#5799) · 03eaf1d1
      Ian Hickson authored
      I forgot that it was possible for the root view to get marked dirty
      without getting a new widget. This fixes that case to work.
      03eaf1d1
  28. 08 Sep, 2016 1 commit
    • Ian Hickson's avatar
      Make tests more realistic (#5762) · 5bc8888e
      Ian Hickson authored
      Previously, pumpWidget() would do a partial pump (it didn't trigger
      Ticker callbacks or post-frame callbacks), and pump() would do a full
      pump. This patch brings them closer together. It also makes runApp run a
      full actual frame, rather than skipping the transient callback part of
      the frame logic. Having "half-frames" in the system was confusing and
      could lead to bugs where code expecting to run before the next layout
      pass didn't because a "half-frame" ran first.
      
      Also, make Tickers start ticking in the frame that they were started in,
      if they were started during a frame. This means we no longer spin a
      frame for t=0, we jump straight to the first actual frame.
      
      Other changes in this patch:
      
      * rename WidgetsBinding._runApp to WidgetsBinding.attachRootWidget, so
        that tests can use it to more accurately mock out runApp.
      
      * allow loadStructuredData to return synchronously.
      
      * make handleBeginFrame handle not being given a time stamp.
      
      * make DataPipeImageProvider.loadAsync protected (rather than private),
        and document it. There wasn't really a reason for it to be private.
      
      * fix ImageConfiguration.toString.
      
      * introduce debugPrintBuildScope and debugPrintScheduleBuildForStacks,
        which can help debug problems with widgets getting marked as dirty but
        not cleaned.
      
      * make debugPrintRebuildDirtyWidgets say "Building" the first time and
        "Rebuilding" the second, to make it clearer when a widget is first
        created. This makes debugging widget lifecycle issues much easier.
      
      * make debugDumpApp more resilient.
      
      * debugPrintStack now takes a label that is printed before the stack.
      
      * improve the banner shown for debugPrintBeginFrameBanner.
      
      * various and sundry documentation fixes
      5bc8888e
  29. 07 Sep, 2016 1 commit
  30. 29 Aug, 2016 1 commit
  31. 09 Aug, 2016 1 commit
  32. 04 Jul, 2016 1 commit
  33. 21 Jun, 2016 1 commit
  34. 06 Jun, 2016 1 commit
  35. 25 May, 2016 1 commit
  36. 16 May, 2016 1 commit