diff --git a/CHANGELOG.md b/CHANGELOG.md
index 974ba875..b3318ea7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,15 +10,17 @@ This project adheres to [Semantic Versioning](http://semver.org/).
## [1.12.0 / 5.67.0] - 2023-10-
### Added
-- added "get_cert SBIEX-XXXXX-XXXXX-XXXXX-XXXXX" command to UpdUtil.exe allowing to get a cert by serial using command line
-- added mechanism to revoke leaked or refunded certificates
- added mechanism to automatically set USB drives as forced folders
- added troubleshooting script for issue [#3318](https://github.com/sandboxie-plus/Sandboxie/issues/3318) with parental controls
- started german translation of the troubleshooting scripts ...\SandboxiePlus\SandMan\Troubleshooting\lang_de.json [#3293](https://github.com/sandboxie-plus/Sandboxie/issues/3293)
+- added "get_cert SBIEX-XXXXX-XXXXX-XXXXX-XXXXX" command to UpdUtil.exe allowing to get a cert by serial using command line
+- added mechanism to revoke leaked or refunded certificates
+- added new global hot key to bring sandman in fron as top most ALT+Break [#3320](https://github.com/sandboxie-plus/Sandboxie/issues/3320)
### Changed
- improved suspend process ahndling [#3375](https://github.com/sandboxie-plus/Sandboxie/issues/3375)
- improved handling of issue reports
+- updated reminder schedule
### Fixed
- fixed issue with auto updater not offering version updates
diff --git a/SandboxiePlus/SandMan/Forms/SettingsWindow.ui b/SandboxiePlus/SandMan/Forms/SettingsWindow.ui
index c6d1a4e5..9ed3a8c9 100644
--- a/SandboxiePlus/SandMan/Forms/SettingsWindow.ui
+++ b/SandboxiePlus/SandMan/Forms/SettingsWindow.ui
@@ -48,7 +48,7 @@
QTabWidget::North
- 2
+ 0
@@ -67,104 +67,6 @@
-
-
-
-
-
- Count and display the disk space occupied by each sandbox
-
-
-
- -
-
-
- Show file recovery window when emptying sandboxes
-
-
-
- -
-
-
-
- 75
- true
- true
-
-
-
- SandMan Options
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 75
- true
- true
-
-
-
- Recovery Options
-
-
-
- -
-
-
- Show the Recovery Window as Always on Top
-
-
-
- -
-
-
- Run box operations asynchronously whenever possible (like content deletion)
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
@@ -179,6 +81,22 @@
+ -
+
+
+
+ true
+ true
+
+
+
+ SandMan Options
+
+
+
+ -
+
+
-
@@ -189,6 +107,86 @@
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Count and display the disk space occupied by each sandbox
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Run box operations asynchronously whenever possible (like content deletion)
+
+
+
+ -
+
+
+ Show file recovery window when emptying sandboxes
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Show the Recovery Window as Always on Top
+
+
+
+ -
+
+
+
+ true
+ true
+
+
+
+ Recovery Options
+
+
+
-
@@ -199,6 +197,20 @@
+ -
+
+
-
+
+
+ Hotkey for bringing sandman to the top:
+
+
+
+ -
+
+
+
+
@@ -259,7 +271,6 @@
- 75
true
true
@@ -292,7 +303,6 @@
- 75
true
true
@@ -1669,7 +1679,6 @@
- 75
true
true
@@ -1901,7 +1910,6 @@ Unlike the preview channel, it does not include untested, potentially breaking,
- 75
true
true
@@ -2014,7 +2022,6 @@ Unlike the preview channel, it does not include untested, potentially breaking,
- 75
true
true
@@ -2106,7 +2113,6 @@ Unlike the preview channel, it does not include untested, potentially breaking,
- 75
true
true
@@ -2532,6 +2538,16 @@ Unlike the preview channel, it does not include untested, potentially breaking,
+ -
+
+
+ Edit ini
+
+
+ false
+
+
+
-
@@ -2545,16 +2561,6 @@ Unlike the preview channel, it does not include untested, potentially breaking,
- -
-
-
- Edit ini
-
-
- false
-
-
-
-
diff --git a/SandboxiePlus/SandMan/SandMan.cpp b/SandboxiePlus/SandMan/SandMan.cpp
index 7f1c39e9..f9ac25ab 100644
--- a/SandboxiePlus/SandMan/SandMan.cpp
+++ b/SandboxiePlus/SandMan/SandMan.cpp
@@ -2551,7 +2551,8 @@ void CSandMan::CheckSupport()
}
}
-#define HK_PANIC 1
+#define HK_PANIC 1
+#define HK_TOP 2
void CSandMan::SetupHotKeys()
{
@@ -2559,6 +2560,9 @@ void CSandMan::SetupHotKeys()
if (theConf->GetBool("Options/EnablePanicKey", false))
m_pHotkeyManager->registerHotkey(theConf->GetString("Options/PanicKeySequence", "Shift+Pause"), HK_PANIC);
+
+ if (theConf->GetBool("Options/EnableTopMostKey", false))
+ m_pHotkeyManager->registerHotkey(theConf->GetString("Options/PanicTopMostSequence", "Alt+Pause"), HK_TOP);
}
void CSandMan::OnHotKey(size_t id)
@@ -2568,6 +2572,25 @@ void CSandMan::OnHotKey(size_t id)
case HK_PANIC:
theAPI->TerminateAll();
break;
+
+ case HK_TOP:
+ if (this->isActiveWindow() && m_pWndTopMost->isCheckable()) {
+ m_pWndTopMost->setChecked(false);
+ OnAlwaysTop();
+ return;
+ }
+
+ if (!isVisible()) {
+ CheckSupport();
+ show();
+ }
+ m_pWndTopMost->setChecked(true);
+ OnAlwaysTop();
+ QTimer::singleShot(100, [this]() {
+ this->setWindowState((this->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
+ SetForegroundWindow(MainWndHandle);
+ } );
+ break;
}
}
diff --git a/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp b/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp
index 527ec9f2..4aa3da4a 100644
--- a/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp
+++ b/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp
@@ -295,6 +295,8 @@ CSettingsWindow::CSettingsWindow(QWidget* parent)
connect(ui.chkMonitorSize, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
connect(ui.chkPanic, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
connect(ui.keyPanic, SIGNAL(keySequenceChanged(const QKeySequence &)), this, SLOT(OnOptChanged()));
+ connect(ui.chkTop, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
+ connect(ui.keyTop, SIGNAL(keySequenceChanged(const QKeySequence &)), this, SLOT(OnOptChanged()));
connect(ui.chkAsyncBoxOps, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
connect(ui.chkSilentMode, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
@@ -909,6 +911,9 @@ void CSettingsWindow::LoadSettings()
ui.chkPanic->setChecked(theConf->GetBool("Options/EnablePanicKey", false));
ui.keyPanic->setKeySequence(QKeySequence(theConf->GetString("Options/PanicKeySequence", "Shift+Pause")));
+ ui.chkTop->setChecked(theConf->GetBool("Options/EnableTopMostKey", false));
+ ui.keyTop->setKeySequence(QKeySequence(theConf->GetString("Options/TopMostKeySequence", "Alt+Pause")));
+
ui.chkMonitorSize->setChecked(theConf->GetBool("Options/WatchBoxSize", false));
ui.chkWatchConfig->setChecked(theConf->GetBool("Options/WatchIni", true));
@@ -1502,6 +1507,9 @@ void CSettingsWindow::SaveSettings()
theConf->SetValue("Options/EnablePanicKey", ui.chkPanic->isChecked());
theConf->SetValue("Options/PanicKeySequence", ui.keyPanic->keySequence().toString());
+
+ theConf->SetValue("Options/EnableTopMostKey", ui.chkTop->isChecked());
+ theConf->SetValue("Options/TopMostKeySequence", ui.keyTop->keySequence().toString());
theConf->SetValue("Options/WatchBoxSize", ui.chkMonitorSize->isChecked());