From 2ba0a5395bcb4024701f869a899a8a198e95148d Mon Sep 17 00:00:00 2001 From: Kang Yu Date: Sat, 26 Apr 2025 15:25:31 -0700 Subject: [PATCH] move inherit killed window out of IsWindowMoved() to CaptureWindow() --- .../Common/PersistentWindowProcessor.cs | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs index e09d164..8c2b176 100644 --- a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs +++ b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs @@ -2696,7 +2696,18 @@ namespace PersistentWindows.Common if (new_window) { - monitorApplications[displayKey].Add(hWnd, new List()); + IntPtr kid = FindMatchingKilledWindow(hWnd); + bool restore_last = TryInheritWindow(hWnd, curDisplayMetrics.HWnd, kid, curDisplayMetrics); + if (restore_last && prevDisplayMetrics != null && !restoringFromDB && IsResizableWindow(hWnd)) + { + Log.Trace($"restore {windowTitle[hWnd]} to last captured position"); + restoringFromMem = true; + RestoreApplicationsOnCurrentDisplays(displayKey, hWnd, prevDisplayMetrics.CaptureTime); + restoringFromMem = false; + } + + if (kid == IntPtr.Zero) + monitorApplications[displayKey].Add(hWnd, new List()); } else { @@ -3239,9 +3250,6 @@ namespace PersistentWindows.Common if (noRestoreWindows.Contains(hwnd)) return false; - IntPtr kid = FindMatchingKilledWindow(hwnd); - bool restore_last = TryInheritWindow(hwnd, realHwnd, kid, curDisplayMetrics); - //newly created window or new display setting curDisplayMetrics.WindowId = (uint)realHwnd; @@ -3263,18 +3271,7 @@ namespace PersistentWindows.Common if (curDisplayMetrics.IsMinimized && prevDisplayMetrics != null && prevDisplayMetrics.IsMinimized) moved = false; else - { moved = true; - - if (restore_last && prevDisplayMetrics != null && !restoringFromDB && IsResizableWindow(hwnd)) - { - Log.Trace($"restore {windowTitle[hwnd]} to last captured position"); - restoringFromMem = true; - RestoreApplicationsOnCurrentDisplays(curDisplayKey, hwnd, prevDisplayMetrics.CaptureTime); - restoringFromMem = false; - return false; - } - } } else if (!monitorApplications[displayKey].ContainsKey(hwnd)) {