提交 183184ba 编写于 作者: H Hixie

[Effen] Move EventListenerNode up so that all the ContentNode subclasses are together in fn.dart.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1128803007
上级 0ba562ef
......@@ -156,56 +156,6 @@ class ParentDataNode extends ContentNode {
ParentDataNode(UINode content, this.parentData): super(content);
}
/*
* RenderNodeWrappers correspond to a desired state of a RenderCSS.
* They are fully immutable, with one exception: A UINode which is a
* Component which lives within an OneChildListRenderNodeWrapper's
* children list, may be replaced with the "old" instance if it has
* become stateful.
*/
abstract class RenderNodeWrapper extends UINode {
static final Map<RenderCSS, RenderNodeWrapper> _nodeMap =
new HashMap<RenderCSS, RenderNodeWrapper>();
static RenderNodeWrapper _getMounted(RenderCSS node) => _nodeMap[node];
RenderNodeWrapper({ Object key }) : super(key: key);
RenderNodeWrapper get _emptyNode;
RenderCSS _createNode();
void _sync(UINode old, RenderCSSContainer host, RenderCSS insertBefore) {
if (old == null) {
_root = _createNode();
assert(_root != null);
host.add(_root, before: insertBefore);
old = _emptyNode;
} else {
_root = old._root;
assert(_root != null);
}
_nodeMap[_root] = this;
_syncNode(old);
}
void _syncNode(RenderNodeWrapper old);
void _removeChild(UINode node) {
assert(_root is RenderCSSContainer);
_root.remove(node._root);
super._removeChild(node);
}
void _remove() {
assert(_root != null);
_nodeMap.remove(_root);
super._remove();
}
}
typedef GestureEventListener(sky.GestureEvent e);
typedef PointerEventListener(sky.PointerEvent e);
typedef EventListener(sky.Event e);
......@@ -323,6 +273,56 @@ class EventListenerNode extends ContentNode {
}
}
/*
* RenderNodeWrappers correspond to a desired state of a RenderCSS.
* They are fully immutable, with one exception: A UINode which is a
* Component which lives within an OneChildListRenderNodeWrapper's
* children list, may be replaced with the "old" instance if it has
* become stateful.
*/
abstract class RenderNodeWrapper extends UINode {
static final Map<RenderCSS, RenderNodeWrapper> _nodeMap =
new HashMap<RenderCSS, RenderNodeWrapper>();
static RenderNodeWrapper _getMounted(RenderCSS node) => _nodeMap[node];
RenderNodeWrapper({ Object key }) : super(key: key);
RenderNodeWrapper get _emptyNode;
RenderCSS _createNode();
void _sync(UINode old, RenderCSSContainer host, RenderCSS insertBefore) {
if (old == null) {
_root = _createNode();
assert(_root != null);
host.add(_root, before: insertBefore);
old = _emptyNode;
} else {
_root = old._root;
assert(_root != null);
}
_nodeMap[_root] = this;
_syncNode(old);
}
void _syncNode(RenderNodeWrapper old);
void _removeChild(UINode node) {
assert(_root is RenderCSSContainer);
_root.remove(node._root);
super._removeChild(node);
}
void _remove() {
assert(_root != null);
_nodeMap.remove(_root);
super._remove();
}
}
final List<UINode> _emptyList = new List<UINode>();
abstract class OneChildListRenderNodeWrapper extends RenderNodeWrapper {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册