Skip to content

Commit f1bcfc1

Browse files
committed
Support preview panel for history
1 parent 26ab2ae commit f1bcfc1

File tree

2 files changed

+43
-8
lines changed

2 files changed

+43
-8
lines changed

Flow.Launcher/MainWindow.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@
441441
<Border
442442
MinHeight="380"
443443
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
444-
DataContext="{Binding SelectedItem, Mode=OneWay}"
444+
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
445445
Visibility="{Binding ShowDefaultPreview}">
446446
<Grid
447447
Margin="0 0 10 5"
@@ -518,7 +518,7 @@
518518
MaxHeight="{Binding ElementName=ResultListBox, Path=ActualHeight}"
519519
Padding="0 0 10 10"
520520
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
521-
DataContext="{Binding SelectedItem, Mode=OneWay}"
521+
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
522522
Visibility="{Binding ShowCustomizedPreview}">
523523
<ContentControl Content="{Binding Result.PreviewPanel.Value}" />
524524
</Border>

Flow.Launcher/ViewModel/MainViewModel.cs

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,20 @@ public MainViewModel()
162162
switch (args.PropertyName)
163163
{
164164
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;
166179
UpdatePreview();
167180
break;
168181
}
@@ -646,10 +659,12 @@ public void ChangeQueryText(string queryText, bool isReQuery = false)
646659

647660
private ResultsViewModel SelectedResults
648661
{
649-
get { return _selectedResults; }
662+
get => _selectedResults;
650663
set
651664
{
665+
var isReturningFromQueryResults = SelectedIsFromQueryResults();
652666
var isReturningFromContextMenu = ContextMenuSelected();
667+
var isReturningFromHistory = HistorySelected();
653668
_selectedResults = value;
654669
if (SelectedIsFromQueryResults())
655670
{
@@ -670,12 +685,30 @@ private ResultsViewModel SelectedResults
670685
{
671686
ChangeQueryText(_queryTextBeforeLeaveResults);
672687
}
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+
}
673695
}
674696
else
675697
{
676698
Results.Visibility = Visibility.Collapsed;
699+
History.Visibility = Visibility.Collapsed;
677700
_queryTextBeforeLeaveResults = QueryText;
678701

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+
679712
// Because of Fody's optimization
680713
// setter won't be called when property value is not changed.
681714
// so we need manually call Query()
@@ -787,9 +820,11 @@ private static string VerifyOrSetDefaultHotkey(string hotkey, string defaultHotk
787820

788821
#region Preview
789822

823+
private bool? _selectedItemFromQueryResults;
824+
790825
private ResultViewModel _selectedItem;
791826

792-
public ResultViewModel SelectedItem
827+
public ResultViewModel PreviewSelectedItem
793828
{
794829
get => _selectedItem;
795830
set
@@ -897,7 +932,7 @@ private static void SwitchExternalPreview(string path, bool sendFailToast = true
897932
private void ShowInternalPreview()
898933
{
899934
ResultAreaColumn = ResultAreaColumnPreviewShown;
900-
SelectedItem?.LoadPreviewImage();
935+
PreviewSelectedItem?.LoadPreviewImage();
901936
}
902937

903938
private void HideInternalPreview()
@@ -952,14 +987,14 @@ when CanExternalPreviewSelectedResult(out var path):
952987

953988
case false
954989
when InternalPreviewVisible:
955-
SelectedItem?.LoadPreviewImage();
990+
PreviewSelectedItem?.LoadPreviewImage();
956991
break;
957992
}
958993
}
959994

960995
private bool CanExternalPreviewSelectedResult(out string path)
961996
{
962-
path = SelectedItem?.Result?.Preview.FilePath;
997+
path = PreviewSelectedItem == Results.SelectedItem ? Results.SelectedItem?.Result?.Preview.FilePath : string.Empty;
963998
return !string.IsNullOrEmpty(path);
964999
}
9651000

0 commit comments

Comments
 (0)