| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 typedef void EditCellRangeFunction(CellRange range); | 5 typedef void EditCellRangeFunction(CellRange range); |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Spreadsheet widget. | 8 * Spreadsheet widget. |
| 9 */ | 9 */ |
| 10 class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { | 10 class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 print("Error parsing formula '${value}': ${exception}"); | 657 print("Error parsing formula '${value}': ${exception}"); |
| 658 } | 658 } |
| 659 } | 659 } |
| 660 }); | 660 }); |
| 661 } | 661 } |
| 662 | 662 |
| 663 void _createMoveDragger(Document doc) { | 663 void _createMoveDragger(Document doc) { |
| 664 _moveDragger = new Element.tag("div"); | 664 _moveDragger = new Element.tag("div"); |
| 665 _moveDragger.id = "moveDragger-${_spreadsheet.name}"; | 665 _moveDragger.id = "moveDragger-${_spreadsheet.name}"; |
| 666 _moveDragger.attributes["class"] = "moveDragger"; | 666 _moveDragger.attributes["class"] = "moveDragger"; |
| 667 _moveDragger.style.setProperty("left", HtmlUtils.toPx(3)); | 667 _moveDragger.style.left = HtmlUtils.toPx(3); |
| 668 _moveDragger.style.setProperty("top", HtmlUtils.toPx(3)); | 668 _moveDragger.style.top = HtmlUtils.toPx(3); |
| 669 _spreadsheetElement.nodes.add(_moveDragger); | 669 _spreadsheetElement.nodes.add(_moveDragger); |
| 670 | 670 |
| 671 _moveDragger.on.mouseDown.add((MouseEvent e) { | 671 _moveDragger.on.mouseDown.add((MouseEvent e) { |
| 672 _moveToTop(); | 672 _moveToTop(); |
| 673 _hideInnerMenu(true); | 673 _hideInnerMenu(true); |
| 674 | 674 |
| 675 int mouseStartX = e.x; | 675 int mouseStartX = e.x; |
| 676 int mouseStartY = e.y; | 676 int mouseStartY = e.y; |
| 677 | 677 |
| 678 _spreadsheetElement.rect.then((ElementRect elementRect) { | 678 window.requestMeasurementFrame(() { |
| 679 ClientRect rect = elementRect.bounding; | 679 ClientRect rect = _spreadsheetElement.rect.bounding; |
| 680 int startX = rect.left; | 680 int startX = rect.left; |
| 681 int startY = rect.top; | 681 int startY = rect.top; |
| 682 _window.document.body.style.setProperty("cursor", "move"); | 682 return () { |
| 683 _window.document.body.style.cursor = "move"; |
| 683 | 684 |
| 684 _setDragFunction((MouseEvent e_) { | 685 _setDragFunction((MouseEvent e_) { |
| 685 int x = startX + e_.x - mouseStartX; | 686 int x = startX + e_.x - mouseStartX; |
| 686 int y = startY + e_.y - mouseStartY; | 687 int y = startY + e_.y - mouseStartY; |
| 687 | 688 |
| 688 x = Math.max(x, CssStyles.OBJECTBAR_WIDTH); | 689 x = Math.max(x, CssStyles.OBJECTBAR_WIDTH); |
| 689 y = Math.max(y, CssStyles.SANDBAR_HEIGHT); | 690 y = Math.max(y, CssStyles.SANDBAR_HEIGHT); |
| 690 // Move the spreadsheet container | 691 // Move the spreadsheet container |
| 691 _spreadsheetElement.style.setProperty("left", HtmlUtils.toPx(x)); | 692 _spreadsheetElement.style.left = HtmlUtils.toPx(x); |
| 692 _spreadsheetElement.style.setProperty("top", HtmlUtils.toPx(y)); | 693 _spreadsheetElement.style.top = HtmlUtils.toPx(y); |
| 693 }); | 694 }); |
| 694 }); | 695 }; |
| 696 }); |
| 695 | 697 |
| 696 _setUndragFunction((MouseEvent e_) { | 698 _setUndragFunction((MouseEvent e_) { |
| 697 _window.document.body.style.setProperty("cursor", "auto"); | 699 _window.document.body.style.cursor = "auto"; |
| 698 }); | 700 }); |
| 699 }); | 701 }); |
| 700 } | 702 } |
| 701 | 703 |
| 702 void _createResizeDragger(Document doc) { | 704 void _createResizeDragger(Document doc) { |
| 703 _resizeDragger = new Element.tag("div"); | 705 _resizeDragger = new Element.tag("div"); |
| 704 _resizeDragger.id = "resizeDragger-${_spreadsheet.name}"; | 706 _resizeDragger.id = "resizeDragger-${_spreadsheet.name}"; |
| 705 _resizeDragger.attributes["class"] = "resizeDragger"; | 707 _resizeDragger.attributes["class"] = "resizeDragger"; |
| 706 _spreadsheetElement.nodes.add(_resizeDragger); | 708 _spreadsheetElement.nodes.add(_resizeDragger); |
| 707 | 709 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 _tableScrollContainer.style.setProperty("left", "0px"); | 803 _tableScrollContainer.style.setProperty("left", "0px"); |
| 802 _tableScrollContainer.style.setProperty("top", "0px"); | 804 _tableScrollContainer.style.setProperty("top", "0px"); |
| 803 _tableScrollContainer.nodes.add(_tableScrollDiv); | 805 _tableScrollContainer.nodes.add(_tableScrollDiv); |
| 804 _tableSizeChanged(); | 806 _tableSizeChanged(); |
| 805 | 807 |
| 806 _tableScrollContainer.on.scroll.add((e) { | 808 _tableScrollContainer.on.scroll.add((e) { |
| 807 if (_scrolledByKeyboard) { | 809 if (_scrolledByKeyboard) { |
| 808 _scrolledByKeyboard = false; | 810 _scrolledByKeyboard = false; |
| 809 return; | 811 return; |
| 810 } | 812 } |
| 811 Future<ElementRect> future = _tableScrollContainer.rect; | 813 window.requestMeasurementFrame(() { |
| 812 future.then((ElementRect rect) { | 814 final rect = _tableScrollContainer.rect; |
| 813 int scrollTop = rect.scroll.top; | 815 int scrollTop = rect.scroll.top; |
| 814 int row = _getAbsRowOrColumn(scrollTop, ROW) - 1; | 816 int row = _getAbsRowOrColumn(scrollTop, ROW) - 1; |
| 815 int col = _getAbsRowOrColumn(rect.scroll.left, COL) - 1; | 817 int col = _getAbsRowOrColumn(rect.scroll.left, COL) - 1; |
| 816 int newRowShift = Math.max(0, row); | 818 int newRowShift = Math.max(0, row); |
| 817 int newColumnShift = Math.max(0, col); | 819 int newColumnShift = Math.max(0, col); |
| 818 if (newRowShift != _rowShift || newColumnShift != _columnShift) { | 820 if (newRowShift != _rowShift || newColumnShift != _columnShift) { |
| 819 _rowShift = newRowShift; | 821 _rowShift = newRowShift; |
| 820 _columnShift = newColumnShift; | 822 _columnShift = newColumnShift; |
| 821 _spreadsheet.refresh(); | 823 return () { _spreadsheet.refresh(); }; |
| 822 } | 824 } |
| 823 }); | 825 }); |
| 824 }); | 826 }); |
| 825 } | 827 } |
| 826 | 828 |
| 827 // Return the number of milliseconds since the epoch | 829 // Return the number of milliseconds since the epoch |
| 828 int _currentTimeMllis() { | 830 int _currentTimeMllis() { |
| 829 Date now = new Date.now(); | 831 Date now = new Date.now(); |
| 830 Date then = new Date.fromEpoch(0, now.timeZone); | 832 Date then = new Date.fromEpoch(0, now.timeZone); |
| 831 return now.difference(then).inMilliseconds; | 833 return now.difference(then).inMilliseconds; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 | 885 |
| 884 // apply text selection now | 886 // apply text selection now |
| 885 _formulaCellSelectingSelectText(); | 887 _formulaCellSelectingSelectText(); |
| 886 | 888 |
| 887 // show cell selecting div | 889 // show cell selecting div |
| 888 { | 890 { |
| 889 DivElement div = _table.formulaCellSelectingDiv; | 891 DivElement div = _table.formulaCellSelectingDiv; |
| 890 CSSStyleDeclaration divStyle = div.style; | 892 CSSStyleDeclaration divStyle = div.style; |
| 891 int borderWidth = 2 + 2; | 893 int borderWidth = 2 + 2; |
| 892 CellRange cellRange = new CellRange(_spreadsheet, minCorner, maxCorner); | 894 CellRange cellRange = new CellRange(_spreadsheet, minCorner, maxCorner); |
| 893 _selectionManager.getBoundingBoxForRange(cellRange).then( | 895 window.requestMeasurementFrame(() { |
| 894 (BoundingBox box) { | 896 final box = _selectionManager.getBoundingBoxForRange(cellRange); |
| 895 if (box != null) { | 897 return () { |
| 896 divStyle.setProperty("left", HtmlUtils.toPx(box.left)); | 898 if (box != null) { |
| 897 divStyle.setProperty("top", HtmlUtils.toPx(box.top)); | 899 divStyle.left = HtmlUtils.toPx(box.left); |
| 898 divStyle.setProperty("width", HtmlUtils.toPx(box.width - borderWidth))
; | 900 divStyle.top = HtmlUtils.toPx(box.top); |
| 899 divStyle.setProperty("height", HtmlUtils.toPx(box.height - borderWidth
)); | 901 divStyle.width = HtmlUtils.toPx(box.width - borderWidth); |
| 900 divStyle.removeProperty("display"); | 902 divStyle.height = HtmlUtils.toPx(box.height - borderWidth); |
| 901 } else { | 903 divStyle.removeProperty("display"); |
| 902 divStyle.setProperty("display", "none"); | 904 } else { |
| 903 } | 905 divStyle.setProperty("display", "none"); |
| 906 } |
| 907 }; |
| 904 }); | 908 }); |
| 905 } | 909 } |
| 906 } | 910 } |
| 907 | 911 |
| 908 void _formulaCellSelectingRememberSelectionRange() { | 912 void _formulaCellSelectingRememberSelectionRange() { |
| 909 _formulaCellSelectingTextStart = _formulaInput.selectionStart; | 913 _formulaCellSelectingTextStart = _formulaInput.selectionStart; |
| 910 _formulaCellSelectingTextEnd = _formulaInput.selectionEnd; | 914 _formulaCellSelectingTextEnd = _formulaInput.selectionEnd; |
| 911 } | 915 } |
| 912 | 916 |
| 913 void _formulaCellSelectingSelectText() { | 917 void _formulaCellSelectingSelectText() { |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1070 | 1074 |
| 1071 // Return the number of _rows currently being displayed (not counting the colu
mn header row) | 1075 // Return the number of _rows currently being displayed (not counting the colu
mn header row) |
| 1072 int _getVisibleTableHeight() => _getShiftedRowEnd(_rowShift + _rows, _rowShift
); | 1076 int _getVisibleTableHeight() => _getShiftedRowEnd(_rowShift + _rows, _rowShift
); |
| 1073 | 1077 |
| 1074 // Return the number of _columns currently being displayed (not counting the r
ow header column) | 1078 // Return the number of _columns currently being displayed (not counting the r
ow header column) |
| 1075 int _getVisibleTableWidth() => _getShiftedColumnEnd(_columnShift + _columns, _
columnShift); | 1079 int _getVisibleTableWidth() => _getShiftedColumnEnd(_columnShift + _columns, _
columnShift); |
| 1076 | 1080 |
| 1077 // Resize the formula input field to fit the contained text | 1081 // Resize the formula input field to fit the contained text |
| 1078 void _growFormulaInput() { | 1082 void _growFormulaInput() { |
| 1079 _formulaInputMeasure.text = _formulaInput.value; | 1083 _formulaInputMeasure.text = _formulaInput.value; |
| 1080 _formulaInputMeasure.rect.then((ElementRect rect) { | 1084 window.requestMeasurementFrame(() { |
| 1081 int textWidth = rect.client.width; | 1085 int textWidth = _formulaInputMeasure.rect.client.width; |
| 1082 int width = Math.max(textWidth + 25, _formulaCellWidth); | 1086 int width = Math.max(textWidth + 25, _formulaCellWidth); |
| 1083 _formulaDiv.style.setProperty("width", HtmlUtils.toPx(width)); | 1087 return () { |
| 1084 _formulaInput.style.setProperty("width", HtmlUtils.toPx(width)); | 1088 _formulaDiv.style.width = HtmlUtils.toPx(width); |
| 1089 _formulaInput.style.width = HtmlUtils.toPx(width); |
| 1090 }; |
| 1085 }); | 1091 }); |
| 1086 } | 1092 } |
| 1087 | 1093 |
| 1088 // Fade out the formula input field | 1094 // Fade out the formula input field |
| 1089 void _hideFormula() { | 1095 void _hideFormula() { |
| 1090 _hideFormulaCellSelecting(); | 1096 _hideFormulaCellSelecting(); |
| 1091 _formulaEditing = false; | 1097 _formulaEditing = false; |
| 1092 _formulaDiv.classes.remove("fadeIn"); | 1098 _formulaDiv.classes.remove("fadeIn"); |
| 1093 _formulaDiv.classes.add("fadeOut"); | 1099 _formulaDiv.classes.add("fadeOut"); |
| 1094 } | 1100 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1143 // update table row and column headers | 1149 // update table row and column headers |
| 1144 void _redrawHeaders() { | 1150 void _redrawHeaders() { |
| 1145 _setTableWidth(_getVisibleTableWidth()); | 1151 _setTableWidth(_getVisibleTableWidth()); |
| 1146 _tableSizeChanged(); | 1152 _tableSizeChanged(); |
| 1147 | 1153 |
| 1148 _table.redrawHeaders(_selectionManager, _rows, _columns, _rowShift, _columnS
hift, | 1154 _table.redrawHeaders(_selectionManager, _rows, _columns, _rowShift, _columnS
hift, |
| 1149 _cellDisplay); | 1155 _cellDisplay); |
| 1150 } | 1156 } |
| 1151 | 1157 |
| 1152 void _refreshResizeDragger() { | 1158 void _refreshResizeDragger() { |
| 1153 _table.rect.then((ElementRect elementRect) { | 1159 window.requestMeasurementFrame(() { |
| 1154 // We may be called before the dragger is ready | 1160 // We may be called before the dragger is ready |
| 1155 if (_resizeDragger == null) { | 1161 if (_resizeDragger == null) { |
| 1156 return; | 1162 return; |
| 1157 } | 1163 } |
| 1158 ClientRect rect = elementRect.bounding; | 1164 ClientRect rect = _table.rect.bounding; |
| 1159 | 1165 return () { |
| 1160 _resizeDragger.style.setProperty("left", HtmlUtils.toPx(rect.width)); | 1166 _resizeDragger.style.setProperty("left", HtmlUtils.toPx(rect.width)); |
| 1161 _resizeDragger.style.setProperty("top", HtmlUtils.toPx(rect.height)); | 1167 _resizeDragger.style.setProperty("top", HtmlUtils.toPx(rect.height)); |
| 1168 }; |
| 1162 }); | 1169 }); |
| 1163 } | 1170 } |
| 1164 | 1171 |
| 1165 // Remove the HTML elements corresponding to the given column | 1172 // Remove the HTML elements corresponding to the given column |
| 1166 void _removeTableColumnHtml(int col) { | 1173 void _removeTableColumnHtml(int col) { |
| 1167 _table.removeColumn(col); | 1174 _table.removeColumn(col); |
| 1168 int width = _spreadsheet.getColumnWidth(col); | 1175 int width = _spreadsheet.getColumnWidth(col); |
| 1169 _setTableWidth(_tableWidth - width); | 1176 _setTableWidth(_tableWidth - width); |
| 1170 } | 1177 } |
| 1171 | 1178 |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1463 setDrag(COL, false); | 1470 setDrag(COL, false); |
| 1464 } | 1471 } |
| 1465 }); | 1472 }); |
| 1466 | 1473 |
| 1467 // The inline cell editing UI is displayed when a user makes the same single | 1474 // The inline cell editing UI is displayed when a user makes the same single |
| 1468 // cell selection over again. We keep track of the current single cell that | 1475 // cell selection over again. We keep track of the current single cell that |
| 1469 // is selected here to know when to enter edit mode. | 1476 // is selected here to know when to enter edit mode. |
| 1470 CellLocation currentSelectedSingleCell = null; | 1477 CellLocation currentSelectedSingleCell = null; |
| 1471 | 1478 |
| 1472 void mouseMove(MouseEvent e) { | 1479 void mouseMove(MouseEvent e) { |
| 1473 _table.rect.then((ElementRect rect) { | 1480 window.requestMeasurementFrame(() { |
| 1474 // Set x and y to the mouse coordinates, relative to the top left of | 1481 // Set x and y to the mouse coordinates, relative to the top left of |
| 1475 // the spreadsheet table. | 1482 // the spreadsheet table. |
| 1476 ClientRect boundingRect = rect.bounding; | 1483 ClientRect boundingRect = _table.rect.bounding; |
| 1477 int scrollOffsetX = -boundingRect.left.toInt(); | 1484 int scrollOffsetX = -boundingRect.left.toInt(); |
| 1478 int scrollOffsetY = -boundingRect.top.toInt(); | 1485 int scrollOffsetY = -boundingRect.top.toInt(); |
| 1479 x = e.x + scrollOffsetX; | 1486 x = e.x + scrollOffsetX; |
| 1480 y = e.y + scrollOffsetY; | 1487 y = e.y + scrollOffsetY; |
| 1481 | 1488 |
| 1482 // Update the dragger position and optionally the actual row/column size | 1489 // Update the dragger position and optionally the actual row/column size |
| 1483 if (dragRowColumn(false)) { | 1490 if (dragRowColumn(false)) { |
| 1484 return; | 1491 return; |
| 1485 } | 1492 } |
| 1486 | 1493 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1535 }); | 1542 }); |
| 1536 } | 1543 } |
| 1537 | 1544 |
| 1538 _setMove(mouseMove); | 1545 _setMove(mouseMove); |
| 1539 | 1546 |
| 1540 _table.on.mouseDown.add((MouseEvent e) { | 1547 _table.on.mouseDown.add((MouseEvent e) { |
| 1541 _moveToTop(); | 1548 _moveToTop(); |
| 1542 | 1549 |
| 1543 // Right click toggles and positions the context menu | 1550 // Right click toggles and positions the context menu |
| 1544 if (e.button == 2 || (e.button == 0 && e.ctrlKey)) { | 1551 if (e.button == 2 || (e.button == 0 && e.ctrlKey)) { |
| 1545 _table.rect.then((ElementRect rect) { | 1552 window.requestMeasurementFrame(() { |
| 1546 ClientRect boundingRect = rect.bounding; | 1553 ClientRect boundingRect = _table.rect.bounding; |
| 1547 int scrollOffsetX = -boundingRect.left; | 1554 return () { |
| 1548 int scrollOffsetY = -boundingRect.top; | 1555 int scrollOffsetX = -boundingRect.left; |
| 1549 _contextMenu.show(e.x + scrollOffsetX, e.y + scrollOffsetY); | 1556 int scrollOffsetY = -boundingRect.top; |
| 1557 _contextMenu.show(e.x + scrollOffsetX, e.y + scrollOffsetY); |
| 1558 }; |
| 1550 }); | 1559 }); |
| 1551 return; | 1560 return; |
| 1552 } | 1561 } |
| 1553 | 1562 |
| 1554 _setDragFunction(mouseMove); | 1563 _setDragFunction(mouseMove); |
| 1555 | 1564 |
| 1556 _setUndragFunction((MouseEvent e_) { | 1565 _setUndragFunction((MouseEvent e_) { |
| 1557 dragRowColumn(true); | 1566 dragRowColumn(true); |
| 1558 _table.setDefaultCursor(); | 1567 _table.setDefaultCursor(); |
| 1559 draggingSelection = false; | 1568 draggingSelection = false; |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1681 } | 1690 } |
| 1682 _activeInnerMenu = new InnerMenuView(_window, row, _selectionManager, style, | 1691 _activeInnerMenu = new InnerMenuView(_window, row, _selectionManager, style, |
| 1683 _spreadsheet.layout.getRowHeight(rowIndex), | 1692 _spreadsheet.layout.getRowHeight(rowIndex), |
| 1684 (){ _tableSizeChanged(); }, | 1693 (){ _tableSizeChanged(); }, |
| 1685 (){ _hideInnerMenu(true); _repositionFormulaInput(null, false); }); | 1694 (){ _hideInnerMenu(true); _repositionFormulaInput(null, false); }); |
| 1686 _innerMenuRowIndex = rowIndex; | 1695 _innerMenuRowIndex = rowIndex; |
| 1687 } | 1696 } |
| 1688 | 1697 |
| 1689 // Update the scroll mechanism due to a change in the visible table area | 1698 // Update the scroll mechanism due to a change in the visible table area |
| 1690 void _tableSizeChanged() { | 1699 void _tableSizeChanged() { |
| 1691 _table.rect.then((ElementRect elementRect) { | 1700 window.requestMeasurementFrame(() { |
| 1692 ClientRect rect = elementRect.bounding; | 1701 ClientRect rect = _table.rect.bounding; |
| 1702 return () { |
| 1703 _tableScrollContainer.style.width = HtmlUtils.toPx(rect.width + 10); |
| 1704 _spreadsheetElement.style.width = HtmlUtils.toPx(rect.width); |
| 1693 | 1705 |
| 1694 _tableScrollContainer.style.width = HtmlUtils.toPx(rect.width + 10); | 1706 _tableScrollContainer.style.height = HtmlUtils.toPx(rect.height + 10); |
| 1695 _spreadsheetElement.style.width = HtmlUtils.toPx(rect.width); | 1707 _spreadsheetElement.style.height = HtmlUtils.toPx(rect.height); |
| 1696 | 1708 |
| 1697 _tableScrollContainer.style.height = HtmlUtils.toPx(rect.height + 10); | 1709 _tableScrollDiv.style.width = HtmlUtils.toPx( |
| 1698 _spreadsheetElement.style.height = HtmlUtils.toPx(rect.height); | 1710 _spreadsheet.getColumnEnd(_spreadsheet.columnCount())); |
| 1711 int extra = _activeInnerMenu == null ? |
| 1712 0 : _activeInnerMenu.currentRowHeight; |
| 1713 _tableScrollDiv.style.height = HtmlUtils.toPx(_spreadsheet.getRowEnd( |
| 1714 _spreadsheet.rowCount()) + extra); |
| 1699 | 1715 |
| 1700 _tableScrollDiv.style.width = HtmlUtils.toPx( | 1716 // Reposition the scroll bars |
| 1701 _spreadsheet.getColumnEnd(_spreadsheet.columnCount())); | 1717 _scroll(_rowShift, _columnShift); |
| 1702 int extra = _activeInnerMenu == null ? | 1718 // Move the resize dragger to the bottom-right corner |
| 1703 0 : _activeInnerMenu.currentRowHeight; | 1719 _refreshResizeDragger(); |
| 1704 _tableScrollDiv.style.height = HtmlUtils.toPx(_spreadsheet.getRowEnd( | 1720 }; |
| 1705 _spreadsheet.rowCount()) + extra); | |
| 1706 | |
| 1707 // Reposition the scroll bars | |
| 1708 _scroll(_rowShift, _columnShift); | |
| 1709 // Move the resize dragger to the bottom-right corner | |
| 1710 _refreshResizeDragger(); | |
| 1711 }); | 1721 }); |
| 1712 } | 1722 } |
| 1713 | 1723 |
| 1714 void _updateInnerMenu() { | 1724 void _updateInnerMenu() { |
| 1715 if (_activeInnerMenu != null) { | 1725 if (_activeInnerMenu != null) { |
| 1716 _activeInnerMenu.updateSize(); | 1726 _activeInnerMenu.updateSize(); |
| 1717 } | 1727 } |
| 1718 } | 1728 } |
| 1719 | 1729 |
| 1720 // Change the width/height of a column or row. | 1730 // Change the width/height of a column or row. |
| 1721 void _updateRowColumnSize(int rowOrCol, int index, int size, int oldSize, bool
mouseUp) { | 1731 void _updateRowColumnSize(int rowOrCol, int index, int size, int oldSize, bool
mouseUp) { |
| 1722 if (mouseUp) { | 1732 if (mouseUp) { |
| 1723 Command command = new ResizeRowColumnCommand(_spreadsheet, rowOrCol, index
, size, oldSize); | 1733 Command command = new ResizeRowColumnCommand(_spreadsheet, rowOrCol, index
, size, oldSize); |
| 1724 _spreadsheet.execute(command); | 1734 _spreadsheet.execute(command); |
| 1725 } else { | 1735 } else { |
| 1726 if (rowOrCol == COL) { | 1736 if (rowOrCol == COL) { |
| 1727 _spreadsheet.setColumnWidth(index, size); | 1737 _spreadsheet.setColumnWidth(index, size); |
| 1728 } else { | 1738 } else { |
| 1729 _spreadsheet.setRowHeight(index, size); | 1739 _spreadsheet.setRowHeight(index, size); |
| 1730 } | 1740 } |
| 1731 } | 1741 } |
| 1732 } | 1742 } |
| 1733 } | 1743 } |
| OLD | NEW |