From 05df040a286096e27fd5d923fe66c63a67dff5f2 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Wed, 4 Nov 2009 15:21:29 +0000 Subject: [PATCH] Implemented CodeEditor.ActiveTextEditor. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5204 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../AvalonEdit.AddIn/Src/CodeEditor.cs | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs index 588c14553e..7741842680 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs @@ -48,6 +48,7 @@ namespace ICSharpCode.AvalonEdit.AddIn readonly CodeEditorView primaryTextEditor; readonly CodeEditorAdapter primaryTextEditorAdapter; CodeEditorView secondaryTextEditor; + CodeEditorView activeTextEditor; CodeEditorAdapter secondaryTextEditorAdapter; GridSplitter gridSplitter; readonly IconBarManager iconBarManager; @@ -62,7 +63,13 @@ namespace ICSharpCode.AvalonEdit.AddIn } public CodeEditorView ActiveTextEditor { - get { return primaryTextEditor; } + get { return activeTextEditor; } + private set { + if (activeTextEditor != value) { + activeTextEditor = value; + HandleCaretPositionChange(); + } + } } TextDocument document; @@ -143,6 +150,7 @@ namespace ICSharpCode.AvalonEdit.AddIn primaryTextEditor = CreateTextEditor(); primaryTextEditorAdapter = (CodeEditorAdapter)primaryTextEditor.TextArea.GetService(typeof(ITextEditor)); Debug.Assert(primaryTextEditorAdapter != null); + activeTextEditor = primaryTextEditor; this.primaryBracketRenderer = new BracketHighlightRenderer(primaryTextEditor.TextArea.TextView); @@ -185,6 +193,7 @@ namespace ICSharpCode.AvalonEdit.AddIn textEditor.TextArea.MouseRightButtonDown += TextAreaMouseRightButtonDown; textEditor.TextArea.ContextMenuOpening += TextAreaContextMenuOpening; textEditor.TextArea.TextCopied += textEditor_TextArea_TextCopied; + textEditor.GotFocus += textEditor_GotFocus; return textEditor; } @@ -203,6 +212,12 @@ namespace ICSharpCode.AvalonEdit.AddIn textEditor.TextArea.LeftMargins.OfType().Single().TextView = null; } + void textEditor_GotFocus(object sender, RoutedEventArgs e) + { + Debug.Assert(sender is CodeEditorView); + this.ActiveTextEditor = (CodeEditorView)sender; + } + void TextAreaContextMenuOpening(object sender, ContextMenuEventArgs e) { ITextEditor adapter = GetAdapterFromSender(sender); @@ -243,9 +258,9 @@ namespace ICSharpCode.AvalonEdit.AddIn new Binding(TextEditor.DocumentProperty.Name) { Source = primaryTextEditor }); secondaryTextEditor.SyntaxHighlighting = primaryTextEditor.SyntaxHighlighting; - gridSplitter = new GridSplitter { - Height = 4, - HorizontalAlignment = HorizontalAlignment.Stretch, + gridSplitter = new GridSplitter { + Height = 4, + HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Top }; SetRow(gridSplitter, 2); @@ -270,6 +285,7 @@ namespace ICSharpCode.AvalonEdit.AddIn gridSplitter = null; this.secondaryBracketRenderer = null; this.RowDefinitions.RemoveAt(this.RowDefinitions.Count - 1); + this.ActiveTextEditor = primaryTextEditor; } }