From 3b51f41f08e863b7e6016f402b1e459a1e617289 Mon Sep 17 00:00:00 2001 From: Kang Yu Date: Sun, 21 Apr 2024 23:10:03 -0700 Subject: [PATCH] #312, Ctrl + Shift + RestoreFromDisk to auto skip missing window --- .../Common/PersistentWindowProcessor.cs | 2 +- .../SystrayShell/Program.cs | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs index e3ae903..5330006 100644 --- a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs +++ b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs @@ -94,7 +94,7 @@ namespace PersistentWindows.Common private Timer restoreFinishedTimer; public bool restoringFromMem = false; // automatic restore from memory or snapshot public bool restoringFromDB = false; // manual restore from DB - private bool autoInitialRestoreFromDB = false; + public bool autoInitialRestoreFromDB = false; public bool restoringSnapshot = false; // implies restoringFromMem public bool showDesktop = false; // show desktop when display changes public int fixZorder = 1; // 1 means restore z-order only for snapshot; 2 means restore z-order for all; 0 means no z-order restore at all diff --git a/Ninjacrab.PersistentWindows.Solution/SystrayShell/Program.cs b/Ninjacrab.PersistentWindows.Solution/SystrayShell/Program.cs index 8136e73..3375ff3 100644 --- a/Ninjacrab.PersistentWindows.Solution/SystrayShell/Program.cs +++ b/Ninjacrab.PersistentWindows.Solution/SystrayShell/Program.cs @@ -595,7 +595,9 @@ namespace PersistentWindows.SystrayShell static public void RestoreFromDisk(bool ask_dialog) { - if (ask_dialog || (User32.GetKeyState(0x10) & 0x8000) != 0) //shift key pressed + bool ctrl_key_pressed = (User32.GetKeyState(0x11) & 0x8000) != 0; + bool shift_key_pressed = (User32.GetKeyState(0x10) & 0x8000) != 0; + if (ask_dialog || (shift_key_pressed && !ctrl_key_pressed)) { var listCollection = pwp.GetDbCollections(); var dlg = new DbKeySelect(); @@ -615,18 +617,23 @@ namespace PersistentWindows.SystrayShell else { pwp.dbDisplayKey = pwp.GetDisplayKey(); - if ((User32.GetKeyState(0x11) & 0x8000) != 0) //ctrl key pressed + if (ctrl_key_pressed) { - var name = EnterDbEntryName(); - if (String.IsNullOrEmpty(name)) - return; + if (shift_key_pressed) + pwp.autoInitialRestoreFromDB = true; + else + { + var name = EnterDbEntryName(); + if (String.IsNullOrEmpty(name)) + return; - pwp.dbDisplayKey += name; + pwp.dbDisplayKey += name; + } } } pwp.restoringFromDB = true; - pwp.StartRestoreTimer(milliSecond : 2000 /*wait mouse settle still for taskbar restore*/); + pwp.StartRestoreTimer(milliSecond : 1000 /*wait mouse settle still for taskbar restore*/); } static public void RestoreSnapshot(int id)