diff --git a/src/StructuredLogViewer/Controls/TextViewerControl.xaml b/src/StructuredLogViewer/Controls/TextViewerControl.xaml index 84556366..800e17b0 100644 --- a/src/StructuredLogViewer/Controls/TextViewerControl.xaml +++ b/src/StructuredLogViewer/Controls/TextViewerControl.xaml @@ -75,6 +75,7 @@ + diff --git a/src/StructuredLogViewer/Controls/TextViewerControl.xaml.cs b/src/StructuredLogViewer/Controls/TextViewerControl.xaml.cs index 325fdda1..b66c03b3 100644 --- a/src/StructuredLogViewer/Controls/TextViewerControl.xaml.cs +++ b/src/StructuredLogViewer/Controls/TextViewerControl.xaml.cs @@ -111,13 +111,15 @@ private void OnSettingData(object sender, DataObjectSettingDataEventArgs e) DisplaySource(lineNumber, column); if (IsXml) + { ImportLinkHighlighter.Install(textEditor, sourceFilePath, navigationHelper); + } } protected override void OnKeyUp(KeyEventArgs e) { // Mark Ctrl+F handle to not steal focus from search panel - if (e.Key == Key.F && Keyboard.Modifiers == ModifierKeys.Control) + if (e.Key == Key.F && Keyboard.Modifiers == ModifierKeys.Control) { e.Handled = true; } @@ -203,6 +205,8 @@ void SetColor(string name, string hex) var foldingStrategy = new XmlFoldingStrategy(); foldingStrategy.UpdateFoldings(foldingManager, textEditor.Document); + + gotoProjectMenu.Visibility = Visibility.Visible; } else if (!looksLikeXml && IsXml) { @@ -259,7 +263,7 @@ void save_Click(object sender, RoutedEventArgs e) Title = "Save file as...", FileName = Path.GetFileName(filePath) }; - + var result = saveFileDialog.ShowDialog(Application.Current.MainWindow); if (result is true) @@ -312,5 +316,21 @@ private void copyMenu_Click(object sender, RoutedEventArgs e) { textEditor.Copy(); } + + private void gotoProjectFoldingMenu_Click(object sender, RoutedEventArgs e) + { + var selectionStart = textEditor.SelectionStart; + if (selectionStart > 0) + { + selectionStart--; + } + + var projFolding = foldingManager.GetFoldingsContaining(selectionStart)?.LastOrDefault(f => f.Title == ""); + if (projFolding != null) + { + textEditor.Select(projFolding.StartOffset, projFolding.Title.Length); + textEditor.ScrollTo(textEditor.Document.GetLineByOffset(projFolding.StartOffset).LineNumber, 0); + } + } } }