Browse Source

fix bug MouseHoverLogic to make it easier to show Diff-Tooltip in editor: start MouseHover already on MouseEnter

4.2
Siegfried Pammer 13 years ago committed by Daniel Grunwald
parent
commit
48fe7804ea
  1. 25
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/MouseHoverLogic.cs

25
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/MouseHoverLogic.cs

@ -30,24 +30,34 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -30,24 +30,34 @@ namespace ICSharpCode.AvalonEdit.Rendering
this.target = target;
this.target.MouseLeave += MouseHoverLogicMouseLeave;
this.target.MouseMove += MouseHoverLogicMouseMove;
this.target.MouseEnter += MouseHoverLogicMouseEnter;
}
void MouseHoverLogicMouseMove(object sender, MouseEventArgs e)
{
Point newPosition = e.GetPosition(this.target);
Vector mouseMovement = mouseHoverStartPoint - newPosition;
Vector mouseMovement = mouseHoverStartPoint - e.GetPosition(this.target);
if (Math.Abs(mouseMovement.X) > SystemParameters.MouseHoverWidth
|| Math.Abs(mouseMovement.Y) > SystemParameters.MouseHoverHeight)
{
StartHovering(e);
}
// do not set e.Handled - allow others to also handle MouseMove
}
void MouseHoverLogicMouseEnter(object sender, MouseEventArgs e)
{
StartHovering(e);
// do not set e.Handled - allow others to also handle MouseEnter
}
void StartHovering(MouseEventArgs e)
{
StopHovering();
mouseHoverStartPoint = newPosition;
mouseHoverStartPoint = e.GetPosition(this.target);
mouseHoverLastEventArgs = e;
mouseHoverTimer = new DispatcherTimer(SystemParameters.MouseHoverTime, DispatcherPriority.Background,
OnMouseHoverTimerElapsed, this.target.Dispatcher);
mouseHoverTimer = new DispatcherTimer(SystemParameters.MouseHoverTime, DispatcherPriority.Background, OnMouseHoverTimerElapsed, this.target.Dispatcher);
mouseHoverTimer.Start();
}
// do not set e.Handled - allow others to also handle MouseMove
}
void MouseHoverLogicMouseLeave(object sender, MouseEventArgs e)
{
@ -116,6 +126,7 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -116,6 +126,7 @@ namespace ICSharpCode.AvalonEdit.Rendering
if (!disposed) {
this.target.MouseLeave -= MouseHoverLogicMouseLeave;
this.target.MouseMove -= MouseHoverLogicMouseMove;
this.target.MouseEnter -= MouseHoverLogicMouseEnter;
}
disposed = true;
}

Loading…
Cancel
Save