Browse Source

AvalonEdit: don't unnecessarily update the mouse cursor.

pull/41/merge
Daniel Grunwald 12 years ago
parent
commit
5e93aa5f17
  1. 4
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs
  2. 11
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

4
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs

@ -966,14 +966,14 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -966,14 +966,14 @@ namespace ICSharpCode.AvalonEdit.Editing
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
TextView.InvalidateCursor();
TextView.InvalidateCursorIfMouseWithinTextView();
}
/// <inheritdoc/>
protected override void OnKeyUp(KeyEventArgs e)
{
base.OnKeyUp(e);
TextView.InvalidateCursor();
TextView.InvalidateCursorIfMouseWithinTextView();
}
#endregion

11
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

@ -1165,7 +1165,7 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -1165,7 +1165,7 @@ namespace ICSharpCode.AvalonEdit.Rendering
}
}
}
InvalidateCursor();
InvalidateCursorIfMouseWithinTextView();
return finalSize;
}
@ -1636,6 +1636,15 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -1636,6 +1636,15 @@ namespace ICSharpCode.AvalonEdit.Rendering
}
}
internal void InvalidateCursorIfMouseWithinTextView()
{
// Don't unnecessarily call Mouse.UpdateCursor() if the mouse is outside the text view.
// Unnecessary updates may cause the mouse pointer to flicker
// (e.g. if it is over a window border, it blinks between Resize and Normal)
if (this.IsMouseOver)
InvalidateCursor();
}
/// <inheritdoc/>
protected override void OnQueryCursor(QueryCursorEventArgs e)
{

Loading…
Cancel
Save