From 5bbe18011e94eadf4d136ae432cc518902ccee99 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 2 Feb 2014 18:46:42 +0100 Subject: [PATCH] Fix interaction between "Hide cursor while typing" and InsertWithCursor(). --- .../Editing/TextArea.cs | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs index 0d0747c112..d4eb99264a 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs @@ -577,12 +577,12 @@ namespace ICSharpCode.AvalonEdit.Editing get { return caret; } } - void CaretPositionChanged(object sender, EventArgs e) + void CaretPositionChanged(object sender, EventArgs e) { if (textView == null) return; - this.textView.HighlightedLine = this.Caret.Line; + this.textView.HighlightedLine = this.Caret.Line; } ObservableCollection leftMargins = new ObservableCollection(); @@ -849,6 +849,7 @@ namespace ICSharpCode.AvalonEdit.Editing // We have to ignore those (not handle them) to keep the shortcut working. return; } + HideMouseCursor(); PerformTextInput(e); e.Handled = true; } @@ -978,7 +979,6 @@ namespace ICSharpCode.AvalonEdit.Editing return; } - HideMouseCursor(); foreach (TextAreaStackedInputHandler h in stackedInputHandlers) { if (e.Handled) break; @@ -1002,7 +1002,6 @@ namespace ICSharpCode.AvalonEdit.Editing protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); - HideMouseCursor(); TextView.InvalidateCursorIfMouseWithinTextView(); } @@ -1018,16 +1017,19 @@ namespace ICSharpCode.AvalonEdit.Editing bool isMouseCursorHidden; - void AttachTypingEvents() { + void AttachTypingEvents() + { + // Use the PreviewMouseMove event in case some other editor layer consumes the MouseMove event (e.g. SD's InsertionCursorLayer) this.MouseEnter += delegate { ShowMouseCursor(); }; this.MouseLeave += delegate { ShowMouseCursor(); }; - this.MouseMove += delegate { ShowMouseCursor(); }; + this.PreviewMouseMove += delegate { ShowMouseCursor(); }; this.TouchEnter += delegate { ShowMouseCursor(); }; this.TouchLeave += delegate { ShowMouseCursor(); }; - this.TouchMove += delegate { ShowMouseCursor(); }; + this.PreviewTouchMove += delegate { ShowMouseCursor(); }; } - void ShowMouseCursor() { + void ShowMouseCursor() + { if (this.isMouseCursorHidden) { System.Windows.Forms.Cursor.Show(); this.isMouseCursorHidden = false; @@ -1035,7 +1037,7 @@ namespace ICSharpCode.AvalonEdit.Editing } void HideMouseCursor() { - if (Options.HideCursorWhileTyping && !this.isMouseCursorHidden && this.IsMouseOver) { + if (Options.HideCursorWhileTyping && !this.isMouseCursorHidden && this.IsMouseOver) { this.isMouseCursorHidden = true; System.Windows.Forms.Cursor.Hide(); }