void _ResetCursor() { ChartMouseMethod mouseMethod = MouseMethod; if (Helper.TestModifierKeys(Keys.Shift)) { if (mouseMethod == ChartMouseMethod.Select) { mouseMethod = ChartMouseMethod.Scroll; } } Cursor cur; if (!FormatPainter.Default.IsEmpty) { cur = StyleBrushCursor; } else if (mouseMethod == ChartMouseMethod.Scroll) { cur = ScrollCursor; } else { if (HoverObject.Widget != null && HoverObject.Widget.Cursor != null) { cur = HoverObject.Widget.Cursor; } else { cur = Cursors.Default; } } if (cur != Cursor) { Cursor = cur; } }
protected override void OnChartMouseMove(MouseEventArgs e) { base.OnChartMouseMove(e); // if the Shift is press, maybe is hover hyperlink, or reverse MouseMethod ChartMouseMethod mouseMethod = MouseMethod; if (Helper.TestModifierKeys(Keys.Shift)) { if (mouseMethod == ChartMouseMethod.Select) { mouseMethod = ChartMouseMethod.Scroll; } } if (MouseState == ChartMouseState.Drag) { CurrentDragMethod = Helper.TestModifierKeys(Keys.Control) ? DragTopicsMethod.Copy : DragTopicsMethod.Move; //bool canDrop = TestDrop(PressObject.Topic, HitTest(e.X, e.Y).Topic); //ShowDragBox(PressObject.Topic, e.X, e.Y, canDrop); bool canDrag = TestDragDrop(DragBox.Topics, HitTest(e.X, e.Y).Topic, CurrentDragMethod); ShowDragBox(DragBox.Topics, e.X, e.Y, canDrag, CurrentDragMethod); } else if (mouseMethod == ChartMouseMethod.Scroll) { if (MouseMethod == mouseMethod) { MouseState = ChartMouseState.Scroll; } if (e.Button == MouseButtons.Left) { Scroll(LastMousePos.X - e.X, LastMousePos.Y - e.Y); LastMousePos.X = e.X; LastMousePos.Y = e.Y; } } else if (IsMouseDown) { if (PressObject.IsEmpty) // select { if (e.Button == MouseButtons.Left) { MouseState = ChartMouseState.Select; } } else if (MouseState != ChartMouseState.Drag) { // test drag if (Math.Abs(MouseDownPos.X - e.X) > SystemInformation.DragSize.Width || Math.Abs(MouseDownPos.Y - e.Y) > SystemInformation.DragSize.Height) { DragBox.Start(MouseDownPos, SelectedTopics); MouseState = ChartMouseState.Drag; } } } if (!EditMode && MouseState == ChartMouseState.Normal) { HoverObject = HitTest(e.X, e.Y); } _ResetCursor(); }
protected override void OnChartMouseDown(MouseEventArgs e) { base.OnChartMouseDown(e); if (!ChartBox.Focused) { ChartBox.Focus(); } IsMouseDown = true; MouseDownPos = new Point(e.X, e.Y); PressObject = HitTest(e.X, e.Y); LastMousePos = MouseDownPos; if (EditMode) { EndEdit(true); } ToolTipLayer.HideAllToolTips(); // if the Shift is press, maybe is hover hyperlink, or reverse MouseMethod ChartMouseMethod mouseMethod = MouseMethod; if (Helper.TestModifierKeys(Keys.Shift)) { if (mouseMethod == ChartMouseMethod.Select) { mouseMethod = ChartMouseMethod.Scroll; } } // if (mouseMethod == ChartMouseMethod.Scroll) { _ResetCursor(); } else if (mouseMethod == ChartMouseMethod.Select) { if (PressObject.Topic != null) { if (PressObject.IsFoldingButton) { PressObject.Topic.Toggle(); } else if (PressObject.Widget != null) { if (!PressObject.Widget.Selected) { Select(PressObject.Widget, !Helper.TestModifierKeys(Keys.Control)); } else if (Helper.TestModifierKeys(Keys.Control)) { Unselect(PressObject.Widget); } } else { if (!PressObject.Topic.Selected) { Select(PressObject.Topic, !Helper.TestModifierKeys(Keys.Control)); //SelectTopic(PressObject.Topic, !Helper.TestModifierKeys(Keys.Control)); } else if (Helper.TestModifierKeys(Keys.Control)) { Unselect(PressObject.Topic); } } } else if (e.Button == MouseButtons.Left) { if (!Helper.TestModifierKeys(Keys.Control)) { ClearSelection(); } EnterSelectMode(); } } }