36 Commits

Author SHA1 Message Date
Ian Hickson
5494323db9 Move us to HashSet to avoid the overhead of tracking the order 2016-01-23 18:13:13 -08:00
Adam Barth
61f82ee18c Improve the factoring between Input and RawEditableLine
RawEditableLine is now responsible for the scrolling behavior, which
removes the need for callbacks between RawEditableLine and Input. It
also fixes a bug whereby the whole Input widget (including its icon)
would scroll when the text got long.
2016-01-23 01:09:22 -08:00
Adam Barth
432bfb4729 Add material design features to Input
Properly support labels, hints, icons, and custom typography.
2016-01-23 00:21:18 -08:00
Adam Barth
4e83a5ccdb Add the ability to lose focus
Fixes #1308
2016-01-22 14:01:51 -08:00
Adam Barth
bdef1038e9 Input widget shrinks when typing a space
This patch restructures how we size the editing region of the Input widget. Now
RenderEditableLine understands that it's a single-line editing widget and sizes
itself correctly.
2016-01-22 13:18:24 -08:00
Hans Muller
8218ff683f Change Block children to be a named parameter 2016-01-22 08:04:21 -08:00
Hans Muller
5ae1b41ca4 Added TwoLevelList 2016-01-21 16:27:18 -08:00
Adam Barth
f176ed27de Don't autofocus Input widgets by default
Instead, require the developer to opt-in to autofocusing because autofocusing
can be disruptive.

Fixes #1307
2016-01-21 14:11:50 -08:00
Adam Barth
5065339ce3 Move scroll_behavior into widgets
Previously this code was in the animation layer, which didn't make much
sense because scrolling is a widget concern.
2016-01-20 23:21:11 -08:00
Adam Barth
b988a875ad Remove Performance and AnimatedValue
This patch removes Performance and AnimationValue now that we've ported the
framework over to AnimationController and Tween. This patch also cleans up the
names of the AnimationController classes now that they don't have to avoid
conflicts with the old animation API. Specifically, I've made the following
renames:

 * Animated -> Animation
 * Evaluatable -> Animatable
 * PerformanceStatus -> AnimationStatus

This patch is just renames and moving code around. There aren't any changes in
behavior.
2016-01-20 13:49:35 -08:00
Adam Barth
6cea5dc80d Switch Navigator over to using AnimationController
This patch moves Navigator and related code over to using
AnimationController.
2016-01-20 08:43:04 -08:00
Ian Hickson
60d9ab7e7b Fix some intrinsic constraints contract violations.
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
2016-01-18 13:54:45 -08:00
Ian Hickson
7145784436 Rename ViewConstraints to ViewConfiguration
And rootConstraints to configuration.

This type and its variable have nothing to do with Constraints.

Fixes https://github.com/flutter/flutter/issues/829
2016-01-16 14:11:53 -08:00
Hixie
df78ec2b24 fix framework to match new mojo sdk
The dart bindings changed semantics in a non-compatible way.
2016-01-15 17:05:21 -08:00
Hixie
24cab8999c Tooltips
Introduces a new Tooltip class.
Adds support for tooltips to IconButton and Scaffold.
Adds some tooltips to various demos.

Also some tweaks to stack.dart that I made before I decided not to go
down a "CustomPositioned" route.
2016-01-14 12:21:56 -08:00
Adam Barth
82bb3bd40d ShaderMask needs to play nicely with compositing
This patch adds ShaderLayer and makes ShaderMask use it.

Fixes #1155
2016-01-11 21:57:54 -08:00
Adam Barth
056766414c Use a named argument for Widget children
Previously we used a positional argument for widgets that had multiple
children. Now we use a named argument that defaults to an empty list.

Fixes #241
2016-01-11 13:17:09 -08:00
Adam Barth
b2cef9f2b2 Rename ScrollDirection to Axis
We use the ScrollDirection for more than just scrolling.

Fixes #151
2016-01-11 11:28:42 -08:00
Adam Barth
07a9cc758a DoubleTap gesture asserts when rejected
The pointer router was using an iteration pattern that always delivers
handleEvent calls even if you remove a route during the iteration.
That's awkward to program against and causes trouble for the double-tap
gesture.

This patch switches PointerRouter to using a re-entrant iteration
pattern that supports removing routes (but not adding routes) during the
iteration.
2016-01-10 23:12:37 -08:00
Ian Hickson
c21b565f0b tightenWidth(), tightenHeight() => tighten(width:, height:)
This makes it more consistent with tightFor(), and also makes it
easier to tighten both directions at once when you're not sure you
will always do so (e.g. if you have a height and width that might be
null, and want to tighten whichever ones aren't null).
2016-01-10 19:49:07 -08:00
Ian Hickson
63c2ac9c4e AnimatedPositioned 2016-01-10 11:35:20 -08:00
Ian Hickson
ea3864b1e4 Fix Scrollable.of()
Make ancestorStateOfType() and ancestorRenderObjectOfType() support
subclassing.

Fixes https://github.com/flutter/flutter/issues/1087
2016-01-06 23:12:37 -08:00
Adam Barth
79c797a115 AnimatedContainer has an issue with one config value change and not another
If we're already at the target value, we fail to configure the variable. If
another variable animates, we re-animate the other variable.

Fixes #958
2016-01-06 17:09:39 -08:00
Adam Barth
e64d93a520 Switch PageableList over to using RenderList
This patch moves PageableList off HomogeneousViewport and onto RenderList and
friends, making it match the new ScrollableList.
2016-01-06 15:28:01 -08:00
Adam Barth
627c1ffb5c Replace ScrollableList with ScrollableList2
ScrollableList2 is complete and subsumes all the use cases for the original
ScrollableList.
2016-01-06 11:16:57 -08:00
Hans Muller
6494cd1f35 Make TabBarSelection a parameterized type 2016-01-06 10:54:16 -08:00
Adam Barth
b1f9138f52 Switch clients of ScrollableList to ScrollableList2
This patch also changed ScrollableList2 to use an Iterable instead of an
List for its children. This change lets clients map their underlying
data lazily. If the clients actually have a concrete list, we skip the
extra copy and grab the child list directly.
2016-01-05 16:21:00 -08:00
Adam Barth
46a178dce6 Generalize grid layout
This patch make grid layout much more flexible. The behavior is factored
out into a GridDelegate that's modeled after the custom layout
delegates. The patch includes a MaxTileWidthGridDelegate that implements
the old behavior and a FixedColumnCountGridDelegate that implements a
grid layout with a fixed number of columns.

Fixes #1048
2016-01-02 14:30:45 -08:00
Adam Barth
e9ac6d308d RenderBox should use Offset for child offset
Previously we used Position, which makes it harder to accumulate offsets
when walking the render tree.
2016-01-01 20:11:38 -08:00
Adam Barth
9484370042 ScrollbarPainter exception when scrolling MaterialList
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
2016-01-01 19:33:03 -08:00
Ian Hickson
b1dae4c4cc Various Input and Focus fixes
Require a Key on Input.

Simplify the API for Focus.at() and Focus.moveTo().
Fixes #236.
This will require an e-mail to flutter-dev.

Make Input grab focus onTap not onPointerDown.
Fixes #189.

Complain when you use Focus.at() with two different GlobalKeys that
are both in the tree at the same time.
Fixes #181.

Add dartdocs for Focus.moveTo() and Focus.moveScopeTo().
2015-12-28 15:05:51 -08:00
Ian Hickson
9bad312af2 RenderFractionalTranslation
- Add RenderFractionalTranslation, a render box that does a
  translation based on a FractionalOffset.

- Make FractionalOffset more like Offset
  - dx/dy instead of x/y
  - add /, ~/, %
  - add .zero

- Add alongOffset and alongSize to FractionalOffset so that you can
  easily apply FractionalOffset to Offsets and Sizes. (Better name
  suggestions welcome.)

- Add transformHitTests boolean to RenderTransform (also on
  RenderFractionalTranslation), and to classes based on it.

- Remove the fade from Dismissable. We can add it back using the
  builder-with-child pattern like Draggable if we need it. See #1003
  for tha feature request.

- Rename a bunch of variables in dismissable.dart.

- Change the test for dismissable to not handle leftwards dismisses
  one pixel different from rightwards dismisses, and cleaned up the
  resulting effect on the test (mostly making sure we had the right
  number of pumps, with comments explaining what each one was).

Fixes #174.
2015-12-24 11:04:25 -08:00
Hans Muller
6178fdff8a TabBarSelection is now expected to be an ancestor of its TabBar and TabBarView. 2015-12-22 14:12:26 -08:00
Hixie
ab01c7bf73 Less tree walking for compositing bits updates.
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.
2015-12-17 13:55:53 -08:00
Hans Muller
65dca5b578 Correct the TabBarView swipe selection change animation
The TabBarSelection change animation needs to start where the fling's drag gesture ended rather than from zero.  The intial vlaue of progress for the TabBarSelection's performance is now converted from the range used during an interactive drag, to the range used when animating from the previously selected tab to the new one.

TabBarSelection now requires a maxIndex parameter.
2015-12-16 15:30:45 -08:00
Ian Hickson
7151fdd054 Move flutter tests from packages/unit to packages/flutter/test 2015-12-16 08:00:57 -08:00