@@ -162,7 +162,20 @@ public MainViewModel()
162
162
switch ( args . PropertyName )
163
163
{
164
164
case nameof ( Results . SelectedItem ) :
165
- SelectedItem = Results . SelectedItem ;
165
+ _selectedItemFromQueryResults = true ;
166
+ PreviewSelectedItem = Results . SelectedItem ;
167
+ UpdatePreview ( ) ;
168
+ break ;
169
+ }
170
+ } ;
171
+
172
+ History . PropertyChanged += ( _ , args ) =>
173
+ {
174
+ switch ( args . PropertyName )
175
+ {
176
+ case nameof ( History . SelectedItem ) :
177
+ _selectedItemFromQueryResults = false ;
178
+ PreviewSelectedItem = History . SelectedItem ;
166
179
UpdatePreview ( ) ;
167
180
break ;
168
181
}
@@ -646,10 +659,12 @@ public void ChangeQueryText(string queryText, bool isReQuery = false)
646
659
647
660
private ResultsViewModel SelectedResults
648
661
{
649
- get { return _selectedResults ; }
662
+ get => _selectedResults ;
650
663
set
651
664
{
665
+ var isReturningFromQueryResults = SelectedIsFromQueryResults ( ) ;
652
666
var isReturningFromContextMenu = ContextMenuSelected ( ) ;
667
+ var isReturningFromHistory = HistorySelected ( ) ;
653
668
_selectedResults = value ;
654
669
if ( SelectedIsFromQueryResults ( ) )
655
670
{
@@ -670,12 +685,30 @@ private ResultsViewModel SelectedResults
670
685
{
671
686
ChangeQueryText ( _queryTextBeforeLeaveResults ) ;
672
687
}
688
+
689
+ // If we are returning from history and we have not set select item yet,
690
+ // we need to clear the preview selected item
691
+ if ( isReturningFromHistory && _selectedItemFromQueryResults . HasValue && ( ! _selectedItemFromQueryResults . Value ) )
692
+ {
693
+ PreviewSelectedItem = null ;
694
+ }
673
695
}
674
696
else
675
697
{
676
698
Results . Visibility = Visibility . Collapsed ;
699
+ History . Visibility = Visibility . Collapsed ;
677
700
_queryTextBeforeLeaveResults = QueryText ;
678
701
702
+ if ( HistorySelected ( ) )
703
+ {
704
+ // If we are returning from query results and we have not set select item yet,
705
+ // we need to clear the preview selected item
706
+ if ( isReturningFromQueryResults && _selectedItemFromQueryResults . HasValue && _selectedItemFromQueryResults . Value )
707
+ {
708
+ PreviewSelectedItem = null ;
709
+ }
710
+ }
711
+
679
712
// Because of Fody's optimization
680
713
// setter won't be called when property value is not changed.
681
714
// so we need manually call Query()
@@ -787,9 +820,11 @@ private static string VerifyOrSetDefaultHotkey(string hotkey, string defaultHotk
787
820
788
821
#region Preview
789
822
823
+ private bool ? _selectedItemFromQueryResults ;
824
+
790
825
private ResultViewModel _selectedItem ;
791
826
792
- public ResultViewModel SelectedItem
827
+ public ResultViewModel PreviewSelectedItem
793
828
{
794
829
get => _selectedItem ;
795
830
set
@@ -897,7 +932,7 @@ private static void SwitchExternalPreview(string path, bool sendFailToast = true
897
932
private void ShowInternalPreview ( )
898
933
{
899
934
ResultAreaColumn = ResultAreaColumnPreviewShown ;
900
- SelectedItem ? . LoadPreviewImage ( ) ;
935
+ PreviewSelectedItem ? . LoadPreviewImage ( ) ;
901
936
}
902
937
903
938
private void HideInternalPreview ( )
@@ -952,14 +987,14 @@ when CanExternalPreviewSelectedResult(out var path):
952
987
953
988
case false
954
989
when InternalPreviewVisible :
955
- SelectedItem ? . LoadPreviewImage ( ) ;
990
+ PreviewSelectedItem ? . LoadPreviewImage ( ) ;
956
991
break ;
957
992
}
958
993
}
959
994
960
995
private bool CanExternalPreviewSelectedResult ( out string path )
961
996
{
962
- path = SelectedItem ? . Result ? . Preview . FilePath ;
997
+ path = PreviewSelectedItem == Results . SelectedItem ? Results . SelectedItem ? . Result ? . Preview . FilePath : string . Empty ;
963
998
return ! string . IsNullOrEmpty ( path ) ;
964
999
}
965
1000
0 commit comments