Browse Source

Move bracket highlighting from CodeEditor to CodeEditorView.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5205 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
ef0da64c45
  1. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  2. 26
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  3. 21
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

1
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs

@ -117,6 +117,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -117,6 +117,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
void CaretChanged(object sender, EventArgs e)
{
NavigationService.Log(this.BuildNavPoint());
StatusBarService.SetCaretPosition(this.Column, this.Line, this.Column);
}
#region Bookmark Handling

26
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -55,9 +55,6 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -55,9 +55,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
readonly TextMarkerService textMarkerService;
ErrorPainter errorPainter;
BracketHighlightRenderer primaryBracketRenderer;
BracketHighlightRenderer secondaryBracketRenderer;
public CodeEditorView PrimaryTextEditor {
get { return primaryTextEditor; }
}
@ -152,8 +149,6 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -152,8 +149,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
Debug.Assert(primaryTextEditorAdapter != null);
activeTextEditor = primaryTextEditor;
this.primaryBracketRenderer = new BracketHighlightRenderer(primaryTextEditor.TextArea.TextView);
this.Document = primaryTextEditor.Document;
primaryTextEditor.SetBinding(TextEditor.DocumentProperty, new Binding("Document") { Source = this });
@ -270,8 +265,6 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -270,8 +265,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
SetRow(secondaryTextEditor, 2);
this.Children.Add(secondaryTextEditor);
this.secondaryBracketRenderer = new BracketHighlightRenderer(secondaryTextEditor.TextArea.TextView);
secondaryTextEditorAdapter.FileNameChanged();
FetchParseInformation();
} else {
@ -283,7 +276,6 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -283,7 +276,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
secondaryTextEditorAdapter.Language.Detach();
secondaryTextEditorAdapter = null;
gridSplitter = null;
this.secondaryBracketRenderer = null;
this.RowDefinitions.RemoveAt(this.RowDefinitions.Count - 1);
this.ActiveTextEditor = primaryTextEditor;
}
@ -306,24 +298,6 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -306,24 +298,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
quickClassBrowser.SelectItemAtCaretPosition(this.ActiveTextEditorAdapter.Caret.Position);
}
var caret = this.ActiveTextEditor.TextArea.Caret;
var activeAdapter = this.ActiveTextEditorAdapter;
/*
* Special case: ITextEditor.Language guarantees that it never returns null.
* In this case however it can be null, since this code is called while the document is loaded.
* ITextEditor.Language gets set in CodeEditorAdapter.FileNameChanged, which is called after
* loading of the document has finished.
* */
if (activeAdapter.Language != null) {
var bracketSearchResult = activeAdapter.Language.BracketSearcher.SearchBracket(activeAdapter.Document, activeAdapter.Caret.Offset);
if (activeAdapter == primaryTextEditorAdapter)
this.primaryBracketRenderer.SetHighlight(bracketSearchResult);
else
this.secondaryBracketRenderer.SetHighlight(bracketSearchResult);
}
StatusBarService.SetCaretPosition(caret.Column, caret.Line, caret.Column);
CaretPositionChanged.RaiseEvent(this, EventArgs.Empty);
}

21
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -36,6 +36,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -36,6 +36,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
public ITextEditor Adapter { get; set; }
CodeEditorOptions options;
BracketHighlightRenderer bracketRenderer;
public CodeEditorView()
{
@ -43,15 +44,35 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -43,15 +44,35 @@ namespace ICSharpCode.AvalonEdit.AddIn
options = ICSharpCode.AvalonEdit.AddIn.Options.CodeEditorOptions.Instance;
options.BindToTextEditor(this);
bracketRenderer = new BracketHighlightRenderer(this.TextArea.TextView);
this.MouseHover += TextEditorMouseHover;
this.MouseHoverStopped += TextEditorMouseHoverStopped;
this.MouseLeave += TextEditorMouseLeave;
this.TextArea.TextView.MouseDown += TextViewMouseDown;
this.TextArea.Caret.PositionChanged += TextArea_PositionChanged;
var editingKeyBindings = this.TextArea.DefaultInputHandler.Editing.InputBindings.OfType<KeyBinding>();
var tabBinding = editingKeyBindings.Single(b => b.Key == Key.Tab && b.Modifiers == ModifierKeys.None);
tabBinding.Command = new CustomTabCommand(this, tabBinding.Command);
}
void TextArea_PositionChanged(object sender, EventArgs e)
{
/*
* Special case: ITextEditor.Language guarantees that it never returns null.
* In this case however it can be null, since this code may be called while the document is loaded.
* ITextEditor.Language gets set in CodeEditorAdapter.FileNameChanged, which is called after
* loading of the document has finished.
* */
if (activeAdapter.Language != null) {
var bracketSearchResult = activeAdapter.Language.BracketSearcher.SearchBracket(activeAdapter.Document, activeAdapter.Caret.Offset);
if (activeAdapter == primaryTextEditorAdapter)
this.primaryBracketRenderer.SetHighlight(bracketSearchResult);
else
this.secondaryBracketRenderer.SetHighlight(bracketSearchResult);
}
}
sealed class CustomTabCommand : ICommand
{

Loading…
Cancel
Save