@@ -94,8 +94,7 @@ private void Settings_PropertyChanged(object sender, PropertyChangedEventArgs e)
94
94
case nameof ( SessionSettings . Theme ) :
95
95
// update syntax highlighting and force reload (AvalonEdit does not automatically refresh on highlighting change)
96
96
DecompilerTextView . RegisterHighlighting ( ) ;
97
- DecompileSelectedNodes (
98
- DockWorkspace . Instance . ActiveTabPage . GetState ( ) as DecompilerTextViewState ) ;
97
+ DecompileSelectedNodes ( DockWorkspace . Instance . ActiveTabPage . GetState ( ) as DecompilerTextViewState ) ;
99
98
break ;
100
99
case nameof ( SessionSettings . CurrentCulture ) :
101
100
MessageBox . Show ( Properties . Resources . SettingsChangeRestartRequired , "ILSpy" ) ;
@@ -107,7 +106,7 @@ private void Settings_PropertyChanged(object sender, PropertyChangedEventArgs e)
107
106
switch ( e . PropertyName )
108
107
{
109
108
case nameof ( LanguageSettings . Language ) or nameof ( LanguageSettings . LanguageVersion ) :
110
- DecompileSelectedNodes ( recordHistory : false ) ;
109
+ DecompileSelectedNodes ( ) ;
111
110
break ;
112
111
}
113
112
}
@@ -692,7 +691,20 @@ void TreeView_SelectionChanged()
692
691
{
693
692
if ( SelectedItems . Count > 0 )
694
693
{
695
- var delayDecompilationRequestDueToContextMenu = Mouse . RightButton == MouseButtonState . Pressed ;
694
+ bool isRightButtonPressed = Mouse . RightButton == MouseButtonState . Pressed ;
695
+ bool isLeftButtonPressed = Mouse . LeftButton == MouseButtonState . Pressed ;
696
+
697
+ if ( isLeftButtonPressed || isRightButtonPressed )
698
+ {
699
+ // record history only if change is initiated by user
700
+ var activeTabPage = DockWorkspace . Instance . ActiveTabPage ;
701
+ var currentState = activeTabPage . GetState ( ) ;
702
+ if ( currentState != null )
703
+ history . UpdateCurrent ( new NavigationState ( activeTabPage , currentState ) ) ;
704
+ history . Record ( new NavigationState ( activeTabPage , SelectedItems ) ) ;
705
+ }
706
+
707
+ var delayDecompilationRequestDueToContextMenu = isRightButtonPressed ;
696
708
697
709
if ( ! delayDecompilationRequestDueToContextMenu )
698
710
{
@@ -721,18 +733,10 @@ void ContextMenuClosed(object sender, EventArgs e)
721
733
}
722
734
}
723
735
724
- public void DecompileSelectedNodes ( DecompilerTextViewState newState = null , bool recordHistory = true )
736
+ private void DecompileSelectedNodes ( DecompilerTextViewState newState = null )
725
737
{
726
738
var activeTabPage = DockWorkspace . Instance . ActiveTabPage ;
727
739
728
- if ( recordHistory )
729
- {
730
- var currentState = activeTabPage . GetState ( ) ;
731
- if ( currentState != null )
732
- history . UpdateCurrent ( new NavigationState ( activeTabPage , currentState ) ) ;
733
- history . Record ( new NavigationState ( activeTabPage , SelectedItems ) ) ;
734
- }
735
-
736
740
activeTabPage . SupportsLanguageSwitching = true ;
737
741
738
742
if ( SelectedItems . Count == 1 )
@@ -742,7 +746,7 @@ public void DecompileSelectedNodes(DecompilerTextViewState newState = null, bool
742
746
}
743
747
if ( newState ? . ViewedUri != null )
744
748
{
745
- MainWindow . Instance . AssemblyTreeModel . NavigateTo ( new ( newState . ViewedUri , null ) , recordHistory : false ) ;
749
+ NavigateTo ( new ( newState . ViewedUri , null ) , recordHistory : false ) ;
746
750
return ;
747
751
}
748
752
@@ -779,7 +783,6 @@ public void NavigateHistory(bool forward)
779
783
DockWorkspace . Instance . ActiveTabPage = newState . TabPage ;
780
784
781
785
SelectNodes ( newState . TreeNodes ) ;
782
- DecompileSelectedNodes ( newState . ViewState as DecompilerTextViewState , false ) ;
783
786
}
784
787
785
788
public bool CanNavigateBack => history . CanNavigateBack ;
@@ -802,6 +805,7 @@ internal void NavigateTo(RequestNavigateEventArgs e, bool recordHistory = true,
802
805
e . Handled = true ;
803
806
return ;
804
807
}
808
+
805
809
AvalonEditTextOutput output = new AvalonEditTextOutput {
806
810
Address = e . Uri ,
807
811
Title = e . Uri . AbsolutePath ,
0 commit comments