/// <summary> /// This is the method that responds to the MouseEvent event. /// </summary> /// <param name="e"></param> protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (IsDragging) { if (e.MouseDevice.LeftButton == MouseButtonState.Pressed) { Point thumbCoordPosition = e.GetPosition(this); // Get client point then convert to screen point Point screenCoordPosition = SafeSecurityHelper.ClientToScreen(this, thumbCoordPosition); // We will fire DragDelta event only when the mouse is really moved if (screenCoordPosition != _previousScreenCoordPosition) { _previousScreenCoordPosition = screenCoordPosition; e.Handled = true; RaiseEvent(new DragDeltaEventArgs(thumbCoordPosition.X - _originThumbPoint.X, thumbCoordPosition.Y - _originThumbPoint.Y)); } } else { if (e.MouseDevice.Captured == this) { ReleaseMouseCapture(); } ClearValue(IsDraggingPropertyKey); _originThumbPoint.X = 0; _originThumbPoint.Y = 0; } } }
/// <summary>Provides class handling for the <see cref="E:System.Windows.UIElement.MouseMove" /> event. </summary> /// <param name="e">The event data.</param> // Token: 0x060060C2 RID: 24770 RVA: 0x001B1D40 File Offset: 0x001AFF40 protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (this.IsDragging) { if (e.MouseDevice.LeftButton == MouseButtonState.Pressed) { Point position = e.GetPosition(this); Point point = SafeSecurityHelper.ClientToScreen(this, position); if (point != this._previousScreenCoordPosition) { this._previousScreenCoordPosition = point; e.Handled = true; base.RaiseEvent(new DragDeltaEventArgs(position.X - this._originThumbPoint.X, position.Y - this._originThumbPoint.Y)); return; } } else { if (e.MouseDevice.Captured == this) { base.ReleaseMouseCapture(); } base.ClearValue(Thumb.IsDraggingPropertyKey); this._originThumbPoint.X = 0.0; this._originThumbPoint.Y = 0.0; } } }
/// <summary> /// This is the method that responds to the MouseButtonEvent event. /// </summary> /// <param name="e"></param> protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { if (!IsDragging) { e.Handled = true; Focus(); CaptureMouse(); SetValue(IsDraggingPropertyKey, true); _originThumbPoint = e.GetPosition(this); _previousScreenCoordPosition = _originScreenCoordPosition = SafeSecurityHelper.ClientToScreen(this, _originThumbPoint); bool exceptionThrown = true; try { RaiseEvent(new DragStartedEventArgs(_originThumbPoint.X, _originThumbPoint.Y)); exceptionThrown = false; } finally { if (exceptionThrown) { CancelDrag(); } } } else { // This is weird, Thumb shouldn't get MouseLeftButtonDown event while dragging. // This may be the case that something ate MouseLeftButtonUp event, so Thumb never had a chance to // reset IsDragging property Debug.Assert(false, "Got MouseLeftButtonDown event while dragging!"); } base.OnMouseLeftButtonDown(e); }
/// <summary> /// This is the method that responds to the MouseButtonEvent event. /// </summary> /// <param name="e"></param> protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { if (IsMouseCaptured && IsDragging) { e.Handled = true; ClearValue(IsDraggingPropertyKey); ReleaseMouseCapture(); Point pt = SafeSecurityHelper.ClientToScreen(this, e.MouseDevice.GetPosition(this)); RaiseEvent(new DragCompletedEventArgs(pt.X - _originScreenCoordPosition.X, pt.Y - _originScreenCoordPosition.Y, false)); } base.OnMouseLeftButtonUp(e); }
/// <summary>Provides class handling for the <see cref="E:System.Windows.ContentElement.MouseLeftButtonDown" /> event. </summary> /// <param name="e">The event data.</param> // Token: 0x060060BF RID: 24767 RVA: 0x001B1BF0 File Offset: 0x001AFDF0 protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { if (!this.IsDragging) { e.Handled = true; base.Focus(); base.CaptureMouse(); base.SetValue(Thumb.IsDraggingPropertyKey, true); this._originThumbPoint = e.GetPosition(this); this._previousScreenCoordPosition = (this._originScreenCoordPosition = SafeSecurityHelper.ClientToScreen(this, this._originThumbPoint)); bool flag = true; try { base.RaiseEvent(new DragStartedEventArgs(this._originThumbPoint.X, this._originThumbPoint.Y)); flag = false; } finally { if (flag) { this.CancelDrag(); } } } base.OnMouseLeftButtonDown(e); }