From 5c02a8c9cf9fa5602957c2c3bdc86ae160430c46 Mon Sep 17 00:00:00 2001 From: Paddy Xu Date: Sat, 20 Jan 2018 16:42:07 +0200 Subject: [PATCH] Fix #162: switch preview when calling from command-line --- QuickLook/App.xaml.cs | 2 +- QuickLook/Helpers/Updater.cs | 1 + QuickLook/PipeServerManager.cs | 6 ++++++ QuickLook/ViewWindowManager.cs | 4 +++- QuickLook/ViewerWindow.Properties.cs | 3 ++- QuickLook/ViewerWindow.xaml.cs | 4 +--- 6 files changed, 14 insertions(+), 6 deletions(-) diff --git a/QuickLook/App.xaml.cs b/QuickLook/App.xaml.cs index 45b92c4..53ae50a 100644 --- a/QuickLook/App.xaml.cs +++ b/QuickLook/App.xaml.cs @@ -134,7 +134,7 @@ namespace QuickLook private void RemoteCallShowPreview(StartupEventArgs e) { - PipeServerManager.SendMessage(PipeMessages.Toggle, e.Args.First()); + PipeServerManager.SendMessage(PipeMessages.Invoke, e.Args.First()); } private void RunListener(StartupEventArgs e) diff --git a/QuickLook/Helpers/Updater.cs b/QuickLook/Helpers/Updater.cs index f9e287d..d5758e1 100644 --- a/QuickLook/Helpers/Updater.cs +++ b/QuickLook/Helpers/Updater.cs @@ -95,6 +95,7 @@ namespace QuickLook.Helpers File.WriteAllText(changeLogPath, notes); PipeServerManager.SendMessage(PipeMessages.Invoke, changeLogPath); + PipeServerManager.SendMessage(PipeMessages.Forget); } catch (Exception e) { diff --git a/QuickLook/PipeServerManager.cs b/QuickLook/PipeServerManager.cs index 2e1c98c..15a3933 100644 --- a/QuickLook/PipeServerManager.cs +++ b/QuickLook/PipeServerManager.cs @@ -31,6 +31,7 @@ namespace QuickLook public const string Switch = "QuickLook.App.PipeMessages.Switch"; public const string Invoke = "QuickLook.App.PipeMessages.Invoke"; public const string Toggle = "QuickLook.App.PipeMessages.Toggle"; + public const string Forget = "QuickLook.App.PipeMessages.Forget"; public const string Close = "QuickLook.App.PipeMessages.Close"; public const string Quit = "QuickLook.App.PipeMessages.Quit"; } @@ -134,6 +135,11 @@ namespace QuickLook new Action(() => ViewWindowManager.GetInstance().TogglePreview(lParam)), DispatcherPriority.ApplicationIdle); return false; + case PipeMessages.Forget: + Application.Current.Dispatcher.BeginInvoke( + new Action(() => ViewWindowManager.GetInstance().ForgetCurrentWindow()), + DispatcherPriority.ApplicationIdle); + return false; case PipeMessages.Close: Application.Current.Dispatcher.BeginInvoke( new Action(() => ViewWindowManager.GetInstance().ClosePreview()), diff --git a/QuickLook/ViewWindowManager.cs b/QuickLook/ViewWindowManager.cs index 992ee4b..30ffb45 100644 --- a/QuickLook/ViewWindowManager.cs +++ b/QuickLook/ViewWindowManager.cs @@ -75,7 +75,7 @@ namespace QuickLook public void TogglePreview(string path) { - if (_viewerWindow.Visibility == Visibility.Visible) + if (_viewerWindow.Visibility == Visibility.Visible && path == _invokedPath) ClosePreview(); else InvokePreview(path); @@ -95,6 +95,8 @@ namespace QuickLook { StopFocusMonitor(); + _viewerWindow.Pinned = true; + var newWindow = new ViewerWindow { Top = _viewerWindow.Top, diff --git a/QuickLook/ViewerWindow.Properties.cs b/QuickLook/ViewerWindow.Properties.cs index 537af3a..e1d2228 100644 --- a/QuickLook/ViewerWindow.Properties.cs +++ b/QuickLook/ViewerWindow.Properties.cs @@ -32,12 +32,13 @@ namespace QuickLook }; private bool _canOldPluginResize; private bool _pinned; - private bool Pinned + internal bool Pinned { get => _pinned; set { _pinned = value; + buttonPin.Tag = "Pin"; OnPropertyChanged(); } } diff --git a/QuickLook/ViewerWindow.xaml.cs b/QuickLook/ViewerWindow.xaml.cs index b3bced7..060c656 100644 --- a/QuickLook/ViewerWindow.xaml.cs +++ b/QuickLook/ViewerWindow.xaml.cs @@ -59,9 +59,7 @@ namespace QuickLook { if (Pinned) return; - - Pinned = true; - buttonPin.Tag = "Pin"; + ViewWindowManager.GetInstance().ForgetCurrentWindow(); };