| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // TODO: RE: implements RequestAnimationFrameCallback. File bug | 5 // TODO: RE: implements RequestAnimationFrameCallback. File bug |
| 6 // against dom libs because it should be possible to pass a function | 6 // against dom libs because it should be possible to pass a function |
| 7 // to webkitRequestAnimationFrame just like addEventListener. | 7 // to webkitRequestAnimationFrame just like addEventListener. |
| 8 class InnerMenuView { | 8 class InnerMenuView { |
| 9 static final List<String> _textAlignmentClassNames = const <String>[ "l", "c",
"r" ]; | 9 static final List<String> _textAlignmentClassNames = const <String>[ "l", "c",
"r" ]; |
| 10 static final List<int> _textAlignmentValues = const <int>[ | 10 static final List<int> _textAlignmentValues = const <int>[ |
| 11 Style.LEFT, Style.CENTER, Style.RIGHT | 11 Style.LEFT, Style.CENTER, Style.RIGHT |
| (...skipping 28 matching lines...) Expand all Loading... |
| 40 | 40 |
| 41 // TODO: HACK. When we expand the border on our table cells, | 41 // TODO: HACK. When we expand the border on our table cells, |
| 42 // the sizes for the table will be contradictory since the row is | 42 // the sizes for the table will be contradictory since the row is |
| 43 // set to a height that is smaller than the offsetHeight of row. This | 43 // set to a height that is smaller than the offsetHeight of row. This |
| 44 // will cause the cells to become smaller (visual jitter). To work around | 44 // will cause the cells to become smaller (visual jitter). To work around |
| 45 // we set the height of the cell explicitly. Sadly this requires us | 45 // we set the height of the cell explicitly. Sadly this requires us |
| 46 // to use the computed style to determine the current padding of the | 46 // to use the computed style to determine the current padding of the |
| 47 // cell. | 47 // cell. |
| 48 static void _pinHeight(Window window, TableRowElement row) { | 48 static void _pinHeight(Window window, TableRowElement row) { |
| 49 Element firstCell = row.cells[0]; | 49 Element firstCell = row.cells[0]; |
| 50 window.requestMeasurementFrame(() { | 50 final firstCellRect = firstCell.rect; |
| 51 final firstCellRect = firstCell.rect; | 51 final style = firstCell.computedStyle; |
| 52 final style = firstCell.computedStyle; | 52 window.requestLayoutFrame(() { |
| 53 | 53 int height = firstCellRect.value.client.height |
| 54 int height = firstCell.rect.client.height | 54 - HtmlUtils.fromPx(style.value.getPropertyValue('padding-top')) |
| 55 - HtmlUtils.fromPx(style.paddingTop) | 55 - HtmlUtils.fromPx(style.value.getPropertyValue('padding-bottom')); |
| 56 - HtmlUtils.fromPx(style.paddingBottom); | 56 firstCell.style.setProperty('height', HtmlUtils.toPx(height)); |
| 57 return () { firstCell.style.height = HtmlUtils.toPx(height); }; | |
| 58 }); | 57 }); |
| 59 } | 58 } |
| 60 | 59 |
| 61 // Reverses the damage done by _pinHeight. | 60 // Reverses the damage done by _pinHeight. |
| 62 static void _unpinHeight(TableRowElement row) { | 61 static void _unpinHeight(TableRowElement row) { |
| 63 Element firstCell = row.cells[0]; | 62 Element firstCell = row.cells[0]; |
| 64 firstCell.style.removeProperty('height'); | 63 firstCell.style.removeProperty('height'); |
| 65 } | 64 } |
| 66 | 65 |
| 67 ColorPicker _backgroundColorPicker; | 66 ColorPicker _backgroundColorPicker; |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 bool isAttachedTo(TableRowElement row) => _row == row; | 205 bool isAttachedTo(TableRowElement row) => _row == row; |
| 207 | 206 |
| 208 void updateSize() { | 207 void updateSize() { |
| 209 if (_row.parent == null) { | 208 if (_row.parent == null) { |
| 210 // The row we were attached to has disappeared (e.g., by scrolling), so cl
ean up the menu bar | 209 // The row we were attached to has disappeared (e.g., by scrolling), so cl
ean up the menu bar |
| 211 _bar.remove(); | 210 _bar.remove(); |
| 212 return; | 211 return; |
| 213 } | 212 } |
| 214 | 213 |
| 215 // Must take into account the top of the table due to scrolling. | 214 // Must take into account the top of the table due to scrolling. |
| 216 window.requestMeasurementFrame(() { | 215 final offsetParentRect = _row.offsetParent.rect; |
| 217 int tableTop = _row.offsetParent.rect.bounding.top.toInt(); | 216 final rowRect = _row.rect; |
| 217 window.requestLayoutFrame(() { |
| 218 int tableTop = offsetParentRect.value.bounding.top.toInt(); |
| 218 | 219 |
| 219 // Get the current bounding box of the row we're attached to. | 220 // Get the current bounding box of the row we're attached to. |
| 220 ClientRect boundingRowRect = _row.rect.bounding; | 221 ClientRect boundingRowRect = rowRect.value.bounding; |
| 221 CSSStyleDeclaration style = _bar.style; | 222 CSSStyleDeclaration style = _bar.style; |
| 222 | 223 |
| 223 int top = boundingRowRect.top.toInt() + _initialRowHeight - tableTop; | 224 int top = boundingRowRect.top.toInt() + _initialRowHeight - tableTop; |
| 224 int height = boundingRowRect.height.toInt() - _initialRowHeight; | 225 int height = boundingRowRect.height.toInt() - _initialRowHeight; |
| 225 | 226 |
| 226 _currentRowHeight = height; | 227 _currentRowHeight = height; |
| 227 | 228 |
| 228 return () { | 229 style.setProperty("top", HtmlUtils.toPx(top)); |
| 229 style.setProperty("top", HtmlUtils.toPx(top)); | 230 style.setProperty("height", HtmlUtils.toPx(height)); |
| 230 style.setProperty("height", HtmlUtils.toPx(height)); | |
| 231 | 231 |
| 232 _innerMenuMoved(); | 232 _innerMenuMoved(); |
| 233 }; | |
| 234 }); | 233 }); |
| 235 } | 234 } |
| 236 | 235 |
| 237 // Update the style buttons for the selected style. | 236 // Update the style buttons for the selected style. |
| 238 void updateStyleUI(Style style) { | 237 void updateStyleUI(Style style) { |
| 239 // Text format buttons | 238 // Text format buttons |
| 240 for (int i = 0; i < 4; i++) { | 239 for (int i = 0; i < 4; i++) { |
| 241 int mask = _textStyleValues[i]; | 240 int mask = _textStyleValues[i]; |
| 242 _selectTextStyle(i, _textStyleClassNames[i], (style.textFormatIndex & mask
) != 0); | 241 _selectTextStyle(i, _textStyleClassNames[i], (style.textFormatIndex & mask
) != 0); |
| 243 } | 242 } |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 for (int i = 0; i < 4; i++) { | 416 for (int i = 0; i < 4; i++) { |
| 418 if (_textStyleButtons[i].attributes["class"].length > 1) { | 417 if (_textStyleButtons[i].attributes["class"].length > 1) { |
| 419 textStyle += _textStyleValues[i]; | 418 textStyle += _textStyleValues[i]; |
| 420 } | 419 } |
| 421 } | 420 } |
| 422 | 421 |
| 423 _execute(Style _(Style s, int selectedIndex) | 422 _execute(Style _(Style s, int selectedIndex) |
| 424 => s.setTextFormatByIndex(selectedIndex), textStyle); | 423 => s.setTextFormatByIndex(selectedIndex), textStyle); |
| 425 } | 424 } |
| 426 } | 425 } |
| OLD | NEW |