209 Commits

Author SHA1 Message Date
Collin Jackson
56818d186d Merge pull request #801 from collinjackson/fix_dynamic_hero
Fix hero transition when using dynamic routes
2015-12-08 13:48:45 -08:00
Collin Jackson
d05c564cef Fix hero transition when using dynamic routes 2015-12-08 13:08:16 -08:00
Hixie
7514ce12a2 Clean up pointer handling.
Previously we tried to work around some possible badness from the engine
side, but now we are more assertive about the engine needing to do the
right thing.
2015-12-08 12:45:19 -08:00
Ian Hickson
2afa87dfcd Make BoxDecoration replaceable.
Factor out a reusable interface called Decoration from BoxDecoration.

Make all the consumers of BoxDecoration and the erstwhile BoxPainter
into consumers of Decoration.

Make a BoxPainter be something you get from a Decoration, rather than
something to which you pass a BoxDecoration.

Rename Shape to BoxShape now that it's documented specifically as
applying to boxes.

Move EdgeDims to its own file.

Move FractionalOffset up so that it's with the other helper classes in
its file rather than alone at the end.

Minor change to RenderClipOval's hit testing to avoid taking an
unnecessary square root.

Rename BoxDecorationPosition to DecorationPosition since
RenderDecoratedBox now takes any Decoration.

Implement hit testing for rounded rects.

Rename AnimatedBoxDecorationValue to AnimatedDecorationValue, and make
it support lerping across any Decoration (by deferring to the objects
involved).
2015-12-07 19:24:25 -08:00
Jason Simmons
9693cd5537 Add a LocaleQuery widget that can be used to fetch locale-specific data
Users of MaterialApp can provide an onLocaleChanged handler that will be
called to asynchronously fetch locale-specific data.  MaterialApp will
then instantiate a LocaleQuery that supplies the locale data to its
descendants.
2015-12-07 17:38:50 -08:00
Hixie
18beb4b45b Fix pointer up/move/cancel listeners
Fallout from the pointer refactor.
2015-12-07 15:20:21 -08:00
Adam Barth
73e62d386b Merge pull request #779 from abarth/basic_docs
Add some dartdoc to basic widgets
2015-12-07 10:57:00 -08:00
Hixie
7243c5629c Got the check the wrong way in the last patch.
TBR @abarth
2015-12-07 10:44:19 -08:00
Adam Barth
069fc6dd8b Add some dartdoc to basic widgets
These docs are largely duplicated from the cooresponding rendering classes. I'm
not sure how we can avoid repeating ourselves.
2015-12-07 10:27:53 -08:00
Hixie
aabae3af82 Ignore hover events. 2015-12-07 10:15:11 -08:00
Hixie
f3a65d0626 Export the new pointer event classes. 2015-12-07 09:12:28 -08:00
Adam Barth
2f3baf14b3 Parent data fixes
Add some missing functionality to ParentData subclasses.

Fixes #474
2015-12-06 21:34:41 -08:00
Adam Barth
9c00bc5378 Implement ImageRepeat
Fixes #158
2015-12-05 00:42:15 -08:00
Ian Hickson
f162555648 PointerInput refactor
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.
2015-12-04 22:42:38 -08:00
Adam Barth
abf0359569 Remove PaintingCanvas
We can just use Canvas now.  The two are the same thing.
2015-12-04 20:26:08 -08:00
Adam Barth
b83187d8f3 MultiChildLayoutDelegate should assert that all children have had layoutChild called exactly once
Fixes #692
Fixes #690
2015-12-04 12:31:58 -08:00
Adam Barth
eaab8fa18f Merge pull request #735 from abarth/custom_clip
Add custom clipping to ClipRect and ClipOval
2015-12-04 11:31:47 -08:00
Adam Barth
f66726609d Add custom clipping to ClipRect and ClipOval 2015-12-04 11:26:34 -08:00
Adam Barth
2a9de0aa97 Add the ability to custom paint foregrounds 2015-12-04 11:21:55 -08:00
Adam Barth
7e474f6d9c RenderFlex shouldn't assert when its out of space
Previously, we would assert with FlexJustifyContent.collapse if we ran out of
space. Now we do the same thing we do for the other types of justification,
which is to let the children's layout overflow.
2015-12-03 14:29:00 -08:00
Florian Loitsch
018bcbf2d9 Remove animation scheduler. 2015-12-01 20:36:52 -08:00
Ian Hickson
fbd612e662 Remove the assert when opening popup menus.
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.
2015-12-01 01:52:25 -08:00
Adam Barth
c810b0501f PopupMenu shouldn't use CustomPaint
Align is now powerful enough to do all the work we need to do here.
2015-11-30 14:23:14 -08:00
Adam Barth
09cf84d9b6 Move RenderTogglable to material.dart
Fixes #219
2015-11-25 23:15:17 -08:00
Hixie
993a41a452 Fix minor typos and style nits. 2015-11-25 17:03:37 -08:00
Hixie
9c5c511517 Opacity was dropping stuff on the floor.
Turns out we passed the wrong bounds to the PaintingContext constructor.

Fix, and assert that we don't do that again.
2015-11-25 11:00:02 -08:00
Adam Barth
860547c1d4 Add support for system-level routing
Now you can supply a route argument to flutter start:

  $ flutter start --route /foo

which will start the app at /foo instead of /.
2015-11-24 16:13:20 -08:00
Adam Barth
a35344f439 Fix upload of composited scene with non-zero offsets
We weren't correctly offsetting the clips when uploading composited scenes. Now
we apply the proper offsets.
2015-11-23 15:44:41 -08:00
Ian Hickson
ebf032b82a Avoid using transforms when simple offsets will do. 2015-11-21 20:59:26 -08:00
Adam Barth
c1b076308d Elaborate HSVColor interface
Fixes #507
2015-11-20 12:14:58 -08:00
Adam Barth
efbea05eb6 Make stocks list scrolling 2x faster on the main thread
This patch improves the repaint strategy for HomogeneousViewport so that the
list itself and every entry in the list has a repaint boundary. That means that
we only record list items as they enter the view.
2015-11-20 10:25:34 -08:00
Adam Barth
72329cf422 Callback identity is too fragile for CustomPaint
Many of the widgets that use CustomPaint were spamming repaints because
CustomPaint repaints when the identity of the onPaint callback changes, which
it does every build for StatelessComponents.

This patch changes CustomPaint to use a CustomPainter, similar to the new
custom layout widgets. The CustomPainter has a `shouldRepaint` function along
with its `paint` function. This function gives clients explicit control over
when the custom paint object repaints.
2015-11-20 08:20:59 -08:00
Tony Gentilcore
6562c14948 Add a FractionalOffset alignment parameter to BackgroundImage 2015-11-19 22:28:28 -08:00
Adam Barth
8fa223ff19 Add a repaint rainbow to help debug repaint issues
The repaint raindbow tints each recording with a rotating set of colors so you
can see which pixels are repainting each frame.
2015-11-19 15:40:25 -08:00
Adam Barth
6bfcf9bf17 Merge pull request #503 from abarth/dump_layer_tree
Add debugDumpLayerTree to dump the layer tree
2015-11-19 15:10:02 -08:00
Adam Barth
dfbd8c6a8a Add debugDumpLayerTree to dump the layer tree
To help debugging issues with the layer tree.
2015-11-19 14:45:40 -08:00
Adam Barth
2232ee568a Re-enable support for debugPaintLayerBordersEnabled
We lost this feature at some point. This patch brings it back.
2015-11-19 13:51:17 -08:00
Adam Barth
d689362dc5 Some paint functions were using canvas.save/restore around children
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
2015-11-19 12:29:36 -08:00
Adam Barth
4fb5bcd863 Merge pull request #486 from abarth/painting_context
Refactor PaintingContext
2015-11-19 11:24:09 -08:00
Adam Barth
fc576814d5 Refactor PaintingContext
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.
2015-11-19 11:18:04 -08:00
Adam Barth
f97a125eee Merge pull request #487 from abarth/fix_menu_crash
Popup menu in Stocks throws exception
2015-11-19 01:53:01 -08:00
Adam Barth
2d82489406 Popup menu in Stocks throws exception
Previously, we were putting a ForcedLayer just below the overlay, but that
causes trouble for routes like the popup menu that want to position themselves
inside the overlay. Instead, I've moved the ForcedLayer down into ModalRoute.

Also, rename ForcedLayer to RepaintBoundary, which is more descriptive of what
this widget does.

Fixes #485
2015-11-19 01:40:56 -08:00
Adam Barth
d234c65df5 Add alignment to image widgets
We already had the code to implement this feature. We just needed to plumb it
out to the widget API.
2015-11-18 20:50:37 -08:00
Adam Barth
298f4a6eca Reduce record time in Stocks drawer animation by 55%
Now we use a ForcedLayer in the navigator overlay to cache the recording for
each entry in the overlay. This mechanism just caches the display list, not the
underlying pixels.

Also, remove the "dispose" notification in the Layer tree because it was
disposing layer too eagerly. We don't actually need this notification for
anything other than eagerly freeing some C++ memory.
2015-11-18 15:31:13 -08:00
Adam Barth
c964a1f1f8 Switch from ui.tracing to dart:Developer Timeline
This change will let us remove the tracing interface from dart:ui and also
makes these timeline events show up in Observatory.
2015-11-18 12:57:58 -08:00
Adam Barth
e69e6c3eb1 Rename StatisticsBox to RenderStatisticsBox
Fixes #441
2015-11-17 16:10:15 -08:00
Adam Barth
0585a44a14 Merge pull request #435 from abarth/event_duration
Convert PointerInputEvent to Duration for timestamp
2015-11-17 11:56:38 -08:00
Adam Barth
7b2004b0e9 Convert PointerInputEvent to Duration for timestamp
To make the units clear.
2015-11-17 11:07:50 -08:00
Adam Barth
c769d120c4 Add a Positioned constructor from a Rect
A common pattern is to use a Positioned with a Sized box to give both an offset
from the edge as well as a fixed size to the child. This patch rolls into into
the Stack layout algorithm for simplicity.

Fixes #250
2015-11-16 23:23:54 -08:00
Adam Barth
fc2e31b8aa You should be able to nest Scaffolds
Prior to this patch, MultiChildLayoutDelegate couldn't be re-entered because it
cleared _idToChild when unwinding its stack. Now we restore the previous value
of _idToChild when we unwind.
2015-11-13 15:35:39 -08:00