378 Commits

Author SHA1 Message Date
Adam Barth
e59b25b21f Add RotatedBox which applies a rotation before layout
Transform applies its transform before painting, but sometimes you want
the widget to layout after its transform has been applied. We can't
handle general tranforms in this way because we can't couple width and
height constriants, but we can handle certain rotations.

Fixes #1214
2016-03-11 12:23:41 -08:00
Ian Hickson
1b9cd52081 Enable ALL THE LINTS
Well, all the easy ones, anyway.

For some reason `// ignore:` isn't working for me so I've disabled
lints that need that. Also disabled those that require a ton of work
(which I'm doing, but not in this PR, to keep it reviewable).

This adds:
- avoid_init_to_null
- library_names
- package_api_docs
- package_names
- package_prefixed_library_names
- prefer_is_not_empty
- sort_constructors_first
- sort_unnamed_constructors_first
- unnecessary_getters_setters
2016-03-10 23:15:31 -08:00
Ian Hickson
7cf2dbdf37 Fix crash when dumping the app if it uses RichText
Specifically:

* Handle null styles in TextSpan without crashing in toString().

* Handle null children in TextSpan child lists without crashing in
  toString().

* Handle entirely empty TextSpans in toString() explicitly.

* Assert that TextSpans don't contain nulls in various places. This is
  done more often than one might think necessary, because it turns out
  that TextSpan takes a (mutable) List for one of its arguments, so
  who knows what it will contain at any given time. By asserting all
  over the place, hopefully we'll catch it near the change if they do
  change it.

* Add a RichText example to Stocks to exercise RichText and TextSpans.

See also: https://github.com/flutter/flutter/issues/2514, https://github.com/flutter/flutter/issues/2519
2016-03-10 20:48:50 -08:00
Hixie
a16f07d945 Drop the argument to SceneBuilder's constructor 2016-03-08 14:17:01 -08:00
Adam Barth
22dc5590c9 Merge pull request #2488 from abarth/custom_sized_by_parent
RenderCustomMultiChildLayoutBox shouldn't be sizedByParent
2016-03-08 12:49:11 -08:00
Adam Barth
cdc2aefc69 ImageFit.cover doesn't respect alignment
We need to apply the alignment to the source rect because the ouput rect fills
the destination rect.

Fixes #1514
2016-03-08 12:39:46 -08:00
Adam Barth
3fb0df878d RenderCustomMultiChildLayoutBox shouldn't be sizedByParent
The getSize function from MultiChildLayoutDelegate might depend on information
other than the incomming constraints.

Fixes #2077
2016-03-08 12:10:00 -08:00
Adam Barth
501b948e05 Remove bogus intrinsic size assert
This patch tweaks the definition of max intrinsic size to give implementations
more wiggle room to compute there intrinsic sizes more efficiently.
Specifically, implementations can now ignore the incomming constraint in the
cross axis if they prefer.

This patch removes an assert that is no longer valid w.r.t. the new definition
of intrinsic sizing.

Fixes #2099
2016-03-08 11:14:00 -08:00
Hixie
3d802075e2 Assert binding ready before getting a11y listener
This adds an assert to verify that we have already got a binding when we
get a semantics listener. Otherwise we crash. (I mean, we still crash,
but now in checked mode we crash on an assert instead. Progress?)
2016-03-07 16:37:45 -08:00
Hixie
79c3905eb6 Cleanup around viewports 2016-03-07 10:26:38 -08:00
Ian Hickson
8a2865ced3 Merge pull request #2249 from Hixie/size-obs-11
SizeObserver crusade: Remove SizeObserver
2016-03-07 10:11:06 -08:00
Ian Hickson
826b13bde3 Include more details in the Red Box of Doom 2016-03-06 23:00:03 -08:00
Ian Hickson
6bef1736c1 Remove the second argument to MultiChildLayoutDelegate.performLayout()
Fixes https://github.com/flutter/flutter/issues/2403

I have an e-mail ready to send to flutter-dev about this.
2016-03-06 12:28:28 -08:00
Adam Barth
d4c177e17d Merge pull request #2428 from abarth/shell_dart
Factor MojoShell into shell.dart
2016-03-04 18:38:02 -08:00
Adam Barth
fbc0950da4 Factor MojoShell into shell.dart
Putting this code in a separate library let's services that depend only on the
shell be clearer about their dependencies.
2016-03-04 13:48:28 -08:00
Adam Barth
118c4ed8ae Teaches ChildViewConnection to wrap an existing ViewOwner
Fixes #1921
2016-03-04 12:45:06 -08:00
Adam Barth
e2a6b48803 Merge pull request #2418 from abarth/viewport_docs
Add dartdoc to VirtualViewport widgets
2016-03-04 11:04:32 -08:00
Adam Barth
24c0ab7f92 Add dartdoc to VirtualViewport widgets 2016-03-04 10:41:24 -08:00
Ian Hickson
047276a666 Random fixes to dartdocs, http lib, analyzer
This is a variety of trivial fixes that I collected while going through the dartdocs.
This does contain some non-comment changes.
2016-03-03 23:56:40 -08:00
Hixie
7cae550c71 Improve documentation for MultiChildLayoutDelegate 2016-03-03 14:57:34 -08:00
Adam Barth
865e3cc0ce Update engine
This change brings in a new version of Mojo, which has improved Mozart
interfaces.
2016-03-02 18:32:49 -08:00
Hixie
dfac9f9bd7 SizeObserver crusade: Remove SizeObserver 2016-02-26 18:55:34 -08:00
Hixie
438f209088 SizeObserver crusade: ScrollableMixedWidgetListState 2016-02-26 18:40:05 -08:00
Hixie
be865e1e1a SizeObserver crusade: RawInputLine 2016-02-26 10:17:47 -08:00
Hixie
f808055756 Remove size observers from scrollables.
Also:
 - add operator==/hashCode/toString to ViewportDimensions
 - add toString to BindingBase
 - add toString and debugFillDescription to ScrollBehavior
 - fix a bug in the RawGestureDetectorState's replaceGestureRecognizers
 - rename MixedViewport's onExtentsUpdate to onExtentChanged
 - replace ExtentsUpdateCallback with ValueChanged<double>
 - remove a microtask for dispatching scroll start, since it
   did not appear to have any purpose
 - added dartdocs to Instrumentation until I understood it
 - made all event dispatch in Instrumentation drain microtasks
2016-02-25 10:55:12 -08:00
Adam Barth
4b1a9ff14c Remove PointerRouter and GestureArena arguments
There's no reason to make clients supply a PointerRounter and a
GestureArena when constructing gesture recognizers. These objects are
statics and the gesture recognizers can just grab them directly.

Also, remove the callback constructor arguments. Almost no code used
them. Instead, people seem to prefer using the `..` operator to set
callbacks on the recognizers. Removing the arguments removes a bunch of
boilerplate.
2016-02-24 22:23:00 -08:00
Adam Barth
9d4e0e8551 Merge pull request #2142 from abarth/interactive_text
Add the ability to recognize gestures on text spans
2016-02-24 17:32:30 -08:00
Hixie
512b2e1972 Fix move() to call markNeedsLayout().
Otherwise, changing the order of your children (e.g. shuffling a list of
children) will have no visible effect.
2016-02-24 17:10:59 -08:00
Adam Barth
8e326d724a Add the ability to recognize gestures on text spans
Currently the interface for recognizing gestures on text spans is pretty ugly,
but hopefully we can improve it with time.

Fixes #156
2016-02-24 17:07:35 -08:00
Eric Seidel
fbe4cdf5c6 Merge pull request #2129 from eseidelGoogle/space_per_flex
Don't give children negative sizes when overconstrained
2016-02-24 15:30:16 -08:00
Eric Seidel
4e7a9de578 Fix two bugs in Flex exposed by the Game in landscape mode
One bug was masking the other, hence they both needed to be fixed
and tested separately.

@Hixie
2016-02-24 15:30:05 -08:00
Adam Barth
fb4dbf4584 Improve TextSpan
Now we just have one TextSpan class that handles both simple strings, trees of
children, and styling both. This approach simplifies the interface for most
clients.

This patch also removes StyledText, which was weakly typed and tricky to use
correctly. The replacement is RichText, which is strongly typed and uses
TextSpan.
2016-02-24 14:07:10 -08:00
Hixie
16e7c3a61c Trivial cleanup of getDistanceToBaseline
Turns out we don't need 'parent' outside the assert at all.
2016-02-23 12:56:07 -08:00
Hans Muller
ec6ed72e6a updated per review feedback 2016-02-17 08:38:40 -08:00
Hans Muller
ba3930cc88 Changed grid layout padding and inter row/column spacing 2016-02-16 16:51:27 -08:00
Adam Barth
6a9de1d735 Add docs for RepaintBoundary 2016-02-16 13:41:44 -08:00
Adam Barth
4408c820e1 Rename AutoLayoutParams to AutoLayoutRect
This object represents a rect the auto-layout system.
2016-02-15 16:29:27 -08:00
Adam Barth
c7d71d8ab1 Simplify the AutoLayout API
This patch makes it easier to use the auto layout API:

* We no longer use operator== because that requires an ugly cast by the
  API user.
* Also, "leftEdge" is now just "left" for less verbosity.
* AutoLayoutChild not implies its key from the AutoLayoutParam object.
* We now correctly layout every child of a RenderAutoLayout object even
  if the solver doesn't flush any updates to that child.
2016-02-15 15:25:21 -08:00
Adam Barth
262dd7a63b Add support for autolayout to widgets
This patch teaches the widget framework how to use Cassowary-based
autolayout. To integrate autolayout with widgets, I had to refactor how
RenderAutoLayout worked a bit. Now RenderAutoLayout follows the same
delegate pattern we use for custom paint and custom layout.
2016-02-15 03:01:40 -08:00
Ian Hickson
0334a833ef Rename debugDescribeSettings to debugFillDescription.
...so that it's easier to copy/paste between the rendering and settings layers.
2016-02-13 23:23:45 -08:00
Ian Hickson
f54b8ad510 Use Image.toString instead of rolling our own each time
I meant to check this in as part of https://github.com/flutter/flutter/pull/1852
but forgot to commit the local change, d'oh.
2016-02-13 17:54:10 -08:00
Ian Hickson
3eb1b412e0 Fix color of icons in drawers in dark theme.
This makes it match the material spec more.
https://www.google.com/design/spec/style/icons.html

Fixes https://github.com/flutter/flutter/issues/1357
2016-02-13 17:10:10 -08:00
Adam Barth
deb9d0b3a0 Remove references to dart:ui_internals
This library is being folded into dart:ui.

Fixes #83
2016-02-13 13:12:30 -08:00
Ian Hickson
ca4d10d33a Merge pull request #1820 from Hixie/rainbox
Expose more debugging tools in Stocks
2016-02-12 17:21:16 -08:00
Adam Barth
ad2fa5a6e7 Fix padding for ScrollableList
Previously we had totally wrong behavior. Now we have more correct behavior and
testing.

Fixes #1808
2016-02-12 13:39:05 -08:00
Hixie
a95c866bf3 Expose more debugging tools in Stocks 2016-02-12 11:41:17 -08:00
Hixie
0d1a3cfcff Assert that custom painters balance save/restores. 2016-02-12 08:35:45 -08:00
Ian Hickson
a94999ba50 Clean up imports and exports.
Each layer is supposed to reexport the parts of the previous layer
that are part of its API.

- In painting.dart, export from dart:ui all the Canvas-related APIs
  that make sense to be used at higher levels, e.g. PaintingStyle.

- Delete painting/shadows.dart. It was dead code.

- In rendering/object.dart, export all of painting.dart.

- In widgets/basic.dart, export all of painting.dart and
  animation.dart. Some classes in animation/ are renamed to make this
  less disruptive and confusing to the namespace.

- Split out Stocks back into an import model rather than a part model,
  so that it's easier to manage its dependencies on a per-file basis.

- Move Ticker to scheduler library.

- Remove as many redundant imports as possible now.

- Some minor nit picking cleanup in various files.
2016-02-11 00:06:23 -08:00
Hixie
296540168a More BoxConstraints asserts
The asserting will continue until morale improves!

* Convert all assert(*.isNormalized) checks to use the new
  debugAssertIsNormalized technology.
* Convert CustomMultiChildLayout to use the new RenderingError
  technology to greatly improve the detail in errors you get when
  writing CustomMultiChildLayout delegates.
* Add BoxConstraints.copyWith().
* Indent the descendants in the rendering exception data dump so that
  when you have multiple children it's clearer what's going on.
2016-02-10 13:32:04 -08:00
Hixie
3bd8bc3362 Improve asserts around BoxConstraints
Negative constraints never make sense, so catch those too.

Make RenderObject.layout's isNormalized assert use the newer more fancy
debug version of isNormalized.
2016-02-10 11:12:13 -08:00