571 Commits

Author SHA1 Message Date
Adam Barth
b4ff5ca6ae Prototype of fn3
This patch contains a prototype of a new widget framework. In this framework,
Components can be reused in the tree as many times as the author desires. Also,
StatefulComponent is split into two pieces, a ComponentConfiguration and a
ComponentState. The ComponentConfiguration is created by the author and can be
reused as many times as desired. When mounted into the tree, the
ComponentConfiguration creates a ComponentState to hold the state for the
component. The state remains in the tree and cannot be reused.
2015-09-18 23:17:52 -07:00
Hixie
c363a9a240 Move findAncestorRenderObjectWrapper to RenderObjectWrapper
That way it's closer to where it's used, and it's more obvious that
anyone can write such functions.
2015-09-18 15:02:14 -07:00
Hixie
d4dd786bd7 Allow route transitions to be more flexible
- Fix AnimationTiming to have defaults for 'interval' and 'curve' since
  that seems to be how we use it.

- Merge RouteBase.build and RouteBase.buildTransition

- Get rid of HistoryEntry, since it added nothing

- Broke out RouteBase.createPerformance() so subclasses can change what
  is created.

- Build the routes backwards so that we more efficiently avoid building
  hidden routes.

- Introduce an explicit way (!hasContent) for RouteState to avoid
  building, rather than the implicit "build returns null" we had before.
2015-09-18 14:25:18 -07:00
jason-simmons
682116529e Merge pull request #1229 from jason-simmons/editable_text_placeholder_flex
In EditableText, wrap the placeholder text in a Row so it will expand to its parent's width
2015-09-18 14:24:26 -07:00
Jason Simmons
80b2c1732a In EditableText, wrap the placeholder text in a Row so it will expand to its parent's width
This will ensure that the width of an empty Input is consistent with the
width of an Input that contains text.

Also add a unit test for the Input widget and a way for tests to provide mock
implementations of Mojo services such as the keyboard.
2015-09-18 13:46:31 -07:00
Hixie
1429b15780 Adjust indent in Positioned to match style guide. 2015-09-18 12:08:44 -07:00
Ian Hickson
81e0ea3551 Merge pull request #1175 from Hixie/performance-view
Require that you pass transitions a performance.
2015-09-18 11:53:58 -07:00
Adam Barth
62458b7b6d Lift docs from Markdown to dartdoc
I've also removed the top-level description of the Sky package. Instead, we
should host that content on flutter.io.
2015-09-18 10:50:45 -07:00
Hixie
e73bbd949e Require that you pass transitions a performance.
This fixes #1103.
2015-09-18 10:30:47 -07:00
Hixie
01778c4895 Provide hooks for when exceptions are thrown.
This might be helpful for #1219.

Also, remove inDebugMode since it's redundant with just using asserts,
which compile entirely out in release mode.
2015-09-18 10:23:58 -07:00
Adam Barth
4467a268ce Move theme into material.dart
Also, introduce Colors and Typography to hold the material colors and the
typography declarations. Previously we expected clients of these libraries to
import them into a namespace, but that doesn't play nice with re-exporting them
from material.dart.
2015-09-18 09:57:21 -07:00
Hixie
499d832259 Handle the case of a Widget being moved down
When we sync() a Component, we need to clear the old Component's _child
pointer, otherwise if we reuse that Component we'll get confused about
what the old child is.
2015-09-17 17:23:20 -07:00
Ian Hickson
c0d326b17f Merge pull request #1218 from Hixie/toString
Improve debugging aids for widgets, rendering.
2015-09-17 16:27:02 -07:00
Ian Fischer
a89fdd92ce Kill the sky_server on Mac in a way that works to avoid unexpected behavior when working with more than one app at once. 2015-09-17 16:03:29 -07:00
Hixie
970c8ce842 Improve debugging aids for widgets, rendering.
We need a short name more often than a tree dump, so toString() should
be the short name.

Make debugDumpRenderTree() a global like debugDumpApp(), for
consistency. It's hard to remember the
SkyBinding.instance.dumpRenderTree() incantation.

Fixes #1179.
2015-09-17 13:59:46 -07:00
Hixie
b1e64571e6 Fix removal logic in widgets
We were not removing children if they were more recently synced than we
were. This makes no sense. We should remove all children unless they
were synced this very generation already (in which case they'll be
somewhere else in the tree by now).
2015-09-17 13:30:27 -07:00
Adam Barth
6d78b0501a Remove reference to oblique
We removed this value from the engine because it's not useful.
2015-09-17 11:19:24 -07:00
Adam Barth
7064551a45 Move mojo frontend into services.dart
What's important about this code is that it's presenting services outside the
VM, not the particular technology used to present the services.
2015-09-16 19:13:50 -07:00
Adam Barth
41b8ffd623 Create gestures.dart
This patch is part of a sequence of patches towards fewer top-level libraries.
In this patch, the gesture libraries are combined into one gestures.dart
library.
2015-09-16 18:25:00 -07:00
Collin Jackson
97b25712f0 Update scale API and add example 2015-09-16 17:20:23 -07:00
Collin Jackson
842e94e9f8 First pass at support for pinch gestures; panning issues (needs testing)
Conflicts:
	sky/packages/sky/lib/gestures/drag.dart
2015-09-16 17:20:23 -07:00
Hixie
2618f34dfe Improve debugging aids in framework.dart 2015-09-16 16:08:05 -07:00
Adam Barth
4561f9eb65 Remove extra return 2015-09-16 14:28:44 -07:00
Ian Hickson
0913fb71ba Merge pull request #1197 from Hixie/mimic
Factor out GlobalKeyWatcher
2015-09-16 14:27:44 -07:00
Hixie
f3655f346b Minor clean up of animation_performance.dart
- Reorder the methods so they are closer to run order.
- Reindent the code to match style guide.
2015-09-16 14:09:51 -07:00
Hixie
d866860605 Factor out GlobalKeyWatcher
This also moves the logic that tracks what Widget is being watched into
GlobalKeyWatcher, and much simplifies Mimic based on this.
2015-09-16 13:20:09 -07:00
Ian Hickson
ebf71f59d6 Merge pull request #1191 from Hixie/flex
FlexAlignItems.stretch didn't stretch
2015-09-16 13:09:08 -07:00
Adam Barth
a15b27d433 Remove support for onGestureFoo from Listener
Please use GestureDetector instead.
2015-09-16 12:43:33 -07:00
Adam Barth
74f7d9efee Move Drawer to GestureDetector
This fixes an issue in the stocks app in horizontal mode where you could both
scroll and drag the drawer at the same time.
2015-09-16 12:33:51 -07:00
Hixie
07e010de1b FlexAlignItems.stretch didn't stretch 2015-09-16 12:22:37 -07:00
Ian Hickson
4c79cc2278 Merge pull request #1188 from Hixie/animatedcontainer
AnimatedContainer isn't an AnimatedComponent.
2015-09-16 10:41:43 -07:00
Hixie
46234aeba5 AnimatedContainer isn't an AnimatedComponent.
Turns out it gets nothing out of inheriting from AnimatedComponent.
2015-09-16 09:29:54 -07:00
Adam Barth
6e410fd84d Remove MimicOverlay
This widget has no client.
2015-09-16 09:27:50 -07:00
Adam Barth
ac266c6789 Fix analyzer warnings 2015-09-16 09:07:23 -07:00
Ian Hickson
6b4352bb14 Merge pull request #1182 from Hixie/ancestor
Clarify why we don't assert that ancestor != null.
2015-09-16 09:06:14 -07:00
Ian Hickson
63d3b6db95 Merge pull request #1183 from Hixie/dismissable
Be more explicit about what's state in dismissable
2015-09-16 09:06:09 -07:00
Hixie
adf7c48d3e Be more explicit about what's state in dismissable
Move _activeCardDragEndPoint near build() so it's more obvious that it
is part of the build state.

Make a couple of functions use setState() since they modify variables
that are used by build().

Add a more detailed comment to the empty setState() call, since those
are dubious in general and need explaining when they occur, lest people
start using them as magic incantations to Make Things Work.
2015-09-15 17:51:11 -07:00
Hixie
8b538540f4 Clarify why we don't assert that ancestor != null.
Follow-up for #1140.
2015-09-15 17:49:22 -07:00
Hixie
12a09822c3 "newChild == oldChild || !newChild.mounted" assert
If a StatefulComponent marks itself dirty, gets rebuilt, then its parent
gets rebuilt, its parent will find that its child is from a newer
generation and hasn't changed. Previously, we considered two stateful
nodes to not be syncable even if they were the same; combined with the
way the "old" node looks like it's been put elsewhere (since it's
already been synced), we end up confused as to why the new node is
already mounted.

This fixes the problem by making the canSync logic consider two
identical nodes as syncable (since they are; syncChild() short-circuits
that case), and by changing syncChildren to consider identical nodes as
matches even if they are already synced.
2015-09-15 17:07:26 -07:00
Hixie
daf5c31215 Improve exception reporting in Widgets framework
This specifically improves the reporting of exceptions in syncChild(),
and makes the way we've been adding information to toStringName() less
ad-hoc and easier to extend.
2015-09-15 15:39:51 -07:00
Hixie
dfd821e595 Ignore generation of child if child is unchanged
Also:

 - don't mark a node as from the new generation if it is dirty, since we
   know it still has to be built.

 - establish the rule that you can't call setState() during initState()
   or build().

 - make syncChild() return early for unchanged children.

 - update the tests, including adding a new one.
2015-09-15 13:20:37 -07:00
Collin Jackson
8c0e5564fb Merge pull request #1164 from collinjackson/revert_iterable
Revert "MultiChildRenderObjectWrapper should take an Iterable instead of a List"
2015-09-14 15:13:24 -07:00
Collin Jackson
dc859ca28e Revert "MultiChildRenderObjectWrapper should take an Iterable instead of a List"
This reverts commit 7592213df29066cd357eaa4fffe4a19ed3bae189.
2015-09-14 14:59:04 -07:00
Hixie
69fcc4089d Clean up animation-related files.
Surface all the constructor arguments of AnimationTiming in all its subclasses.
Remove some pointless casts.
Fix some typos.
Put constructors first in class declarations.
Remove some blank lines where they just confused the structure of the code.
2015-09-14 14:07:03 -07:00
Adam Barth
f81175eb2b Merge pull request #1159 from abarth/more_docs
Address more comments from #1153
2015-09-14 12:07:19 -07:00
Ian Hickson
d176b30898 Merge pull request #1158 from Hixie/mounted
Various and sundry code cleanup
2015-09-14 11:35:08 -07:00
Adam Barth
48fbd6e5b7 Address more comments from #1153 2015-09-14 11:01:26 -07:00
Hixie
61f8651c30 Code cleanup
- Add documentation for AnimationTiming.
- typo: defaules -> defaults.
- added type information to isWatching() signature.
- made Widget.toStringName() include more useful information.
- cleaned up StatefulComponent._sync(): more specific signature, change
  redundant if to else, remove redundant cast.
- change order of TransitionBase arguments for consistency.
- prevent TransitionBase from affecting the performance in its
  constructor when it didn't create it (but see #1103).
- remove TODO() from @mpcomplete... no, there is not currently a better
  way to inherit a constructor, unfortunately.
2015-09-14 10:39:05 -07:00
Adam Barth
b0c300e526 Add dartdoc for proxy_box.dart and other code in rendering
Almost done adding dartdoc to the rendering layer.
2015-09-14 10:35:31 -07:00
Adam Barth
945b5bcd64 Remove use of some deprecated functions on sky.Paint
We now expose idiomatic setters for these properties. Eventually we'll remove
the setter functions.
2015-09-13 17:24:15 -07:00