1405 Commits

Author SHA1 Message Date
Misha Dynin
04dfa0bf87 Merge pull request #483 from mishadynin/imagecache
Introduced ImageProvider for asynchronously loading images.
2015-11-19 13:04:08 -08:00
Misha Dynin
7436dfd177 Introduced ImageProvider for asynchronously loading images.
Updated image cache to use any ImageProvider instance.
Renamed RawImage to AsyncImage and updated the interface
to use any ImageProvider instance.
2015-11-19 12:47:04 -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
Hixie
954713ab23 Snackbar Refactor
"showSnackBar()" is now a feature of a Scaffold. To get to a Scaffold
you either use a global key (`scaffoldKey.currentState.showSnackBar(...)`),
or you use `Scaffold.of(context)`.

Snack bars no longer have a route. They are entirely managed by the
Scaffold. Fixes #432.

Snack bars now queue up when you have several of them. Fixes #374.

Snack bars now auto-size themselves around their contents. This is step
one towards implementing multiline snack bars.

Snack bars now self-dismiss after some per-snackbar configurable period.

The self-dismissing pauses while a dialog is up above the snackbar (or
anything that uses ModalRoute). To enable this, there's now a
`ModalRoute.of(context)` API that returns the current ModalRoute, and
you will be rebuilt if you asked for this and the route's "current"
status changes. To implement this, the Navigator now rebuilds
unconditionally any time it pushes or pops a route.

Snack bars now use the curves that Android uses for snack bars.

Snack bar contents now fade in.
2015-11-18 17:01:21 -08:00
Adam Barth
95eb66856e Reduce paint time for Stocks drawer animation by 88%
Now we use a forced layer around the reprojected content of the drawer, which
means we don't have to re-record it during the slide animation. This saves 2ms
per frame.

The total main-thread time for the drawer animation is now 2.0ms.
2015-11-18 16:14:54 -08:00
Adam Barth
ec5b1c1a96 Merge pull request #476 from abarth/forced_layer
Reduce record time in Stocks drawer animation by 55%
2015-11-18 15:44:35 -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
Hans Muller
0dc652bd66 Corrected Card resting elevation, tabs example toolbar 2015-11-18 14:33:08 -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
Hans Muller
d9153a13c6 Update shadow rendering
Shadows now render as three seprate MaskFilter.blur components per the most recent Material spec.

The shadows Map was replaced by a similar Map called elevationToShadow with entries that match the 10 elevations specifed by http://www.google.com/design/spec/what-is-material/elevation-shadows.html.

The "level" property (many classes) is now called "elevation", to match the Material spec.

BoxShadow now includes a spreadRadius parameter - as in CSS box-shadow. Renamed the BoxShadow blur property to blurRadius to further align BoxShadow with CSS box-shadow.
2015-11-18 07:58:28 -08:00
Adam Barth
b065036a0a Merge pull request #454 from abarth/repeating_performance
Add support for repeating performances
2015-11-17 22:19:08 -08:00
Adam Barth
49b0843c84 Add support for repeating performances
Fixes #447
2015-11-17 17:05:38 -08:00
Hixie
65d814516b Pave the Foo.of() cowpath.
I'm planning on adding more .of() functions and so to avoid further
copypasta I'm providing some general utility functions here.
2015-11-17 16:49:22 -08:00
Adam Barth
e69e6c3eb1 Rename StatisticsBox to RenderStatisticsBox
Fixes #441
2015-11-17 16:10:15 -08:00
Florian Loitsch
7d7e20fd41 Merge pull request #405 from floitschG/scheduler
Add a task scheduler.
2015-11-17 16:05:26 -08:00
Florian Loitsch
371bf37dd9 Add a task-scheduler.
The current implementation is still pretty rudimentary.
2015-11-17 15:59:54 -08:00
Hixie
ad2dccf9d2 Fix focus bug that was breaking nested navigators
Turns out we were assuming that once the global key is gone, our
listener is unregistered. It isn't.

I'm planning on adding a test as part of my nested navigator work.
2015-11-17 15:54:05 -08:00
Hixie
173a71ea5b Notify the previous route when pushing and popping
This makes HeroController ignore StateRoutes when deciding where to
animate heroes to and from.
2015-11-17 13:15:10 -08:00
Adam Barth
a3d4741977 Update engine 2015-11-17 11:57:12 -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
Hixie
56b9245b1a Allowing us to have a single error seems silly. 2015-11-17 11:08:46 -08:00
Adam Barth
7b2004b0e9 Convert PointerInputEvent to Duration for timestamp
To make the units clear.
2015-11-17 11:07:50 -08:00
Ian Hickson
1d3f734a92 Merge pull request #414 from Hixie/fix-demos
Fix some examples.
2015-11-17 09:53:54 -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
Collin Jackson
31f6b8f6a5 Make fetch.dart and mojo_client.dart share a network service singleton 2015-11-16 22:00:47 -08:00
Collin Jackson
b07d55d1b3 Remove redundant fetch functions and avoid crashing when no headers are set 2015-11-16 18:31:57 -08:00
krisgiesing
3350c0c3e4 Merge pull request #415 from krisgiesing/editable_fix
Fix issue with forward-delete in editable text widget
2015-11-16 16:31:05 -08:00
Kris Giesing
2acc2f6f84 Back out irrelevant change 2015-11-16 16:26:42 -08:00
Kris Giesing
58df220ea4 Fix issue with forward-delete in editable text widget 2015-11-16 16:07:21 -08:00
Adam Barth
7ad947ac66 Update sky_engine and sky_services 2015-11-16 15:56:32 -08:00
Hixie
5e221334fa Fix some examples.
- drag and drop was using the wrong draggables (long press vs short
  press).

- navigation.dart wasn't using material correctly and so was ending up
  with some red text.

- piano wasn't followig our style guide even a little.

- date picker was not scrollable.
2015-11-16 15:54:40 -08:00
Collin Jackson
e3b9094f2a Fix #104 Support for setting HTTP headers 2015-11-16 14:10:58 -08:00
Hixie
309d25d4bb Move Material page animations to Material layer.
PageRoute is now MaterialPageRoute.

This also changes the following:

- Now the HeroController is a Navigator observer, rather than a feature
  of HeroPageRoutes, which are gone. This means heroes can work between
  any kind of ModalRoute now.

- ModalPageRoute is moved from modal_barrier.dart to routes.dart.

- It allows routes to opt-out of their modal barrier being a shortcut to
  popping the route.

- Features of PageRoute that aren't Material-specific get promoted to
  ModalRoute features: storage, the subtree key, offstageness...

The AnimatedModalBarrier is still a ModalRoute feature.
2015-11-16 12:53:12 -08:00
Hans Muller
8b1dd598e1 Merge pull request #376 from HansMuller/stocks_bug
Safely clear SnackBack and BottomSheet placeholders

Correct one stocks demo bug: displaying the stock symbol viewer (single tap on a row) while a BottomSheet or SnackBar was up, would assert.

Thep SnackBack and BottomSheet placeholder keys are cleared when they're obscured by a route with an opaque OverlayEntry. So in that case there's no need to try and clear the placeholder's child again.
2015-11-16 08:11:15 -08:00
Hans Muller
7955995f24 Safely clear SnackBack and BottomSheet placeholders 2015-11-13 16:13:35 -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
John McCutchan
d1e62a39e2 Update four callers of Message constructor to pass in required arguments 2015-11-13 14:39:06 -08:00
John McCutchan
e31d103521 Bump dependencies on sky_engine and sky_services 2015-11-13 13:24:32 -08:00
Adam Barth
69e511d207 Cursor is tiny when there's no text in an input
Now we use a zero-width space to force the engine to resolve the font and tell
us how large the text is likely to be once there's text in the widget.

Fixes #302
2015-11-13 10:17:23 -08:00
Adam Barth
71578c8b0d Update to a new engine 2015-11-13 09:37:21 -08:00
Ian Hickson
fc5832dcdf Merge pull request #355 from Hixie/tap-bugs
Fix tapcancel on slop.
2015-11-12 22:22:42 -08:00
Ian Hickson
16471d92b9 Merge pull request #353 from Hixie/hit-testing-cleanup
Hit Testing Cleanup
2015-11-12 22:22:36 -08:00
Ian Hickson
876459e898 Merge pull request #354 from Hixie/more-debugging-for-listeners
More detailed debugging info for RenderPointerListener et al
2015-11-12 22:22:34 -08:00
Ian Hickson
c40cb176e3 Fix tapcancel on slop.
Make sure to send tapcancel when the primary pointer fails because of
slop, even if the gesture won by default.

Also, minor cleanup and clarification of an invariant.
2015-11-12 22:17:47 -08:00
Ian Hickson
1aa2751ba8 Trivial whitespace fixes. 2015-11-12 22:10:16 -08:00