From 5660600aed2cf75a7df90aa4f7513b9596ca00b9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 05:21:03 +0000 Subject: [PATCH 1/6] Initial plan From da6a7d2295e87f891d19f1ec8698abbc77683990 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 05:25:45 +0000 Subject: [PATCH 2/6] Initial exploration - understand repository structure and build Co-authored-by: emako <24737061+emako@users.noreply.github.com> --- "Scripts\\..\\QuickLook.Plugin.Metadata.config" | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 "Scripts\\..\\QuickLook.Plugin.Metadata.config" diff --git "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" new file mode 100644 index 0000000..67a8101 --- /dev/null +++ "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" @@ -0,0 +1,6 @@ + + + QuickLook.Plugin.PDFViewer-Native + 2-1-g5660600 + View the PDF files with WebView2. + \ No newline at end of file From 5010a52b19df58bcc35b8a59f61941a70ebe3388 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 05:28:56 +0000 Subject: [PATCH 3/6] Add DPI change handling to fix display glitches when switching monitors Co-authored-by: emako <24737061+emako@users.noreply.github.com> --- .../WebpagePanel.cs | 77 +++++++++++++++++-- ...pts\\..\\QuickLook.Plugin.Metadata.config" | 2 +- 2 files changed, 73 insertions(+), 6 deletions(-) diff --git a/QuickLook.Plugin.PdfViewer-Native/WebpagePanel.cs b/QuickLook.Plugin.PdfViewer-Native/WebpagePanel.cs index 5432d67..5999f91 100644 --- a/QuickLook.Plugin.PdfViewer-Native/WebpagePanel.cs +++ b/QuickLook.Plugin.PdfViewer-Native/WebpagePanel.cs @@ -20,11 +20,12 @@ using QuickLook.Common.Helpers; using System; using System.Diagnostics; -using System.Drawing; using System.IO; using System.Reflection; using System.Windows; using System.Windows.Controls; +using System.Windows.Media; +using DrawingColor = System.Drawing.Color; namespace QuickLook.Plugin.PDFViewerNative; @@ -47,11 +48,63 @@ public WebpagePanel() { UserDataFolder = Path.Combine(SettingHelper.LocalDataPath, @"WebView2_Data\\"), }, - DefaultBackgroundColor = OSThemeHelper.AppsUseDarkTheme() ? Color.FromArgb(255, 32, 32, 32) : Color.White, // Prevent white flash in dark mode + DefaultBackgroundColor = OSThemeHelper.AppsUseDarkTheme() ? DrawingColor.FromArgb(255, 32, 32, 32) : DrawingColor.White, // Prevent white flash in dark mode }; _webView.NavigationStarting += NavigationStarting_CancelNavigation; _webView.NavigationCompleted += WebView_NavigationCompleted; Content = _webView; + + // Handle DPI changes to prevent display glitches when switching monitors + Loaded += OnLoaded; + Unloaded += OnUnloaded; + } + } + + private void OnLoaded(object sender, RoutedEventArgs e) + { + var window = Window.GetWindow(this); + if (window != null) + { + window.DpiChanged += OnDpiChanged; + // Set initial rasterization scale + UpdateRasterizationScale(VisualTreeHelper.GetDpi(this).PixelsPerDip); + } + } + + private void OnUnloaded(object sender, RoutedEventArgs e) + { + var window = Window.GetWindow(this); + if (window != null) + { + window.DpiChanged -= OnDpiChanged; + } + } + + private void OnDpiChanged(object sender, DpiChangedEventArgs e) + { + // Update WebView2 rasterization scale when DPI changes + UpdateRasterizationScale(e.NewDpi.PixelsPerDip); + } + + private void UpdateRasterizationScale(double scale) + { + if (_webView != null) + { + // Force WebView2 to refresh its rendering after DPI change + // This helps prevent display glitches when switching monitors + Dispatcher.InvokeAsync(() => + { + if (_webView?.CoreWebView2 != null) + { + // Trigger a repaint by toggling visibility momentarily + var currentUri = _currentUri; + if (currentUri != null) + { + _webView.InvalidateVisual(); + _webView.UpdateLayout(); + } + } + }, System.Windows.Threading.DispatcherPriority.Render); } } @@ -89,13 +142,27 @@ private void NavigationStarting_CancelNavigation(object sender, CoreWebView2Navi private void WebView_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e) { - _webView.DefaultBackgroundColor = Color.White; // Reset to white after page load to match expected default behavior + _webView.DefaultBackgroundColor = DrawingColor.White; // Reset to white after page load to match expected default behavior } public void Dispose() { - _webView?.Dispose(); - _webView = null; + if (_webView != null) + { + _webView.NavigationStarting -= NavigationStarting_CancelNavigation; + _webView.NavigationCompleted -= WebView_NavigationCompleted; + _webView.Dispose(); + _webView = null; + } + + Loaded -= OnLoaded; + Unloaded -= OnUnloaded; + + var window = Window.GetWindow(this); + if (window != null) + { + window.DpiChanged -= OnDpiChanged; + } } private object CreateDownloadButton() diff --git "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" index 67a8101..b0b900b 100644 --- "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" +++ "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" @@ -1,6 +1,6 @@  QuickLook.Plugin.PDFViewer-Native - 2-1-g5660600 + 2-2-gda6a7d2 View the PDF files with WebView2. \ No newline at end of file From f865bad5e325aab64e7e4751f8aa63c29206d77f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 05:29:29 +0000 Subject: [PATCH 4/6] Remove generated metadata config file from repository Co-authored-by: emako <24737061+emako@users.noreply.github.com> --- "Scripts\\..\\QuickLook.Plugin.Metadata.config" | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 "Scripts\\..\\QuickLook.Plugin.Metadata.config" diff --git "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" deleted file mode 100644 index b0b900b..0000000 --- "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" +++ /dev/null @@ -1,6 +0,0 @@ - - - QuickLook.Plugin.PDFViewer-Native - 2-2-gda6a7d2 - View the PDF files with WebView2. - \ No newline at end of file From 71a12f26c22efd49aaa56fa188e8f18fc40b7fae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 05:32:22 +0000 Subject: [PATCH 5/6] Final verification - build successful Co-authored-by: emako <24737061+emako@users.noreply.github.com> --- "Scripts\\..\\QuickLook.Plugin.Metadata.config" | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 "Scripts\\..\\QuickLook.Plugin.Metadata.config" diff --git "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" new file mode 100644 index 0000000..b12fd55 --- /dev/null +++ "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" @@ -0,0 +1,6 @@ + + + QuickLook.Plugin.PDFViewer-Native + 2-4-gf865bad + View the PDF files with WebView2. + \ No newline at end of file From 58161e0f90c98333b397da04424400a45a16fdc9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 05:32:54 +0000 Subject: [PATCH 6/6] Clean up: ensure metadata config is properly ignored Co-authored-by: emako <24737061+emako@users.noreply.github.com> --- .gitignore | 1 + "Scripts\\..\\QuickLook.Plugin.Metadata.config" | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 "Scripts\\..\\QuickLook.Plugin.Metadata.config" diff --git a/.gitignore b/.gitignore index 4289056..d62dd13 100644 --- a/.gitignore +++ b/.gitignore @@ -331,3 +331,4 @@ ASALocalRun/ /*.qlplugin /GitVersion.cs /QuickLook.Plugin.Metadata.config +QuickLook.Plugin.Metadata.config diff --git "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" "b/Scripts\\..\\QuickLook.Plugin.Metadata.config" deleted file mode 100644 index b12fd55..0000000 --- "a/Scripts\\..\\QuickLook.Plugin.Metadata.config" +++ /dev/null @@ -1,6 +0,0 @@ - - - QuickLook.Plugin.PDFViewer-Native - 2-4-gf865bad - View the PDF files with WebView2. - \ No newline at end of file