void ContinueColumnSplitting() { HitTestInformation savedHitTestInformation = GetHitInfo(); SheetLayout layout = GetSheetLayout(); int columnViewportIndex = savedHitTestInformation.ColumnViewportIndex; switch (savedHitTestInformation.HitTestType) { case HitTestType.RowSplitBar: case HitTestType.ColumnSplitBar: if (MousePosition.X <= _columnSplittingTracker.X1) { _columnSplittingTracker.X1 = Math.Max(MousePosition.X, layout.GetViewportX(columnViewportIndex) + (layout.GetHorizontalSplitBarWidth(columnViewportIndex) / 2.0)); break; } _columnSplittingTracker.X1 = Math.Min(MousePosition.X, (layout.GetViewportX(columnViewportIndex + 1) + layout.GetViewportWidth(columnViewportIndex + 1)) - (layout.GetHorizontalSplitBarWidth(columnViewportIndex) / 2.0)); break; case HitTestType.ColumnSplitBox: if (MousePosition.X <= _columnSplittingTracker.X1) { _columnSplittingTracker.X1 = Math.Max(MousePosition.X, layout.GetViewportX(columnViewportIndex) + (_defaultSplitBarSize / 2.0)); break; } _columnSplittingTracker.X1 = Math.Min(MousePosition.X, (layout.GetViewportX(columnViewportIndex) + layout.GetViewportWidth(columnViewportIndex)) - (_defaultSplitBarSize / 2.0)); break; } _columnSplittingTracker.X2 = _columnSplittingTracker.X1; }
void SetCursor(HitTestInformation hi) { if (CanUserDragFill && hi.ViewportInfo.InDragFillIndicator) { bool flag; bool flag2; KeyboardHelper.GetMetaKeyState(out flag, out flag2); CursorType cursorType = flag2 ? CursorType.DragFill_CtrlDragCursor : CursorType.DragFill_DragCursor; SetMouseCursor(cursorType); } else if (CanUserDragDrop && hi.ViewportInfo.InSelectionDrag) { bool flag3; bool flag4; KeyboardHelper.GetMetaKeyState(out flag3, out flag4); CursorType type2 = flag4 ? CursorType.DragCell_CtrlDragCursor : CursorType.DragCell_DragCursor; SetMouseCursor(type2); } else { if (_mouseCursor != null) { _mouseCursor.Opacity = 0.0; } ResetCursor(); } }
bool InitFloatingObjectsMovingResizing() { HitTestInformation savedHitTestInformation = GetHitInfo(); if (IsTouching) { savedHitTestInformation = _touchStartHitTestInfo; } if (((savedHitTestInformation.ViewportInfo == null) || (savedHitTestInformation.RowViewportIndex == -2)) || (savedHitTestInformation.ColumnViewportIndex == 2)) { return(false); } _floatingObjectsMovingResizingStartRow = savedHitTestInformation.ViewportInfo.Row; _floatingObjectsMovingResizingStartColumn = savedHitTestInformation.ViewportInfo.Column; _dragStartRowViewport = savedHitTestInformation.RowViewportIndex; _dragStartColumnViewport = savedHitTestInformation.ColumnViewportIndex; _dragToRowViewport = savedHitTestInformation.RowViewportIndex; _dragToColumnViewport = savedHitTestInformation.ColumnViewportIndex; _floatingObjectsMovingResizingStartPoint = savedHitTestInformation.HitPoint; SetActiveColumnViewportIndex(savedHitTestInformation.ColumnViewportIndex); SetActiveRowViewportIndex(savedHitTestInformation.RowViewportIndex); CachFloatingObjectsMovingResizingLayoutModels(); RowLayout viewportRowLayoutNearY = GetViewportRowLayoutNearY(_dragStartRowViewport, _floatingObjectsMovingResizingStartPoint.Y); ColumnLayout viewportColumnLayoutNearX = GetViewportColumnLayoutNearX(_dragToColumnViewport, _floatingObjectsMovingResizingStartPoint.X); _floatingObjectsMovingResizingStartPointCellBounds = new Rect(viewportColumnLayoutNearX.X, viewportRowLayoutNearY.Y, viewportColumnLayoutNearX.Width, viewportRowLayoutNearY.Height); _floatingObjectsMovingStartLocations = new Dictionary <string, Point>(); for (int i = 0; i < _movingResizingFloatingObjects.Count; i++) { IFloatingObject obj2 = _movingResizingFloatingObjects[i]; _floatingObjectsMovingStartLocations.Add(obj2.Name, obj2.Location); } return(true); }
void StartColumnSplitting() { if (Workbook.Protect) { return; } HitTestInformation savedHitTestInformation = GetHitInfo(); SheetLayout layout = GetSheetLayout(); if (!IsTouching) { IsColumnSplitting = true; } else { IsTouchColumnSplitting = true; } IsWorking = true; if (_columnSplittingTracker == null) { // 动态分割线,创建后始终在可视树,通过Opacity控制是否显示 _columnSplittingTracker = new Line(); _columnSplittingTracker.Stroke = BrushRes.BlackBrush; _trackersPanel.Children.Add(_columnSplittingTracker); } int columnViewportIndex = savedHitTestInformation.ColumnViewportIndex; _columnSplittingTracker.Opacity = 0.5; switch (savedHitTestInformation.HitTestType) { case HitTestType.RowSplitBar: case HitTestType.ColumnSplitBar: _columnSplittingTracker.StrokeThickness = _defaultSplitBarSize; _columnSplittingTracker.X1 = layout.GetHorizontalSplitBarX(columnViewportIndex) + (_defaultSplitBarSize / 2.0); _columnSplittingTracker.Y1 = layout.Y; _columnSplittingTracker.X2 = _columnSplittingTracker.X1; _columnSplittingTracker.Y2 = layout.HeaderY + _availableSize.Height; return; case HitTestType.RowSplitBox: return; case HitTestType.ColumnSplitBox: _columnSplittingTracker.StrokeThickness = _defaultSplitBarSize; if (ColumnSplitBoxAlignment == SplitBoxAlignment.Leading) { _columnSplittingTracker.X1 = layout.GetViewportX(columnViewportIndex) + (_defaultSplitBarSize / 2.0); } else { _columnSplittingTracker.X1 = (layout.GetViewportX(columnViewportIndex) + layout.GetViewportWidth(columnViewportIndex)) - (_defaultSplitBarSize / 2.0); } _columnSplittingTracker.Y1 = layout.Y; _columnSplittingTracker.X2 = _columnSplittingTracker.X1; _columnSplittingTracker.Y2 = layout.HeaderY + _availableSize.Height; return; } }
void ContinueRowSplitting() { HitTestInformation savedHitTestInformation = GetHitInfo(); SheetLayout layout = GetSheetLayout(); int rowViewportIndex = savedHitTestInformation.RowViewportIndex; switch (savedHitTestInformation.HitTestType) { case HitTestType.RowSplitBar: case HitTestType.ColumnSplitBar: if (MousePosition.Y <= _rowSplittingTracker.Y1) { _rowSplittingTracker.Y1 = Math.Max(MousePosition.Y, layout.GetViewportY(rowViewportIndex) + (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0)); break; } _rowSplittingTracker.Y1 = Math.Min(MousePosition.Y, (layout.GetViewportY(rowViewportIndex + 1) + layout.GetViewportHeight(rowViewportIndex + 1)) - (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0)); break; case HitTestType.RowSplitBox: if (MousePosition.Y <= _rowSplittingTracker.Y1) { _rowSplittingTracker.Y1 = Math.Max(MousePosition.Y, layout.GetViewportY(rowViewportIndex) + (_defaultSplitBarSize / 2.0)); break; } _rowSplittingTracker.Y1 = Math.Min(MousePosition.Y, (layout.GetViewportY(rowViewportIndex) + layout.GetViewportHeight(rowViewportIndex)) - (_defaultSplitBarSize / 2.0)); break; } _rowSplittingTracker.Y2 = _rowSplittingTracker.Y1; }
void AutoFitRow() { RowLayout viewportResizingRowLayoutFromY; if (IsResizingRows) { EndRowResizing(); } HitTestInformation savedHitTestInformation = GetHitInfo(); if (savedHitTestInformation.HitTestType == HitTestType.RowHeader) { bool flag = false; viewportResizingRowLayoutFromY = GetViewportResizingRowLayoutFromY(savedHitTestInformation.RowViewportIndex, savedHitTestInformation.HitPoint.Y); if (viewportResizingRowLayoutFromY == null) { if (savedHitTestInformation.RowViewportIndex == 0) { viewportResizingRowLayoutFromY = GetViewportResizingRowLayoutFromY(-1, savedHitTestInformation.HitPoint.Y); } if ((viewportResizingRowLayoutFromY == null) && ((savedHitTestInformation.RowViewportIndex == -1) || (savedHitTestInformation.RowViewportIndex == 0))) { viewportResizingRowLayoutFromY = GetColumnHeaderResizingRowLayoutFromY(savedHitTestInformation.HitPoint.Y); flag = true; } } if (viewportResizingRowLayoutFromY != null) { int row = viewportResizingRowLayoutFromY.Row; if (!flag) { AutoFitRowInternal(row, true, false); } else { RowAutoFitUndoAction command = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(row) }, true); DoCommand(command); } } } else if (savedHitTestInformation.HitTestType == HitTestType.Corner) { viewportResizingRowLayoutFromY = GetColumnHeaderRowLayoutModel().FindRow(savedHitTestInformation.HeaderInfo.ResizingRow); if (viewportResizingRowLayoutFromY != null) { int num2 = viewportResizingRowLayoutFromY.Row; RowAutoFitUndoAction action2 = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(num2) }, true); DoCommand(action2); } } }
void AutoFitColumn() { ColumnLayout viewportResizingColumnLayoutFromX; if (IsResizingColumns) { EndColumnResizing(); } HitTestInformation savedHitTestInformation = GetHitInfo(); if (savedHitTestInformation.HitTestType == HitTestType.ColumnHeader) { viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(savedHitTestInformation.ColumnViewportIndex, savedHitTestInformation.HitPoint.X); bool flag = false; if (viewportResizingColumnLayoutFromX == null) { if (savedHitTestInformation.ColumnViewportIndex == 0) { viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(-1, savedHitTestInformation.HitPoint.X); } if ((viewportResizingColumnLayoutFromX == null) && ((savedHitTestInformation.ColumnViewportIndex == 0) || (savedHitTestInformation.ColumnViewportIndex == -1))) { viewportResizingColumnLayoutFromX = GetRowHeaderResizingColumnLayoutFromX(savedHitTestInformation.HitPoint.X); flag = true; } } if (viewportResizingColumnLayoutFromX != null) { int column = viewportResizingColumnLayoutFromX.Column; if (!flag) { AutoFitColumnInternal(column, true, false); } else { ColumnAutoFitUndoAction command = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(column) }, true); DoCommand(command); } } } else if (savedHitTestInformation.HitTestType == HitTestType.Corner) { viewportResizingColumnLayoutFromX = GetRowHeaderColumnLayoutModel().FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn); if (viewportResizingColumnLayoutFromX != null) { int num2 = viewportResizingColumnLayoutFromX.Column; ColumnAutoFitUndoAction action2 = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(num2) }, true); DoCommand(action2); } } }
internal Rect[] GetFloatingObjectsResizingRects(int rowViewport, int columnViewport) { if ((_movingResizingFloatingObjects == null) || (_movingResizingFloatingObjects.Count == 0)) { return(null); } Point mousePosition = MousePosition; HitTestInformation savedHitTestInformation = GetHitInfo(); if (IsTouchingResizingFloatingObjects || IsTouchingMovingFloatingObjects) { savedHitTestInformation = _touchStartHitTestInfo; } if (savedHitTestInformation.FloatingObjectInfo == null) { Debugger.Break(); } if (savedHitTestInformation.FloatingObjectInfo.InTopNWSEResize) { return(GetFloatingObjectsTopleftResizingRects(rowViewport, columnViewport, mousePosition)); } if (savedHitTestInformation.FloatingObjectInfo.InTopNSResize) { return(GetFloatingObjectsTopCenterResizingRects(rowViewport, columnViewport, mousePosition)); } if (savedHitTestInformation.FloatingObjectInfo.InTopNESWResize) { return(GetFloatingObjectsTopRightResizingRects(rowViewport, columnViewport, mousePosition)); } if (savedHitTestInformation.FloatingObjectInfo.InLeftWEResize) { return(GetFloatingObjectsMiddleLeftResizingRects(rowViewport, columnViewport, mousePosition)); } if (savedHitTestInformation.FloatingObjectInfo.InRightWEResize) { return(GetFloatingObjectsMiddleRightResizingRects(rowViewport, columnViewport, mousePosition)); } if (savedHitTestInformation.FloatingObjectInfo.InBottomNESWResize) { return(GetFloatingObjectsBottomLeftResizingRects(rowViewport, columnViewport, mousePosition)); } if (savedHitTestInformation.FloatingObjectInfo.InBottomNSResize) { return(GetFloatingObjectsBottomCenterResizingRects(rowViewport, columnViewport, mousePosition)); } if (savedHitTestInformation.FloatingObjectInfo.InBottomNWSEResize) { return(GetFloatingObjectsBottomRighResizingRects(rowViewport, columnViewport, mousePosition)); } return(new List <Rect>().ToArray()); }
void AutoFitRowForTouch(HitTestInformation hi) { RowLayout viewportResizingRowLayoutFromYForTouch; if (IsTouchResizingRows) { EndTouchRowResizing(); } if (hi.HitTestType == HitTestType.RowHeader) { bool flag = false; viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(hi.RowViewportIndex, hi.HitPoint.Y); if (viewportResizingRowLayoutFromYForTouch == null) { if (hi.RowViewportIndex == 0) { viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(-1, hi.HitPoint.Y); } if ((viewportResizingRowLayoutFromYForTouch == null) && ((hi.RowViewportIndex == -1) || (hi.RowViewportIndex == 0))) { viewportResizingRowLayoutFromYForTouch = GetColumnHeaderResizingRowLayoutFromYForTouch(hi.HitPoint.Y); flag = true; } } if (viewportResizingRowLayoutFromYForTouch != null) { int row = viewportResizingRowLayoutFromYForTouch.Row; if (!flag) { AutoFitRowInternal(row, true, false); } else { RowAutoFitUndoAction command = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(row) }, true); DoCommand(command); } } } else if (hi.HitTestType == HitTestType.Corner) { viewportResizingRowLayoutFromYForTouch = GetColumnHeaderRowLayoutModel().FindRow(hi.HeaderInfo.ResizingRow); if (viewportResizingRowLayoutFromYForTouch != null) { int num2 = viewportResizingRowLayoutFromYForTouch.Row; RowAutoFitUndoAction action2 = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(num2) }, true); DoCommand(action2); } } }
void AutoFitColumnForTouch(HitTestInformation hi) { ColumnLayout viewportResizingColumnLayoutFromXForTouch; if (IsTouchResizingColumns) { EndTouchColumnResizing(); } if (hi.HitTestType == HitTestType.ColumnHeader) { viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(hi.ColumnViewportIndex, hi.HitPoint.X); bool flag = false; if (viewportResizingColumnLayoutFromXForTouch == null) { if (hi.ColumnViewportIndex == 0) { viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(-1, hi.HitPoint.X); } if ((viewportResizingColumnLayoutFromXForTouch == null) && ((hi.ColumnViewportIndex == 0) || (hi.ColumnViewportIndex == -1))) { viewportResizingColumnLayoutFromXForTouch = GetRowHeaderResizingColumnLayoutFromXForTouch(hi.HitPoint.X); flag = true; } } if (viewportResizingColumnLayoutFromXForTouch != null) { int column = viewportResizingColumnLayoutFromXForTouch.Column; if (!flag) { AutoFitColumnInternal(column, true, false); } else { ColumnAutoFitUndoAction command = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(column) }, true); DoCommand(command); } } } else if (hi.HitTestType == HitTestType.Corner) { viewportResizingColumnLayoutFromXForTouch = GetRowHeaderColumnLayoutModel().FindColumn(hi.HeaderInfo.ResizingColumn); if (viewportResizingColumnLayoutFromXForTouch != null) { int num2 = viewportResizingColumnLayoutFromXForTouch.Column; ColumnAutoFitUndoAction action2 = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(num2) }, true); DoCommand(action2); } } }
void ContinueColumnResizing() { HitTestInformation savedHitTestInformation = GetHitInfo(); ColumnLayout viewportResizingColumnLayoutFromX = null; switch (savedHitTestInformation.HitTestType) { case HitTestType.Corner: viewportResizingColumnLayoutFromX = GetRowHeaderColumnLayoutModel().FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn); break; case HitTestType.ColumnHeader: viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(savedHitTestInformation.ColumnViewportIndex, savedHitTestInformation.HitPoint.X); if (viewportResizingColumnLayoutFromX == null) { viewportResizingColumnLayoutFromX = GetViewportColumnLayoutModel(savedHitTestInformation.ColumnViewportIndex).FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn); if (viewportResizingColumnLayoutFromX == null) { if (savedHitTestInformation.ColumnViewportIndex == 0) { viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(-1, savedHitTestInformation.HitPoint.X); } if ((viewportResizingColumnLayoutFromX == null) && ((savedHitTestInformation.ColumnViewportIndex == 0) || (savedHitTestInformation.ColumnViewportIndex == -1))) { viewportResizingColumnLayoutFromX = GetRowHeaderResizingColumnLayoutFromX(savedHitTestInformation.HitPoint.X); } } } break; } if (viewportResizingColumnLayoutFromX != null) { double x = viewportResizingColumnLayoutFromX.X; if (MousePosition.X > _resizingTracker.X1) { _resizingTracker.X1 = Math.Min(base.ActualWidth, MousePosition.X) - 0.5; } else { _resizingTracker.X1 = Math.Max(x, MousePosition.X) - 0.5; } _resizingTracker.X2 = _resizingTracker.X1; if ((InputDeviceType != InputDeviceType.Touch) && ((ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Both) || (ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Column))) { UpdateResizeToolTip(GetHorizontalResizeTip(Math.Max((double)0.0, (double)(MousePosition.X - x))), true); } } }
void ContinueTouchRowResizing() { HitTestInformation savedHitTestInformation = GetHitInfo(); RowLayout viewportResizingRowLayoutFromYForTouch = null; _DoTouchResizing = true; switch (savedHitTestInformation.HitTestType) { case HitTestType.Corner: viewportResizingRowLayoutFromYForTouch = GetColumnHeaderRowLayoutModel().FindRow(savedHitTestInformation.HeaderInfo.ResizingRow); break; case HitTestType.RowHeader: viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(savedHitTestInformation.RowViewportIndex, savedHitTestInformation.HitPoint.Y); if (((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.HeaderInfo != null)) && (savedHitTestInformation.HeaderInfo.ResizingRow >= 0)) { viewportResizingRowLayoutFromYForTouch = GetViewportRowLayoutModel(savedHitTestInformation.RowViewportIndex).FindRow(savedHitTestInformation.HeaderInfo.ResizingRow); } if ((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.RowViewportIndex == 0)) { viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(-1, savedHitTestInformation.HitPoint.Y); } if ((viewportResizingRowLayoutFromYForTouch == null) && ((savedHitTestInformation.RowViewportIndex == -1) || (savedHitTestInformation.RowViewportIndex == 0))) { viewportResizingRowLayoutFromYForTouch = GetColumnHeaderResizingRowLayoutFromYForTouch(savedHitTestInformation.HitPoint.Y); } break; } if (viewportResizingRowLayoutFromYForTouch != null) { double y = viewportResizingRowLayoutFromYForTouch.Y; if (MousePosition.Y > _resizingTracker.Y1) { _resizingTracker.Y1 = Math.Min(base.ActualHeight, MousePosition.Y) - 0.5; } else { _resizingTracker.Y1 = Math.Max(y, MousePosition.Y) - 0.5; } _resizingTracker.Y2 = _resizingTracker.Y1; if ((InputDeviceType != InputDeviceType.Touch) && ((ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Both) || (ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Row))) { UpdateResizeToolTip(GetVerticalResizeTip(Math.Max((double)0.0, (double)(MousePosition.Y - y))), false); } } }
void UpdateCursorType() { if ((_mouseCursor != null) && (_mouseCursor.Opacity != 0.0)) { HitTestInformation savedHitTestInformation = GetHitInfo(); if ((((savedHitTestInformation != null) && (savedHitTestInformation.ViewportInfo != null)) && savedHitTestInformation.ViewportInfo.InDragFillIndicator) || IsDraggingFill) { bool flag; bool flag2; KeyboardHelper.GetMetaKeyState(out flag, out flag2); CursorType cursorType = flag2 ? CursorType.DragFill_CtrlDragCursor : CursorType.DragFill_DragCursor; UpdateMouseCursorType(cursorType); } else if ((((savedHitTestInformation != null) && (savedHitTestInformation.ViewportInfo != null)) && savedHitTestInformation.ViewportInfo.InSelectionDrag) || IsDragDropping) { bool flag3; bool flag4; KeyboardHelper.GetMetaKeyState(out flag3, out flag4); CursorType type2 = flag4 ? CursorType.DragCell_CtrlDragCursor : CursorType.DragCell_DragCursor; UpdateMouseCursorType(type2); } } }
void EndColumnSplitting() { double num2; HitTestInformation savedHitTestInformation = GetHitInfo(); SheetLayout layout = GetSheetLayout(); int columnViewportIndex = savedHitTestInformation.ColumnViewportIndex; IsWorking = false; IsTouchColumnSplitting = false; IsColumnSplitting = false; switch (savedHitTestInformation.HitTestType) { case HitTestType.RowSplitBar: case HitTestType.ColumnSplitBar: if (MousePosition.X <= layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex)) { num2 = layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex) - MousePosition.X; } else { num2 = Math.Max((double)0.0, (double)((MousePosition.X - layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex)) - layout.GetHorizontalSplitBarWidth(savedHitTestInformation.ColumnViewportIndex))); } if (num2 != 0.0) { double deltaViewportWidth = (_columnSplittingTracker.X1 - layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex)) - (layout.GetHorizontalSplitBarWidth(savedHitTestInformation.ColumnViewportIndex) / 2.0); int viewportIndex = savedHitTestInformation.ColumnViewportIndex; if (!RaiseColumnViewportWidthChanging(viewportIndex, deltaViewportWidth)) { AdjustColumnViewport(columnViewportIndex, deltaViewportWidth); RaiseColumnViewportWidthChanged(viewportIndex, deltaViewportWidth); } } break; case HitTestType.ColumnSplitBox: if (ColumnSplitBoxAlignment == SplitBoxAlignment.Leading) { num2 = Math.Max(0.0, MousePosition.X - layout.GetViewportX(savedHitTestInformation.ColumnViewportIndex) - _defaultSplitBarSize); } else { num2 = Math.Max(0.0, layout.GetViewportX(savedHitTestInformation.ColumnViewportIndex) + layout.GetViewportWidth(savedHitTestInformation.ColumnViewportIndex) - MousePosition.X - _defaultSplitBarSize); } if (num2 > 0.0) { double num3 = (_columnSplittingTracker.X1 - layout.GetViewportX(columnViewportIndex)) - (_defaultSplitBarSize / 2.0); int num4 = (ColumnSplitBoxAlignment == SplitBoxAlignment.Leading) ? 0 : (GetViewportInfo().ColumnViewportCount - 1); if (!RaiseColumnViewportWidthChanging(num4, num3)) { AddColumnViewport(columnViewportIndex, num3); RaiseColumnViewportWidthChanged(num4, num3); ShowCell(GetActiveRowViewportIndex(), GetActiveColumnViewportIndex(), ActiveSheet.ActiveRowIndex, ActiveSheet.ActiveColumnIndex, VerticalPosition.Nearest, HorizontalPosition.Nearest); } } break; default: break; } _columnSplittingTracker.Opacity = 0.0; }
void EndRowSplitting() { double num2; HitTestInformation savedHitTestInformation = GetHitInfo(); SheetLayout layout = GetSheetLayout(); int rowViewportIndex = savedHitTestInformation.RowViewportIndex; IsWorking = false; IsRowSplitting = false; IsTouchRowSplitting = false; switch (savedHitTestInformation.HitTestType) { case HitTestType.RowSplitBar: case HitTestType.ColumnSplitBar: if (MousePosition.Y <= layout.GetVerticalSplitBarY(rowViewportIndex)) { num2 = layout.GetVerticalSplitBarY(rowViewportIndex) - MousePosition.Y; } else { num2 = Math.Max(0.0, ((MousePosition.Y - layout.GetVerticalSplitBarY(rowViewportIndex)) - layout.GetVerticalSplitBarHeight(rowViewportIndex))); } if (num2 != 0.0) { double deltaViewportHeight = (_rowSplittingTracker.Y1 - layout.GetVerticalSplitBarY(rowViewportIndex)) - (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0); int viewportIndex = savedHitTestInformation.RowViewportIndex; if (!RaiseRowViewportHeightChanging(viewportIndex, deltaViewportHeight)) { AdjustRowViewport(rowViewportIndex, deltaViewportHeight); RaiseRowViewportHeightChanged(viewportIndex, deltaViewportHeight); } } break; case HitTestType.RowSplitBox: if (RowSplitBoxAlignment == SplitBoxAlignment.Leading) { num2 = Math.Max(0.0, ((MousePosition.Y - layout.GetViewportY(rowViewportIndex)) - _defaultSplitBarSize)); } else { num2 = Math.Max(0.0, (((layout.GetViewportY(rowViewportIndex) + layout.GetViewportHeight(rowViewportIndex)) - MousePosition.Y) - _defaultSplitBarSize)); } if (num2 > 0.0) { double num3 = (_rowSplittingTracker.Y1 - layout.GetViewportY(rowViewportIndex)) - (_defaultSplitBarSize / 2.0); int num4 = (RowSplitBoxAlignment == SplitBoxAlignment.Leading) ? 0 : (GetViewportInfo().RowViewportCount - 1); if (!RaiseRowViewportHeightChanging(num4, num3)) { AddRowViewport(rowViewportIndex, num3); RaiseRowViewportHeightChanged(num4, num3); ShowCell(GetActiveRowViewportIndex(), GetActiveColumnViewportIndex(), ActiveSheet.ActiveRowIndex, ActiveSheet.ActiveColumnIndex, VerticalPosition.Nearest, HorizontalPosition.Nearest); } } break; default: break; } _rowSplittingTracker.Opacity = 0.0; }
void EndTouchRowResizing() { IsWorking = false; IsTouchResizingRows = false; HitTestInformation savedHitTestInformation = GetHitInfo(); if ((savedHitTestInformation.HitPoint.Y == MousePosition.Y) || !_DoTouchResizing) { TooltipHelper.CloseTooltip(); _resizingTracker.Visibility = Visibility.Collapsed; } else { RowLayout viewportResizingRowLayoutFromYForTouch = null; switch (savedHitTestInformation.HitTestType) { case HitTestType.Corner: viewportResizingRowLayoutFromYForTouch = GetColumnHeaderRowLayoutModel().FindRow(savedHitTestInformation.HeaderInfo.ResizingRow); if (viewportResizingRowLayoutFromYForTouch != null) { double num6 = (_resizingTracker.Y1 - viewportResizingRowLayoutFromYForTouch.Y) - viewportResizingRowLayoutFromYForTouch.Height; int row = viewportResizingRowLayoutFromYForTouch.Row; double size = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.ColumnHeader.Rows[row].ActualHeight + (num6 / ((double)ZoomFactor))))); RowResizeExtent[] rows = new RowResizeExtent[] { new RowResizeExtent(row, row) }; RowResizeUndoAction command = new RowResizeUndoAction(ActiveSheet, rows, size, true); DoCommand(command); } break; case HitTestType.RowHeader: { viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(savedHitTestInformation.RowViewportIndex, savedHitTestInformation.HitPoint.Y); bool flag = false; if ((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.RowViewportIndex == 0)) { viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(-1, savedHitTestInformation.HitPoint.Y); } if (((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.HeaderInfo != null)) && (savedHitTestInformation.HeaderInfo.ResizingRow >= 0)) { viewportResizingRowLayoutFromYForTouch = GetViewportRowLayoutModel(savedHitTestInformation.RowViewportIndex).FindRow(savedHitTestInformation.HeaderInfo.ResizingRow); } if ((viewportResizingRowLayoutFromYForTouch == null) && ((savedHitTestInformation.RowViewportIndex == -1) || (savedHitTestInformation.RowViewportIndex == 0))) { viewportResizingRowLayoutFromYForTouch = GetColumnHeaderResizingRowLayoutFromYForTouch(savedHitTestInformation.HitPoint.Y); flag = true; } if (viewportResizingRowLayoutFromYForTouch != null) { double num = (_resizingTracker.Y1 - viewportResizingRowLayoutFromYForTouch.Y) - viewportResizingRowLayoutFromYForTouch.Height; int firstRow = viewportResizingRowLayoutFromYForTouch.Row; double num3 = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.Rows[firstRow].ActualHeight + (num / ((double)ZoomFactor))))); if (flag) { RowResizeExtent[] extentArray2 = new RowResizeExtent[] { new RowResizeExtent(firstRow, firstRow) }; RowResizeUndoAction action2 = new RowResizeUndoAction(ActiveSheet, extentArray2, num3, true); DoCommand(action2); break; } List <RowResizeExtent> list = new List <RowResizeExtent>(); if (ActiveSheet.IsSelected(firstRow, -1)) { foreach (CellRange range in ActiveSheet.Selections) { if (range.Column == -1) { int num4 = (range.Row == -1) ? 0 : range.Row; int num5 = ((range.Row == -1) && (range.RowCount == -1)) ? ActiveSheet.RowCount : range.RowCount; list.Add(new RowResizeExtent(num4, (num4 + num5) - 1)); } } } else { list.Add(new RowResizeExtent(firstRow, firstRow)); } RowResizeExtent[] extentArray = new RowResizeExtent[list.Count]; list.CopyTo(extentArray); RowResizeUndoAction action = new RowResizeUndoAction(ActiveSheet, extentArray, num3, false); DoCommand(action); } break; } } TooltipHelper.CloseTooltip(); _resizingTracker.Visibility = Visibility.Collapsed; _DoTouchResizing = false; } }
void EndTouchColumnResizing() { IsWorking = false; IsTouchResizingColumns = false; HitTestInformation savedHitTestInformation = GetHitInfo(); if ((savedHitTestInformation.HitPoint.X == MousePosition.X) || !_DoTouchResizing) { TooltipHelper.CloseTooltip(); _resizingTracker.Visibility = Visibility.Collapsed; } else { ColumnLayout viewportResizingColumnLayoutFromXForTouch; switch (savedHitTestInformation.HitTestType) { case HitTestType.Corner: viewportResizingColumnLayoutFromXForTouch = GetRowHeaderColumnLayoutModel().FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn); if (viewportResizingColumnLayoutFromXForTouch != null) { double num6 = (_resizingTracker.X1 - viewportResizingColumnLayoutFromXForTouch.X) - viewportResizingColumnLayoutFromXForTouch.Width; int column = viewportResizingColumnLayoutFromXForTouch.Column; double size = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.RowHeader.Columns[column].ActualWidth + (num6 / ((double)ZoomFactor))))); ColumnResizeExtent[] columns = new ColumnResizeExtent[] { new ColumnResizeExtent(column, column) }; ColumnResizeUndoAction command = new ColumnResizeUndoAction(ActiveSheet, columns, size, true); DoCommand(command); } break; case HitTestType.ColumnHeader: { viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(savedHitTestInformation.ColumnViewportIndex, savedHitTestInformation.HitPoint.X); bool flag = false; if (viewportResizingColumnLayoutFromXForTouch == null) { viewportResizingColumnLayoutFromXForTouch = GetViewportColumnLayoutModel(savedHitTestInformation.ColumnViewportIndex).FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn); if ((viewportResizingColumnLayoutFromXForTouch == null) && (savedHitTestInformation.ColumnViewportIndex == 0)) { viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(-1, savedHitTestInformation.HitPoint.X); } if ((viewportResizingColumnLayoutFromXForTouch == null) && ((savedHitTestInformation.ColumnViewportIndex == 0) || (savedHitTestInformation.ColumnViewportIndex == -1))) { viewportResizingColumnLayoutFromXForTouch = GetRowHeaderResizingColumnLayoutFromXForTouch(savedHitTestInformation.HitPoint.X); flag = true; } } if (viewportResizingColumnLayoutFromXForTouch != null) { double num = (_resizingTracker.X1 - viewportResizingColumnLayoutFromXForTouch.X) - viewportResizingColumnLayoutFromXForTouch.Width; int num2 = viewportResizingColumnLayoutFromXForTouch.Column; double num3 = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.Columns[num2].ActualWidth + (num / ((double)ZoomFactor))))); if (!flag) { List <ColumnResizeExtent> list = new List <ColumnResizeExtent>(); if (ActiveSheet.IsSelected(-1, num2)) { foreach (CellRange range in ActiveSheet.Selections) { if (range.Row == -1) { int firstColumn = (range.Column == -1) ? 0 : range.Column; int num5 = ((range.Column == -1) && (range.ColumnCount == -1)) ? ActiveSheet.ColumnCount : range.ColumnCount; list.Add(new ColumnResizeExtent(firstColumn, (firstColumn + num5) - 1)); } } } else { list.Add(new ColumnResizeExtent(num2, num2)); } ColumnResizeExtent[] extentArray = new ColumnResizeExtent[list.Count]; list.CopyTo(extentArray); ColumnResizeUndoAction action = new ColumnResizeUndoAction(ActiveSheet, extentArray, num3, false); DoCommand(action); } else { ColumnResizeExtent[] extentArray2 = new ColumnResizeExtent[] { new ColumnResizeExtent(num2, num2) }; ColumnResizeUndoAction action2 = new ColumnResizeUndoAction(ActiveSheet, extentArray2, num3, true); DoCommand(action2); } } break; } } TooltipHelper.CloseTooltip(); _resizingTracker.Visibility = Visibility.Collapsed; _DoTouchResizing = false; } }