Commit 4d2b3f00 authored by Adam Barth's avatar Adam Barth

Merge pull request #2610 from abarth/update_context

Provide the BuildContext to createRenderObject and updateRenderObject
parents 5ebe61a1 0277b075
......@@ -37,7 +37,7 @@ class RenderDots extends RenderConstrainedBox {
class Dots extends OneChildRenderObjectWidget {
Dots({ Key key, Widget child }) : super(key: key, child: child);
RenderDots createRenderObject() => new RenderDots();
RenderDots createRenderObject(BuildContext context) => new RenderDots();
}
void main() {
......
......@@ -67,14 +67,14 @@ class _CheckboxRenderObjectWidget extends LeafRenderObjectWidget {
final Color inactiveColor;
final ValueChanged<bool> onChanged;
_RenderCheckbox createRenderObject() => new _RenderCheckbox(
_RenderCheckbox createRenderObject(BuildContext context) => new _RenderCheckbox(
value: value,
activeColor: activeColor,
inactiveColor: inactiveColor,
onChanged: onChanged
);
void updateRenderObject(_RenderCheckbox renderObject, _CheckboxRenderObjectWidget oldWidget) {
void updateRenderObject(BuildContext context, _RenderCheckbox renderObject) {
renderObject
..value = value
..activeColor = activeColor
......
......@@ -279,9 +279,9 @@ class InkFeatures extends OneChildRenderObjectWidget {
final Color color;
RenderInkFeatures createRenderObject() => new RenderInkFeatures(color: color);
RenderInkFeatures createRenderObject(BuildContext context) => new RenderInkFeatures(color: color);
void updateRenderObject(RenderInkFeatures renderObject, InkFeatures oldWidget) {
void updateRenderObject(BuildContext context, RenderInkFeatures renderObject) {
renderObject.color = color;
}
}
......
......@@ -72,14 +72,14 @@ class _RadioRenderObjectWidget extends LeafRenderObjectWidget {
final Color activeColor;
final ValueChanged<bool> onChanged;
_RenderRadio createRenderObject() => new _RenderRadio(
_RenderRadio createRenderObject(BuildContext context) => new _RenderRadio(
value: selected,
activeColor: activeColor,
inactiveColor: inactiveColor,
onChanged: onChanged
);
void updateRenderObject(_RenderRadio renderObject, _RadioRenderObjectWidget oldWidget) {
void updateRenderObject(BuildContext context, _RenderRadio renderObject) {
renderObject
..value = selected
..activeColor = activeColor
......
......@@ -55,13 +55,13 @@ class _SliderRenderObjectWidget extends LeafRenderObjectWidget {
final Color activeColor;
final ValueChanged<double> onChanged;
_RenderSlider createRenderObject() => new _RenderSlider(
_RenderSlider createRenderObject(BuildContext context) => new _RenderSlider(
value: value,
activeColor: activeColor,
onChanged: onChanged
);
void updateRenderObject(_RenderSlider renderObject, _SliderRenderObjectWidget oldWidget) {
void updateRenderObject(BuildContext context, _RenderSlider renderObject) {
renderObject
..value = value
..activeColor = activeColor
......
......@@ -68,7 +68,7 @@ class _SwitchRenderObjectWidget extends LeafRenderObjectWidget {
final Color inactiveTrackColor;
final ValueChanged<bool> onChanged;
_RenderSwitch createRenderObject() => new _RenderSwitch(
_RenderSwitch createRenderObject(BuildContext context) => new _RenderSwitch(
value: value,
activeColor: activeColor,
inactiveColor: inactiveColor,
......@@ -77,7 +77,7 @@ class _SwitchRenderObjectWidget extends LeafRenderObjectWidget {
onChanged: onChanged
);
void updateRenderObject(_RenderSwitch renderObject, _SwitchRenderObjectWidget oldWidget) {
void updateRenderObject(BuildContext context, _RenderSwitch renderObject) {
renderObject
..value = value
..activeColor = activeColor
......
......@@ -265,13 +265,13 @@ class _TabBarWrapper extends MultiChildRenderObjectWidget {
final bool isScrollable;
final TabLayoutChanged onLayoutChanged;
_RenderTabBar createRenderObject() {
_RenderTabBar createRenderObject(BuildContext context) {
_RenderTabBar result = new _RenderTabBar(onLayoutChanged);
updateRenderObject(result, null);
updateRenderObject(context, result);
return result;
}
void updateRenderObject(_RenderTabBar renderObject, _TabBarWrapper oldWidget) {
void updateRenderObject(BuildContext context, _RenderTabBar renderObject) {
renderObject
..selectedIndex = selectedIndex
..indicatorColor = indicatorColor
......
......@@ -19,9 +19,9 @@ class AutoLayout extends MultiChildRenderObjectWidget {
final AutoLayoutDelegate delegate;
RenderAutoLayout createRenderObject() => new RenderAutoLayout(delegate: delegate);
RenderAutoLayout createRenderObject(BuildContext context) => new RenderAutoLayout(delegate: delegate);
void updateRenderObject(RenderAutoLayout renderObject, AutoLayout oldWidget) {
void updateRenderObject(BuildContext context, RenderAutoLayout renderObject) {
renderObject.delegate = delegate;
}
}
......
This diff is collapsed.
......@@ -192,9 +192,9 @@ class RenderObjectToWidgetAdapter<T extends RenderObject> extends RenderObjectWi
RenderObjectToWidgetElement<T> createElement() => new RenderObjectToWidgetElement<T>(this);
RenderObjectWithChildMixin<T> createRenderObject() => container;
RenderObjectWithChildMixin<T> createRenderObject(BuildContext context) => container;
void updateRenderObject(RenderObject renderObject, RenderObjectWidget oldWidget) { }
void updateRenderObject(BuildContext context, RenderObject renderObject) { }
RenderObjectToWidgetElement<T> attachToRenderTree([RenderObjectToWidgetElement<T> element]) {
BuildableElement.lockState(() {
......
......@@ -32,9 +32,9 @@ class _ChildViewWidget extends LeafRenderObjectWidget {
final ChildViewConnection child;
final double scale;
RenderChildView createRenderObject() => new RenderChildView(child: child, scale: scale);
RenderChildView createRenderObject(BuildContext context) => new RenderChildView(child: child, scale: scale);
void updateRenderObject(RenderChildView renderObject, _ChildViewWidget oldWidget) {
void updateRenderObject(BuildContext context, RenderChildView renderObject) {
renderObject
..child = child
..scale = scale;
......
......@@ -365,7 +365,7 @@ class _EditableLineWidget extends LeafRenderObjectWidget {
final Offset paintOffset;
final ViewportDimensionsChangeCallback onPaintOffsetUpdateNeeded;
RenderEditableLine createRenderObject() {
RenderEditableLine createRenderObject(BuildContext context) {
return new RenderEditableLine(
text: _styledTextSpan,
cursorColor: cursorColor,
......@@ -378,8 +378,7 @@ class _EditableLineWidget extends LeafRenderObjectWidget {
);
}
void updateRenderObject(RenderEditableLine renderObject,
_EditableLineWidget oldWidget) {
void updateRenderObject(BuildContext context, RenderEditableLine renderObject) {
renderObject
..text = _styledTextSpan
..cursorColor = cursorColor
......
......@@ -485,12 +485,12 @@ abstract class RenderObjectWidget extends Widget {
/// Constructs an instance of the RenderObject class that this
/// RenderObjectWidget represents, using the configuration described by this
/// RenderObjectWidget.
RenderObject createRenderObject();
RenderObject createRenderObject(BuildContext context);
/// Copies the configuration described by this RenderObjectWidget to the given
/// RenderObject, which must be of the same type as returned by this class'
/// createRenderObject().
void updateRenderObject(RenderObject renderObject, RenderObjectWidget oldWidget) { }
/// createRenderObject(BuildContext context).
void updateRenderObject(BuildContext context, RenderObject renderObject) { }
void didUnmountRenderObject(RenderObject renderObject) { }
}
......@@ -1033,7 +1033,7 @@ class ErrorWidget extends LeafRenderObjectWidget {
} catch (e) { }
return 'Error';
}
RenderBox createRenderObject() => new RenderErrorBox(message);
RenderBox createRenderObject(BuildContext context) => new RenderErrorBox(message);
}
typedef void BuildScheduler(BuildableElement element);
......@@ -1509,7 +1509,7 @@ abstract class RenderObjectElement<T extends RenderObjectWidget> extends Buildab
void mount(Element parent, dynamic newSlot) {
super.mount(parent, newSlot);
_renderObject = widget.createRenderObject();
_renderObject = widget.createRenderObject(this);
assert(() { debugUpdateRenderObjectOwner(); return true; });
assert(_slot == newSlot);
attachRenderObject(newSlot);
......@@ -1517,11 +1517,10 @@ abstract class RenderObjectElement<T extends RenderObjectWidget> extends Buildab
}
void update(T newWidget) {
T oldWidget = widget;
super.update(newWidget);
assert(widget == newWidget);
assert(() { debugUpdateRenderObjectOwner(); return true; });
widget.updateRenderObject(renderObject, oldWidget);
widget.updateRenderObject(this, renderObject);
_dirty = false;
}
......
......@@ -303,7 +303,7 @@ class RawGestureDetectorState extends State<RawGestureDetector> {
if (!config.excludeFromSemantics) {
RenderSemanticsGestureHandler semanticsGestureHandler = context.findRenderObject();
context.visitChildElements((RenderObjectElement element) {
element.widget.updateRenderObject(semanticsGestureHandler, null);
element.widget.updateRenderObject(context, semanticsGestureHandler);
});
}
}
......@@ -458,13 +458,13 @@ class _GestureSemantics extends OneChildRenderObjectWidget {
assert(false);
}
RenderSemanticsGestureHandler createRenderObject() {
RenderSemanticsGestureHandler createRenderObject(BuildContext context) {
RenderSemanticsGestureHandler result = new RenderSemanticsGestureHandler();
updateRenderObject(result, null);
updateRenderObject(context, result);
return result;
}
void updateRenderObject(RenderSemanticsGestureHandler renderObject, _GestureSemantics oldWidget) {
void updateRenderObject(BuildContext context, RenderSemanticsGestureHandler renderObject) {
Map<Type, GestureRecognizer> recognizers = owner._recognizers;
renderObject
..onTap = recognizers.containsKey(TapGestureRecognizer) ? _handleTap : null
......
......@@ -37,7 +37,7 @@ class MixedViewport extends RenderObjectWidget {
// we don't pass constructor arguments to the RenderBlockViewport() because until
// we know our children, the constructor arguments we could give have no effect
RenderBlockViewport createRenderObject() => new RenderBlockViewport();
RenderBlockViewport createRenderObject(BuildContext context) => new RenderBlockViewport();
_ChangeDescription evaluateChangesFrom(MixedViewport oldWidget) {
if (direction != oldWidget.direction ||
......
......@@ -242,7 +242,7 @@ class PageViewport extends VirtualViewportFromIterable {
final Painter overlayPainter;
final Iterable<Widget> children;
RenderList createRenderObject() => new RenderList();
RenderList createRenderObject(BuildContext context) => new RenderList();
_PageViewportElement createElement() => new _PageViewportElement(this);
}
......
......@@ -56,12 +56,12 @@ class PerformanceOverlay extends LeafRenderObjectWidget {
/// how many frame intervals).
final int rasterizerThreshold;
RenderPerformanceOverlay createRenderObject() => new RenderPerformanceOverlay(
RenderPerformanceOverlay createRenderObject(BuildContext context) => new RenderPerformanceOverlay(
optionsMask: optionsMask,
rasterizerThreshold: rasterizerThreshold
);
void updateRenderObject(RenderPerformanceOverlay renderObject, RenderObjectWidget oldWidget) {
void updateRenderObject(BuildContext context, RenderPerformanceOverlay renderObject) {
renderObject
..optionsMask = optionsMask
..rasterizerThreshold = rasterizerThreshold;
......
......@@ -80,7 +80,7 @@ class GridViewport extends VirtualViewportFromIterable {
// TODO(abarth): Support horizontal scrolling;
Axis get scrollDirection => Axis.vertical;
RenderGrid createRenderObject() => new RenderGrid(delegate: delegate);
RenderGrid createRenderObject(BuildContext context) => new RenderGrid(delegate: delegate);
_GridViewportElement createElement() => new _GridViewportElement(this);
}
......
......@@ -140,7 +140,7 @@ class _VirtualListViewport extends VirtualViewport {
return scrollOffset - _leadingPadding;
}
RenderList createRenderObject() => new RenderList(itemExtent: itemExtent);
RenderList createRenderObject(BuildContext context) => new RenderList(itemExtent: itemExtent);
_VirtualListViewportElement createElement() => new _VirtualListViewportElement(this);
}
......
......@@ -24,9 +24,9 @@ class SpriteWidget extends OneChildRenderObjectWidget {
/// var mySpriteWidget = new SpriteWidget(mySpriteTree, SpriteBoxTransformMode.fixedHeight);
SpriteWidget(this.rootNode, [this.transformMode = SpriteBoxTransformMode.letterbox]);
SpriteBox createRenderObject() => new SpriteBox(rootNode, transformMode);
SpriteBox createRenderObject(BuildContext context) => new SpriteBox(rootNode, transformMode);
void updateRenderObject(SpriteBox renderObject, SpriteWidget oldWidget) {
void updateRenderObject(BuildContext context, SpriteBox renderObject) {
renderObject
..rootNode = rootNode
..transformMode = transformMode;
......
......@@ -57,9 +57,9 @@ class _ChartWrapper extends LeafRenderObjectWidget {
final TextTheme textTheme;
final ChartData data;
_RenderChart createRenderObject() => new _RenderChart(textTheme: textTheme, data: data);
_RenderChart createRenderObject(BuildContext context) => new _RenderChart(textTheme: textTheme, data: data);
void updateRenderObject(_RenderChart renderObject, _ChartWrapper oldWidget) {
void updateRenderObject(BuildContext context, _RenderChart renderObject) {
renderObject
..textTheme = textTheme
..data = data;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment