Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: sky/sdk/lib/widgets/tabs.dart

Issue 1209413004: Instead of applying a transform for every RenderObject, pass down an Offset for where to paint. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:math' as math; 5 import 'dart:math' as math;
6 6
7 import 'package:sky/rendering/box.dart'; 7 import 'package:sky/rendering/box.dart';
8 import 'package:sky/rendering/object.dart'; 8 import 'package:sky/rendering/object.dart';
9 import 'package:sky/widgets/basic.dart'; 9 import 'package:sky/widgets/basic.dart';
10 import 'package:sky/widgets/icon.dart'; 10 import 'package:sky/widgets/icon.dart';
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 child.parentData.position = new Point(x, 0.0); 124 child.parentData.position = new Point(x, 0.0);
125 x += tabWidth; 125 x += tabWidth;
126 child = child.parentData.nextSibling; 126 child = child.parentData.nextSibling;
127 } 127 }
128 } 128 }
129 129
130 void hitTestChildren(HitTestResult result, { Point position }) { 130 void hitTestChildren(HitTestResult result, { Point position }) {
131 defaultHitTestChildren(result, position: position); 131 defaultHitTestChildren(result, position: position);
132 } 132 }
133 133
134 void _paintIndicator(RenderCanvas canvas, RenderBox selectedTab) { 134 void _paintIndicator(RenderCanvas canvas, RenderBox selectedTab, Offset offset ) {
135 if (indicatorColor == null) 135 if (indicatorColor == null)
136 return; 136 return;
137 137
138 var size = new Size(selectedTab.size.width, _kTabIndicatorHeight); 138 var size = new Size(selectedTab.size.width, _kTabIndicatorHeight);
139 var point = new Point( 139 var point = new Point(
140 selectedTab.parentData.position.x, 140 selectedTab.parentData.position.x,
141 _tabBarHeight - _kTabIndicatorHeight); 141 _tabBarHeight - _kTabIndicatorHeight
142 Rect rect = new Rect.fromPointAndSize(point, size); 142 );
143 Rect rect = new Rect.fromPointAndSize(point + offset, size);
143 canvas.drawRect(rect, new Paint()..color = indicatorColor); 144 canvas.drawRect(rect, new Paint()..color = indicatorColor);
144 } 145 }
145 146
146 void paint(RenderCanvas canvas) { 147 void paint(RenderCanvas canvas, Offset offset) {
147 if (backgroundColor != null) { 148 if (backgroundColor != null) {
148 Rect rect = new Rect.fromSize(size); 149 Rect rect = offset + size;
149 canvas.drawRect(rect, new Paint()..color = backgroundColor); 150 canvas.drawRect(rect, new Paint()..color = backgroundColor);
150 } 151 }
151 152
152 int index = 0; 153 int index = 0;
153 RenderBox child = firstChild; 154 RenderBox child = firstChild;
154 while (child != null) { 155 while (child != null) {
155 assert(child.parentData is TabBarParentData); 156 assert(child.parentData is TabBarParentData);
156 canvas.paintChild(child, child.parentData.position); 157 canvas.paintChild(child, child.parentData.position + offset);
157 if (index++ == selectedIndex) 158 if (index++ == selectedIndex)
158 _paintIndicator(canvas, child); 159 _paintIndicator(canvas, child, offset);
159 child = child.parentData.nextSibling; 160 child = child.parentData.nextSibling;
160 } 161 }
161 } 162 }
162 } 163 }
163 164
164 class TabBarWrapper extends MultiChildRenderObjectWrapper { 165 class TabBarWrapper extends MultiChildRenderObjectWrapper {
165 TabBarWrapper({ 166 TabBarWrapper({
166 List<Widget> children, 167 List<Widget> children,
167 this.selectedIndex, 168 this.selectedIndex,
168 this.backgroundColor, 169 this.backgroundColor,
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 } 293 }
293 return new TabBarWrapper( 294 return new TabBarWrapper(
294 children: tabs, 295 children: tabs,
295 selectedIndex: selectedIndex, 296 selectedIndex: selectedIndex,
296 backgroundColor: Theme.of(this).primary[500], 297 backgroundColor: Theme.of(this).primary[500],
297 indicatorColor: Theme.of(this).accent[200], 298 indicatorColor: Theme.of(this).accent[200],
298 textAndIcons: textAndIcons 299 textAndIcons: textAndIcons
299 ); 300 );
300 } 301 }
301 } 302 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698