1. 04 Dec, 2015 1 commit
  2. 01 Dec, 2015 1 commit
  3. 20 Nov, 2015 2 commits
  4. 18 Nov, 2015 1 commit
    • Hixie's avatar
      Pave the Foo.of() cowpath. · 65d81451
      Hixie authored
      I'm planning on adding more .of() functions and so to avoid further
      copypasta I'm providing some general utility functions here.
      65d81451
  5. 13 Nov, 2015 1 commit
    • Adam Barth's avatar
      Parent data not updated when reparenting using global keys · 35464f44
      Adam Barth authored
      When we reactivate a subtree that had a global key, we weren't updating the
      parent data because:
      
      1) The child wasn't in the tree when we updated the parent data element.
      2) The activated child didn't go through mount (just through update).
      
      This patch moves the parent data update work to when we attach the render
      object, which we do both during mount and when reactivating a child.
      
      Fixes #345
      35464f44
  6. 04 Nov, 2015 1 commit
    • Hixie's avatar
      Get more debug info into the rendering layer · 6d389722
      Hixie authored
      - change how we expose settings at the RenderObject layer so that it's
        easier to maintain.
      - expose the Widget owner chain in the RenderObject layer debug output
      - add debug info to RenderOpacity, RenderIgnorePointer, RenderListener
      - make the output for text nodes prettier
      6d389722
  7. 28 Oct, 2015 1 commit
  8. 27 Oct, 2015 1 commit
    • Ian Hickson's avatar
      Track scroll position · 8a900f90
      Ian Hickson authored
      - Change RouteArguments to pass the route's BuildContext rather than
        the Navigator. This caused the bulk of the examples/ and .../test/
        changes (those are mostly mechanical changes). It also meant I could
        simplify Navigator.of().
      
      - Make initState() actually get called when the State's Element is in
        the tree, so you can use Foo.of() functions there. Added a test for
        this also.
      
      - Provide a RouteWidget so that routes have a position in the Widget
        tree. The bulk of the route logic is still in a longer-lived Route
        object for now.
      
      - Make Route.setState() only rebuild the actual route, not the whole
        navigator.
      
      - Provided a Route.of().
      
      - Provided a Route.writeState / Route.readState API that tries to
        identify the clients by their runtimeType, their key, and their
        ancestors keys, up to the nearest ancestor with a GlobalKey.
      
      - Made scrollables hook into this API to track state. Added a test to
        make sure this works.
      
      - Fix the debug output of GestureDetector and the hashCode of
        MixedViewport.
      
      - Fixed ScrollableWidgetListState<T> to handle infinite lists.
      8a900f90
  9. 26 Oct, 2015 1 commit
  10. 21 Oct, 2015 1 commit
    • Hixie's avatar
      UniqueKey · 188aade2
      Hixie authored
      Sometimes you need a Key (not a GlobalKey) that is only equal to itself
      but can be used multiple times in the tree. Enter UniqueKey!
      188aade2
  11. 19 Oct, 2015 1 commit
  12. 16 Oct, 2015 1 commit
    • Hixie's avatar
      Sundry debugging aids and fixes · d0d84e16
      Hixie authored
      (These are all the debugging-related fixes and trivial typo fixes that I
      extracted out of my heroes branch.)
      
      Fix rendering.dart import order.
      
      Introduce a debugLabel for Performances so that when you create a
      performance, you can tag it so that if later you print it out, you can
      figure out which performance it is.
      
      Allow the progress of a PerformanceView to be determined (but not set).
      
      Allow subclasses of PerformanceView that are constants to be created by
      defining a constant constructor for PerformanceView.
      
      Introduce a debugPrint() method that throttles its output. This is a
      test to see if it resolves the problems people have been having with
      debugDumpRenderTree() et al having their output corrupted on Android. It
      turns out (according to some things I read On The Internets) that
      Android only has a 64KB kernel buffer for its logs and and if you output
      to it too fast, it'll drop data on the floor. If this does in fact
      reliably resolve this problem, we should probably move the fix over to
      C++ land (where "print" is implemented) so that any use of print is
      handled (avoiding the interleaving problem we have now if you use both
      debugPrint() and print()).
      
      Fix a bug with the debugging code for "size". In the specific case of a
      RenderBox having a parent that doesn't set parentUsesSize, then later
      the parent setting parentUsesSize but the child having its layout
      short-circuited (e.g. because the constraints didn't change), we didn't
      update the _DebugSize object to know that now it's ok that the size be
      used by the parent, and we'd assert.
      
      Also, allow a _DebugSize to be used to set the size of yourself.
      Previously you could only set your size from a regular Size or from your
      child's _DebugSize.
      
      Add more debugging information to various Widgets where it might be
      helpful.
      
      Make GlobalKey's toString() include the runtimeType so that when
      subclassing it the new class doesn't claim to be a GlobalKey instance.
      
      Include the Widget's key in the Element's description since we don't
      include it in the detailed description normally (it's in the name part).
      
      Fix a test that was returning null from a route.
      d0d84e16
  13. 15 Oct, 2015 1 commit
    • Hixie's avatar
      Improve debugging output · 1f40d96f
      Hixie authored
      Teach dumpRenderTree() to draw actual trees.
      Make the TextStyle output terser so it doesn't overflow the output.
      Make debugDumpApp() say what mode we're in (checked vs release).
      Hide lifecycle state from release mode dumps (since it's checked-only state).
      1f40d96f
  14. 12 Oct, 2015 1 commit
    • Hixie's avatar
      Lots of trivial warning fixes · f2cc43a4
      Hixie authored
      Add type annotations in many places.
      Fix some identifiers to have more lint-satisfying names.
      Make all operator==s consistent in style.
      Reorder some functions for consistency.
      Make ParentData no longer dynamic, and fix all the code around that.
      f2cc43a4
  15. 10 Oct, 2015 1 commit
  16. 08 Oct, 2015 2 commits
    • Hixie's avatar
      Have Flat buttons set their default text styles. · 892d60d5
      Hixie authored
      Also, have dialog buttons use the accent colour.
      Also, generally rationalise some of this stuff to match Material better.
      892d60d5
    • Hixie's avatar
      Changing themes caused crash · 8945e011
      Hixie authored
      The root cause was that we crawled the tree to mark anyone who depended
      on the updated theme dirty _after_ we crawled it to rebuild it. Thus, if
      anyone was already marked dirty when the process started, then got
      marked clean by the first (rebuild) walk, then got marked dirty again by
      the notification, they'd be clean when they got the notification,
      despite already being in the dirty list, which would cause an assertion.
      
      Also IconTheme didn't have an operator==, so it was independently too
      aggressive about updates.
      8945e011
  17. 07 Oct, 2015 1 commit
    • Hixie's avatar
      HomogeneousViewport support for Theme.of() · d45bf145
      Hixie authored
      Previously, RenderObjectElements didn't support being marked dirty. This
      is fine, except for MixedViewport and HomogeneousViewport, which have
      builder functions to which they hand themselves as a BuildContext. If
      those builder functions call, e.g., Theme.of(), then when the theme
      changes, the Inherited logic tries to tell the RenderObjectElement
      object that its dependencies changed and that doesn't go down well.
      
      This patch fixes this by making RenderObjectElement a BuildableElement,
      and making MixedViewport and HomogeneousViewport hook into that to
      rebuild themselves appropriately.
      
      Also, this was only found at all because ThemeData didn't implement
      operator==, so we were aggressively marking the entire tree dirty all
      the time. That's fixed here too.
      
      Also, I changed card_collection.dart to have more features to make this
      easier to test. This found bugs #1524, #1522, #1528, #1529, #1530, #1531.
      d45bf145
  18. 06 Oct, 2015 1 commit
  19. 05 Oct, 2015 3 commits
    • Hixie's avatar
      Fix Focus · fbf8174c
      Hixie authored
      Focus.at() and company should be on Focus, not FocusState.
      
      _notifyDescendants() was using the wrong runtimeType.
      
      Let InheritedWidget update the descendants during build.
      
      When you setState() during build, assert that you're not
      markNeedsBuild()ing someone who isn't a descendant.
      
      Typo in Widget.toString().
      fbf8174c
    • Hixie's avatar
      Simplify the usage of Navigator's routes argument · 90a0f630
      Hixie authored
      (These are changes cherry-picked from in-flight branches since they are
      more independent and could be helpful even without those changes.)
      
      - Change RouteBuilder's signature to take a single argument in which the
        other fields are placed, so that we can keep iterating on those
        arguments without having to break compatibility each time. Also, this
        makes defining route builders much simpler (only one argument to
        ignore rather than a variable number).
      
      - Expose the next performance to RouteBuilders, since sometimes the
        route itself might not be where it's used.
      
      - Allow BuildContext to be used to walk children, just like it can for
        ancestors
      
      - Allow BuildContext to be used to get the Widget of the current
        BuildContext
      
      - Allow StatefulComponentElement to be referenced with a type
        specialisation so that you don't have to cast when you know what the
        type you're dealing with actually is.
      90a0f630
    • Hixie's avatar
      Add more debugging information to Widgets. · f5834c9a
      Hixie authored
      Also, fix comment mentioning syncConstructorArguments.
      f5834c9a
  20. 02 Oct, 2015 2 commits
    • Hixie's avatar
      Regression test for #1215 · 846a073a
      Hixie authored
      I'm not sure this specific incarnation of the test ever crashed, since
      the original test depended on user interaction and now works fine, but
      just in case, here's a regression test for it so I can close that issue.
      
      This also slightly changes the Widget.toString() output to include the
      key since that will make debugging easier.
      846a073a
    • Adam Barth's avatar
      GlobalKeys should preserve state across tree mutations · f31f067e
      Adam Barth authored
      This patch causes widgets with global keys to drag their state (including their
      children) with them as they travel through the element tree.
      f31f067e
  21. 01 Oct, 2015 4 commits
  22. 26 Sep, 2015 1 commit
  23. 23 Sep, 2015 1 commit
    • Hixie's avatar
      Fix the minedigger game. · 00d0a44f
      Hixie authored
      Remove the Widgets framework's PointerEventListener definition now that
      the Rendering layer has one. It was previously clashing in files that
      imported both, which would result in it being hidden. Turns out
      MineDigger is the only example that this affects.
      00d0a44f
  24. 21 Sep, 2015 2 commits
  25. 19 Sep, 2015 1 commit
    • Adam Barth's avatar
      Prototype of fn3 · b4ff5ca6
      Adam Barth authored
      This patch contains a prototype of a new widget framework. In this framework,
      Components can be reused in the tree as many times as the author desires. Also,
      StatefulComponent is split into two pieces, a ComponentConfiguration and a
      ComponentState. The ComponentConfiguration is created by the author and can be
      reused as many times as desired. When mounted into the tree, the
      ComponentConfiguration creates a ComponentState to hold the state for the
      component. The state remains in the tree and cannot be reused.
      b4ff5ca6
  26. 18 Sep, 2015 3 commits
  27. 17 Sep, 2015 3 commits
    • Hixie's avatar
      Improve debugging aids for widgets, rendering. · 970c8ce8
      Hixie authored
      We need a short name more often than a tree dump, so toString() should
      be the short name.
      
      Make debugDumpRenderTree() a global like debugDumpApp(), for
      consistency. It's hard to remember the
      SkyBinding.instance.dumpRenderTree() incantation.
      
      Fixes #1179.
      970c8ce8
    • Hixie's avatar
      Fix removal logic in widgets · b1e64571
      Hixie authored
      We were not removing children if they were more recently synced than we
      were. This makes no sense. We should remove all children unless they
      were synced this very generation already (in which case they'll be
      somewhere else in the tree by now).
      b1e64571
    • Adam Barth's avatar
      Move mojo frontend into services.dart · 7064551a
      Adam Barth authored
      What's important about this code is that it's presenting services outside the
      VM, not the particular technology used to present the services.
      7064551a