1. 09 Feb, 2016 1 commit
  2. 06 Feb, 2016 1 commit
  3. 05 Feb, 2016 1 commit
    • Hixie's avatar
      Improve exceptions and asserts for rendering lib. · 1a0484cc
      Hixie authored
      * Use actual exceptions rather than assertions containing code
        containing strings when trying to give messages to authors.
      * Introduce RenderingError which is an AssertionError that takes a
        string argument, to support the above.
      * Provide a BoxDimensions.hasBoundedWidth/hasBoundedHeight API.
      * Document BoxDimensions.isNormalized.
      * Provide more useful information when we assert isNormalized and find
        that it is false.
      * When finding the size is infinite, crawl the tree to figure out which
        render box is likely responsible for the infinite constraints.
      * Provide more information when size doesn't match the constraints.
      * Provide more information when intrinsic dimension methods violate the
        constraints.
      * Only spam a huge amount of information for the first exception from
        the rendering library. I've noticed a lot of people looking at the
        last exception printed rather than the first and that's very
        misleading -- after the rendering library hits an exception, all bets
        are off regarding what'll happen in the future. All kinds of asserts
        might fire.
      * Improve docs around the debug methods and flags for the above.
      * Make Block default to have no children. Previously, giving no children
        crashed with a confusing message about a null deref in an assert.
      1a0484cc
  4. 03 Feb, 2016 1 commit
    • Adam Barth's avatar
      Initial work to add Mozart child views · f30398a4
      Adam Barth authored
      This patch sketches out the basic widgets for creating Mozart child
      views. We're still missing some of the machinery, so we can't quite
      create child views yet, but once we supply the ViewHost and teach the
      compositor how to actually display the child scenes, we'll have
      something that works.
      f30398a4
  5. 02 Feb, 2016 1 commit
    • Adam Barth's avatar
      Viewport fails to clip its AssetImage child · 167fbced
      Adam Barth authored
      We were getting confused about our layer tree offsets, which caused us
      to set an incorrect cull rect for the recording inside a viewport.
      
      This patch does away with layer tree offsets almost entirely. We now use
      them only at repaint boundaries, which is where we want the layer tree
      to be mutable.
      
      Fixes #1460
      167fbced
  6. 29 Jan, 2016 1 commit
  7. 27 Jan, 2016 2 commits
    • Hixie's avatar
      Semantics · 28a17883
      Hixie authored
      28a17883
    • Adam Barth's avatar
      updateChildren() needs to walk the list forward · 05839e51
      Adam Barth authored
      This patch changes the framework to walk the child list forwards so that build
      functions with global side effects do sensible things. Specifically, if you
      have a number of autofocusable children, the first one the list will acquire
      the focus because it gets built first now.
      
      Fixes #182
      05839e51
  8. 18 Jan, 2016 1 commit
    • Ian Hickson's avatar
      Fix some intrinsic constraints contract violations. · 60d9ab7e
      Ian Hickson authored
      RenderBlock wasn't constraining the results.
      RenderPadding wasn't constraining the results (which matters
      especially when the constraints can't fit the padding in the first
      place).
      RenderViewport wasn't constraining the results.
      
      Add a test for the block case.
      
      To catch this kind of thing in the future, add some asserts to
      debugDoesMeetConstraints() that all four intrinsic functions return
      values that are within the constraints.
      
      RenderBlockViewport doesn't support returning intrinsics, so turn off
      the "no intrinsic support" asserts (and return zero) when we're doing
      this new assert.
      
      This new assert screwed up the custom layout classes' tests, so adjust
      those tests to ignore the callbacks invoked from these asserts.
      
      Add to the _debugReportException() method a short summary of the
      descendants of this node. It's important to have this information when
      debugging errors like these intrinsic constraints contract violations
      because often nodes just pass the values through to their child so you
      have to go several steps down to find the actual problem.
      
      Fixes https://github.com/flutter/flutter/issues/1210
      60d9ab7e
  9. 12 Jan, 2016 4 commits
  10. 11 Jan, 2016 3 commits
  11. 08 Jan, 2016 2 commits
    • Ian Hickson's avatar
    • Adam Barth's avatar
      Optimize repainting in Scaffold · ee88a685
      Adam Barth authored
      Previously, we triggered a layout (and hence a repaint) when sliding the
      draw because we gave the draw loose constraints. The drawer uses an
      Align to move itself to the proper side of the screen, so it can have
      tight constraints, which makes it a layout boundary.
      
      Also, don't trigger a layout just because the Scaffold rebuilds. There
      isn't any state in the scaffold custom layout, so it doesn't need to
      repaint just because we created a new instance of the delegate.
      
      Finally, add the debugging infrastructure I used to find these issues.
      ee88a685
  12. 07 Jan, 2016 2 commits
  13. 02 Jan, 2016 1 commit
    • Adam Barth's avatar
      ScrollbarPainter exception when scrolling MaterialList · 94843700
      Adam Barth authored
      When assigning a new overlayPainter, we were detaching the old overlay
      painter even if the render object itself wasn't attached. Now we only
      twiddle the attach/detach state of the overlay painter when we're
      attached ourselves.
      
      Fixes #1047
      94843700
  14. 17 Dec, 2015 1 commit
    • Hixie's avatar
      Less tree walking for compositing bits updates. · ab01c7bf
      Hixie authored
      Use the same technique for updating compositing bits as layout and
      painting. This avoids walking the entire rendering tree when all you
      need to update is a small subtree.
      ab01c7bf
  15. 16 Dec, 2015 1 commit
  16. 14 Dec, 2015 1 commit
  17. 11 Dec, 2015 1 commit
    • Ian Hickson's avatar
      applyPaintTransform() improvements · d1364643
      Ian Hickson authored
      Previously, applyPaintTransform() had to know how it was positioned in
      its parent, even though that's really the parent's responsibility.
      
      Now, applyPaintTransform() is given a child and applies the transform
      that it would give the child during paint.
      
      This makes it possible for applyPaintTransform() to work across
      coordinate system boundaries (e.g. box to sector, or view to box --
      previously, view to box only worked because we explicitly skipped that
      step -- since view doesn't actually apply a transform, it doesn't
      really matter).
      d1364643
  18. 10 Dec, 2015 1 commit
  19. 09 Dec, 2015 1 commit
    • Ian Hickson's avatar
      Catch un-normalized BoxConstraints · 1a049c14
      Ian Hickson authored
      Add BoxConstraints.isNormalized feature.
      
      Use this feature in asserts in all the intrinsic dimension methods, in
      various relevant BoxConstraints methods, and in layout().
      
      Wrap the _DebugSize logic in BoxConstraints.constrain() in an assert
      block to avoid a branch in release mode.
      
      Remove the logic in BoxConstraints.isSatisfiedBy() that dealt with
      non-normalized values.
      
      Add BoxConstraints.normalize().
      
      Make RenderCustomOneChildLayoutBox.performLayout() only set
      parentUsesSize on the child if the constraints aren't tight.
      1a049c14
  20. 08 Dec, 2015 1 commit
  21. 05 Dec, 2015 2 commits
    • Ian Hickson's avatar
      PointerInput refactor · f1625556
      Ian Hickson authored
      Instead of PointerInputEvent having a "type" field, we now have a
      different class for each pointer type.
      
      This has ripple effects throughout the system.
      
      I also did code cleanup in affected files while I was there.
      f1625556
    • Adam Barth's avatar
      Remove PaintingCanvas · abf03595
      Adam Barth authored
      We can just use Canvas now.  The two are the same thing.
      abf03595
  22. 02 Dec, 2015 1 commit
  23. 01 Dec, 2015 1 commit
    • Ian Hickson's avatar
      Remove the assert when opening popup menus. · fbd612e6
      Ian Hickson authored
      Some paint bounds are in fact empty, e.g. at the start of a growing
      animation if there's also a fade, the initial 0x0 box will also be
      opacity:0, and might get a dedicated layer and PaintingContext.
      fbd612e6
  24. 26 Nov, 2015 1 commit
  25. 25 Nov, 2015 1 commit
  26. 19 Nov, 2015 5 commits
    • Adam Barth's avatar
      Add a repaint rainbow to help debug repaint issues · 8fa223ff
      Adam Barth authored
      The repaint raindbow tints each recording with a rotating set of colors so you
      can see which pixels are repainting each frame.
      8fa223ff
    • Adam Barth's avatar
      Add debugDumpLayerTree to dump the layer tree · dfbd8c6a
      Adam Barth authored
      To help debugging issues with the layer tree.
      dfbd8c6a
    • Adam Barth's avatar
      Re-enable support for debugPaintLayerBordersEnabled · 2232ee56
      Adam Barth authored
      We lost this feature at some point. This patch brings it back.
      2232ee56
    • Adam Barth's avatar
      Some paint functions were using canvas.save/restore around children · d689362d
      Adam Barth authored
      This pattern breaks when using compositing because we need to lift those
      operations into the compositing tree. This patch removes all the ones I could
      find and adds an assert to help prevent more from getting introduced.
      
      Fixes #191
      d689362d
    • Adam Barth's avatar
      Refactor PaintingContext · fc576814
      Adam Barth authored
      This patch simplifies PaintingContext with several goals:
      
      1) We now call a callback instead of assuming the caller has a single child to
         paint. This change will let us handle render objects that wish to paint more
         than one child.
      2) We now avoid creating lots of empty picture layers because we don't eagerly
         start recording pictures. Instead, we wait for the first caller to touch the
         canvas before creating the picture recorder.
      3) We now are more consistent about which values have incorporated the painting
         offset.
      fc576814
  27. 18 Nov, 2015 1 commit