From 1fd82f35c8abd3f624d468bda7dcaee97a7999a5 Mon Sep 17 00:00:00 2001 From: Kang Yu Date: Thu, 1 May 2025 15:42:07 -0700 Subject: [PATCH] avoid trigger batch restore in restore single window mode --- .../Common/PersistentWindowProcessor.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs index 196105f..baf2f32 100644 --- a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs +++ b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs @@ -106,6 +106,7 @@ namespace PersistentWindows.Common private Timer restoreTimer; private Timer restoreFinishedTimer; public bool restoringFromMem = false; // automatic restore from memory or snapshot + private bool restoreSingleWindow = false; public bool restoringFromDB = false; // manual restore from DB public bool autoInitialRestoreFromDB = false; public bool restoringSnapshot = false; // implies restoringFromMem @@ -2113,7 +2114,7 @@ namespace PersistentWindows.Common if (eventType == User32Events.EVENT_OBJECT_LOCATIONCHANGE) { - if ((remoteSession || restoreTimes >= MinRestoreTimes) && !restoringSnapshot) + if (((remoteSession && !restoreSingleWindow) || restoreTimes >= MinRestoreTimes) && !restoringSnapshot) { // restore is not finished as long as window location keeps changing CancelRestoreFinishedTimer(); @@ -3214,8 +3215,10 @@ namespace PersistentWindows.Common if (!restoringFromDB && IsResizableWindow(hwnd)) { Log.Trace($"restore {windowTitle[hwnd]} to last captured position"); + restoreSingleWindow = true; restoringFromMem = true; RestoreApplicationsOnCurrentDisplays(curDisplayKey, hwnd, prevDisplayMetrics.CaptureTime); + restoreSingleWindow = false; restoringFromMem = false; userMove = true; StartCaptureTimer(UserMoveLatency / 2);