4592 Commits

Author SHA1 Message Date
James Robinson
2c48b39db0 Merge pull request #1395 from jamesr/roll_mojo_sdk_dart_enum_fix
Bump Mojo SDK to 033ebba67 to get Dart enum case fix
2015-09-29 20:32:00 -07:00
Adam Barth
8aedb0157b Merge pull request #1397 from jason-simmons/editable_text_unused_import_sky
Fix a couple of analyzer warnings
2015-09-29 19:42:43 -07:00
Ian Hickson
315a8b0f20 Merge pull request #1394 from Hixie/draggable
Draggable
2015-09-29 18:00:47 -07:00
Hixie
a7443e75a5 Draggable
Introduce a Draggable class that wraps all the logic of dragging
something and dropping it on a DragTarget.

Update examples/widgets/drag_and_drop.dart accordingly.

Make the performance/transition part of routes optional.
2015-09-29 18:00:40 -07:00
Ian Hickson
b0ffe888b1 Merge pull request #1401 from Hixie/lists
Make hit testing work in horizontal scrolling list
2015-09-29 17:10:01 -07:00
Ian Hickson
71e96c4a02 Merge pull request #1386 from Hixie/toString
fn3: toString() and toStringDeep() debugging aids
2015-09-29 17:09:54 -07:00
Ian Hickson
e601015bff Merge pull request #1377 from Hixie/rebuild
Require giving a GlobalKey to UniqueComponent
2015-09-29 17:09:34 -07:00
Ian Hickson
8b0e60e258 Merge pull request #1376 from Hixie/toggleable
Make the checkbox in the stocks popup menu work.
2015-09-29 17:08:36 -07:00
Hixie
0efe4fe7f3 Make hit testing work in horizontal scrolling list
Previously, hitTestChildren in RenderBlockViewport just didn't support
horizontal scrolling, due to an oversight.
2015-09-29 16:30:18 -07:00
Hans Muller
7d40a8327f Merge pull request #1400 from HansMuller/land_snap_scrolling_unit_test
Land snap_scrolling_test.dart
2015-09-29 16:00:33 -07:00
Andrew Wilson
b08dfd6106 Merge pull request #1399 from apwilson/bug
Fix stop mimic assert bug.
2015-09-29 15:31:21 -07:00
Andrew Wilson
de6d8e5a2e Fix stop mimic assert bug. 2015-09-29 15:28:54 -07:00
Hans Muller
db55a483a0 Land snap_scrolling_test.dart 2015-09-29 15:28:42 -07:00
Ian Hickson
6def36ca57 Merge pull request #1371 from Hixie/fab-snack
Make the FAB move up when a Snack Bar slides in.
2015-09-29 15:23:49 -07:00
Hans Muller
61b211e48f Merge pull request #1398 from HansMuller/fix_analayzer_warning
Fix _scrollOffsetIsInBounds analayzer warning
2015-09-29 14:41:48 -07:00
Hans Muller
5952c44ff1 Fix _scrollOffsetIsInBounds analayzer warning 2015-09-29 14:21:57 -07:00
Hans Muller
1f6c1b4c3f Fix _scrollOffsetIsInBounds analayzer warning 2015-09-29 14:17:23 -07:00
Jason Simmons
e182e87080 Fix a couple of analyzer warnings
* Unused import in editable_text.dart
* Type mismatch in append_child_test.dart
2015-09-29 14:04:47 -07:00
Jason Simmons
fd101584b9 Merge pull request #1361 from jason-simmons/edit_text_scrollable_fn3
Allow the Input/EditableText widget to scroll horizontally
2015-09-29 13:20:58 -07:00
Collin Jackson
32216f6d52 Merge pull request #1393 from collinjackson/back_button
pressing back button should close app if there is no previous route
2015-09-29 12:32:04 -07:00
Collin Jackson
f8e9ae20f4 pressing back button should close app if there is no previous route 2015-09-29 12:28:28 -07:00
Hans Muller
e73745eef4 Merge pull request #1392 from HansMuller/more_rename_scroll_behavior_release
-straggler- Rename ScrollBehavior release() to createFlingScrollSimulation()

I accidentally updated the fn2 version of tabs.dart instead of the fn3 verison.

TBR=chinmay
2015-09-29 12:25:36 -07:00
Hans Muller
451e11af6e -straggler- Rename Scrollbehavior release() to createFlingScrollSimulation() 2015-09-29 12:14:19 -07:00
Chinmay Garde
2459b3a026 Merge pull request #1391 from chinmaygarde/master
Run a CPPLint pass on sky/compositor
2015-09-29 12:03:04 -07:00
Hans Muller
9ed96d6b10 Merge pull request #1390 from HansMuller/rename_scroll_behavior_release
Rename Scrollbehavior release() to createFlingScrollSimulation()
2015-09-29 12:02:13 -07:00
Chinmay Garde
d2d02a5fe6 Run a CPPLint pass on sky/compositor 2015-09-29 11:55:08 -07:00
Hans Muller
a0e208e234 Rename Scrollbehavior release() to createFlingScrollSimulation() 2015-09-29 11:45:18 -07:00
James Robinson
1ff0947b1c Bump Mojo SDK to 033ebba67 to get Dart enum case fix 2015-09-29 11:24:09 -07:00
Chinmay Garde
d13ad78e12 Merge pull request #1389 from chinmaygarde/master
Import stdint.h for uint64_t in compositor_options.h (Fix Build)
2015-09-29 11:20:56 -07:00
Chinmay Garde
cb50ab36dd Import stdint.h for uint64_t in compositor_options.h (Fix non Mac builds) 2015-09-29 11:19:53 -07:00
Hans Muller
efa6f019bc Merge pull request #1379 from HansMuller/scrolling_snap_offsets
SnapOffsets for fling scrolling

Initial snap offset support for ScrollableWidgetList (and ScrollableList<T>) and ScrollableMixedWidgetList. If a ```toSnapOffset(scrollOffset)``` function is provided, fling Scrolls will coast to the returned value. If ```alignmentOffset``` is specified then fling scrolls conclude when toSnapOffset's value lines up with the Scrollable widget's origin + alignmentOffset. For example if the Scrollable widget's height was 200.0, and alignmentOffset:100.0 was specified, then fling scrolls would end with the value returned by toSnapOffset() lined up with the center of the Scrollable.

This approach to Scrollable snapping assumes that the layout of whatever the Scrollable contains is known at the outset. This is often true however a ScrollableMixedWidgetList may not know its items' sizes until they've been reached by scrolling.

This is a first cut at snapping support. Among the things that remain to be done:
- Scrolling limits trump snapping. Snapping should probably trump scrolling limits.
- Drag scrolls aren't snapped. This may be desirable so perhaps the feature should be controlled with a flag.
- Specifying alignmentOffset as a percentage would probably be more convenient.
- It would be nice if one could wrap items in a SnapOffset value like: ```new SnapOffset(0.5, child: myItem)``` to snap to the center of the item.

Updated the CardCollection example: snapping and fixed size items can be turned on/off with Drawer checkboxes.
2015-09-29 11:15:23 -07:00
Hans Muller
68b00481a1 SnapOffsets for fling Scrolling
Initial snap offset support for ScrollableWidgetList (and ScrollableList<T>) and ScrollableMixedWidgetList. If a ```toSnapOffset(scrollOffset)``` function is provided, fling Scrolls will coast to the returned value. If ```alignmentOffset``` is specified then fling scrolls conclude when toSnapOffset's value lines up with the Scrollable widget's origin + alignmentOffset. For example if the Scrollable widget's height was 200.0, and alignmentOffset:100.0 was specified, then fling scrolls would end with the value returned by toSnapOffset() lined up with the center of the Scrollable.

This approach to Scrollable snapping assumes that the layout of whatever the Scrollable contains is known at the outset. This is often true however a ScrollableMixedWidgetList may not know its items' sizes until they've been reached by scrolling.

This is a first cut at snapping support. Among the things that remain to be done:
- Scrolling limits trump snapping. Snapping should probably trump scrolling limits.
- Drag scrolls aren't snapped. This may be desirable so perhaps the feature should be controlled with a flag.
- Specifying alignmentOffset as a percentage would probably be more convenient.
- It would be nice if one could wrap items in a SnapOffset value like: ```new SnapOffset(0.5, child: myItem)``` to snap to the center of the item.

Updated the CardCollection example: snapping and fixed size items can be turned on/off with Drawer checkboxes.
2015-09-29 11:09:59 -07:00
Chinmay Garde
c18c6bb343 Merge pull request #1383 from chinmaygarde/master
Visualize frame times over the past few seconds in the form of a graph
2015-09-29 10:54:10 -07:00
Chinmay Garde
2c16791321 Visualize frame times over the past few seconds in the form of a graph 2015-09-29 10:53:25 -07:00
Jason Simmons
9fd909cfd3 Allow the Input/EditableText widget to scroll horizontally
EditableText is now rendered using a custom RenderObject
(RenderEditableParagraph).  RenderEditableParagraph draws the cursor,
handles scroll offsets, and provides feedback about the size of the text for
use by the scroll behavior.
2015-09-29 10:40:37 -07:00
James Robinson
aa60ff399e Merge pull request #1384 from jamesr/empty_texture_crash
Empty texture crash
2015-09-28 18:23:23 -07:00
James Robinson
eef941140f Handle a picture in a TextureLayer with an empty cull rect
If we have a layer with a picture where the cull rect computes down to an empty
rectangle attempting to rasterize it into a ganesh surface will fail in the
same manner that trying to ganesh rasterize an empty layer will. This teaches
LayerHost to check for this case and handle it like an empty layer.

Fixes #1337
2015-09-28 18:22:52 -07:00
Hixie
cce3801677 fn3: toString() and toStringDeep() debugging aids 2015-09-28 17:09:26 -07:00
Chinmay Garde
13ee86e585 Merge pull request #1378 from chinmaygarde/master
Allow display of compositor statistics from Dart
2015-09-28 15:04:24 -07:00
Chinmay Garde
982731bf91 Make the single argument constructor to CompositorOptions explicit 2015-09-28 15:03:59 -07:00
Chinmay Garde
bfb9855c24 Since the statistics scene is not a container layer, rename the API in SceneBuilder 2015-09-28 12:40:19 -07:00
Chinmay Garde
ab927e23e7 Allow displaying compositor statistics from Dart 2015-09-28 12:20:28 -07:00
Devon Carew
16d05d1f9c Merge pull request #1375 from devoncarew/customize_dartdoc
customize the generated dartdoc to look like flutter.io
2015-09-28 12:01:54 -07:00
Hixie
68c57fb67f Require giving a GlobalKey to UniqueComponent
Having UniqueComponent automatically generate its own key is a trap. If
anyone ever creates a UniqueComponent in a build function (rather than
ahead of time) and forgets to pass a key, then that entire subtree is
going to be rebuilt, including layout, every time it's updated. Since
there's basically no way for us to catch this, we should at least force
the author to see the explicit "new GlobalKey()" call in their code.
2015-09-28 11:53:03 -07:00
Hixie
4942bf35e9 Make the checkbox in the stocks popup menu work.
Tapping on the menu item didn't animate the checkbox because the menu
takes 300ms to animate entirely away while the checkbox takes 200ms to
animate checked, and since the item with the checkbox was at the bottom,
we were only seeing about 60ms of the entire checkbox animation, which
isn't enough to notice it. So I moved it to the top of the menu.

Tapping on the checkbox didn't animate because nothing caused the menu
to rebuild when the callback was invoked. To trigger a rebuild, I now
call navigator.setState() explicitly, after changing out local state.

To make tapping the checkbox remove the menu, I also explicitly call
navigator.pop() in the code that handles the check. (I still explicitly
change the checkbox to show that that's possible. In principle one could
just treat the checkbox as an inert widget that happens to trigger pop,
and do all the checking/unchecking in the switch statement.)

I also made some minor style tweaks to files I was looking at while
dealing with this issue.
2015-09-28 11:15:05 -07:00
Hixie
e7ddb4ce78 Make the FAB move up when a Snack Bar slides in.
This changes how SnackBar works so you can use it anywhere, not just on
the bottom edge of the screen (it used to rely on overflowing its bounds
and having negative offsets... I'm not really sure how hit testing
worked on it before!).

To do this I introduced a new RenderBox, RenderOverflowBox, that lets
you set your child's size independent of your own. I needed this so that
the snack bar could use a SquashTransition to change its size, while not
affecting the layout of its child. This is exposed as OverflowBox in
fn3. I'm not sure if it's the best API. It doesn't let you position the
child (which is an issue if the size you give is smaller), it doesn't
let you give a loose constraint (which maybe you might want?). But it
handles this use case, so for now it's probably ok.

Making the FAB get repositioned out of the way of the Snack Bar is now
done in the Scaffold, which is in charge of positioning both of those
and is the place that knows that both exist.
2015-09-28 10:19:22 -07:00
Ian Hickson
eb6f2f069e Update gestures.md
Replace the old proposal with a placeholder for a description of the actual implementation.
2015-09-28 09:11:59 -07:00
Adam Barth
20fb026cc4 Merge pull request #1369 from abarth/notify_global_key_listeners
Actually notify GlobalKey listeners in fn3
2015-09-27 22:04:15 -07:00
Adam Barth
9752979e99 Actually notify GlobalKey listeners in fn3
This patch makes a number of changes:

1) buildDirtyComponents now prevents all calls to setState, not just those
   higher in the tree. This change is necessary for consistency with
   MixedViewport and HomogeneousViewport because those widgets already build
   subwidgets with that restriction. If the "normal" build didn't enforce that
   rule, then some widgets would break when put inside a mixed or homogeneous
   viewport.

2) We now notify global key listeners in a microtask after beginFrame. That
   means setState is legal in these callbacks and that we'll produce another
   frame if someone calls setState in such a callback.
2015-09-27 17:22:48 -07:00
Devon Carew
0c20a2096c customize the generated dartdoc like flutter.io 2015-09-26 23:19:25 -07:00