diff --git a/SandboxiePlus/SandMan/Forms/SettingsWindow.ui b/SandboxiePlus/SandMan/Forms/SettingsWindow.ui
index 9f427445..c3ccccb5 100644
--- a/SandboxiePlus/SandMan/Forms/SettingsWindow.ui
+++ b/SandboxiePlus/SandMan/Forms/SettingsWindow.ui
@@ -6,7 +6,7 @@
0
0
- 627
+ 695
508
@@ -64,169 +64,181 @@
General Options
-
+
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
+
+
+
+ 75
+ true
+ true
+
+
+
+ SandMan Options
+
+
+
+ -
+
+
+ UI Language:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ -
+
+
+ Open urls from this ui sandboxed
+
+
+ true
+
+
+
+ -
+
+
+ Count and display the disk space occupied by each sandbox
+
+
+
+ -
+
+
-
+
- UI Language:
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+ Hotkey for terminating all boxed processes:
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- Show file recovery window when emptying sandboxes
-
-
-
- -
-
-
- Count and display the disk space occupied by each sandbox
-
-
-
- -
-
-
- Open urls from this ui sandboxed
-
-
- true
-
-
-
- -
-
-
-
- true
- true
-
-
-
- SandMan Options
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- Show the Recovery Window as Always on Top
-
-
-
- -
-
-
-
- true
- true
-
-
-
- Recovery Options
-
-
-
- -
-
-
-
-
-
- Hotkey for bringing sandman to the top:
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Hotkey for terminating all boxed processes:
-
-
-
- -
-
-
-
-
- -
-
-
- Run box operations asynchronously whenever possible (like content deletion)
-
-
-
- -
-
-
-
-
-
- Hotkey for suspending process/folder forcing:
-
-
-
- -
-
-
-
+ -
+
+ -
+
+
-
+
+
+ Hotkey for bringing sandman to the top:
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ Hotkey for suspending process/folder forcing:
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ Hotkey for suspending all process
+
+
+
+ -
+
+
+
+
+ -
+
+
+ Run box operations asynchronously whenever possible (like content deletion)
+
+
+
+ -
+
+
+
+ 75
+ true
+ true
+
+
+
+ Recovery Options
+
+
+
+ -
+
+
+ Show file recovery window when emptying sandboxes
+
+
+
+ -
+
+
+ Show the Recovery Window as Always on Top
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 84
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 195
+ 20
+
+
+
+
@@ -285,6 +297,7 @@
+ 75
true
true
@@ -317,6 +330,7 @@
+ 75
true
true
@@ -468,6 +482,7 @@
+ 75
true
true
@@ -504,6 +519,7 @@
+ 75
true
true
@@ -543,6 +559,7 @@
+ 75
true
true
@@ -652,6 +669,7 @@
+ 75
true
true
@@ -924,6 +942,7 @@
+ 75
true
true
@@ -1122,6 +1141,7 @@
+ 75
true
true
@@ -1158,6 +1178,7 @@
+ 75
true
true
@@ -1422,6 +1443,7 @@
+ 75
true
true
@@ -1506,6 +1528,7 @@
+ 75
true
true
@@ -1693,6 +1716,7 @@
+ 75
true
true
@@ -1931,6 +1955,7 @@ Unlike the preview channel, it does not include untested, potentially breaking,
+ 75
true
true
@@ -2043,6 +2068,7 @@ Unlike the preview channel, it does not include untested, potentially breaking,
+ 75
true
true
@@ -2134,6 +2160,7 @@ Unlike the preview channel, it does not include untested, potentially breaking,
+ 75
true
true
diff --git a/SandboxiePlus/SandMan/SandMan.cpp b/SandboxiePlus/SandMan/SandMan.cpp
index b50ca10c..985204ea 100644
--- a/SandboxiePlus/SandMan/SandMan.cpp
+++ b/SandboxiePlus/SandMan/SandMan.cpp
@@ -2621,6 +2621,7 @@ void CSandMan::CheckSupport()
#define HK_PANIC 1
#define HK_TOP 2
#define HK_FORCE 3
+#define HK_SUSPEND 4
void CSandMan::SetupHotKeys()
{
@@ -2634,6 +2635,8 @@ void CSandMan::SetupHotKeys()
if (theConf->GetBool("Options/EnablePauseForceKey", false))
m_pHotkeyManager->registerHotkey(theConf->GetString("Options/PauseForceKeySequence", "Ctrl+Alt+F"), HK_FORCE);
+ if (theConf->GetBool("Options/EnableSuspendKey", false))
+ m_pHotkeyManager->registerHotkey(theConf->GetString("Options/SuspendKeySequence", "Ctrl+Pause"), HK_SUSPEND);
}
void CSandMan::OnHotKey(size_t id)
@@ -2654,6 +2657,15 @@ void CSandMan::OnHotKey(size_t id)
break;
}
+ case HK_SUSPEND:
+ {
+
+ for (auto each : theAPI->GetAllBoxes()) {
+ each->SetSuspendedAll(TRUE);
+ };
+ break;
+ }
+
case HK_TOP:
if (this->isActiveWindow() && m_bOnTop)
m_bOnTop = false;
diff --git a/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp b/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp
index ac21302e..50591066 100644
--- a/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp
+++ b/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp
@@ -298,6 +298,8 @@ CSettingsWindow::CSettingsWindow(QWidget* parent)
connect(ui.keyTop, SIGNAL(keySequenceChanged(const QKeySequence &)), this, SLOT(OnOptChanged()));
connect(ui.chkPauseForce, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
connect(ui.keyPauseForce, SIGNAL(keySequenceChanged(const QKeySequence &)), this, SLOT(OnOptChanged()));
+ connect(ui.chkSuspend, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
+ connect(ui.keySuspend, 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()));
@@ -919,6 +921,9 @@ void CSettingsWindow::LoadSettings()
ui.chkPauseForce->setChecked(theConf->GetBool("Options/EnablePauseForceKey", false));
ui.keyPauseForce->setKeySequence(QKeySequence(theConf->GetString("Options/PauseForceKeySequence", "Ctrl+Alt+F")));
+ ui.chkSuspend->setChecked(theConf->GetBool("Options/EnableSuspendKey", false));
+ ui.keySuspend->setKeySequence(QKeySequence(theConf->GetString("Options/SuspendKeySequence", "Ctrl+Pause")));
+
ui.chkMonitorSize->setChecked(theConf->GetBool("Options/WatchBoxSize", false));
ui.chkWatchConfig->setChecked(theConf->GetBool("Options/WatchIni", true));
@@ -1549,7 +1554,10 @@ void CSettingsWindow::SaveSettings()
theConf->SetValue("Options/EnablePauseForceKey", ui.chkPauseForce->isChecked());
theConf->SetValue("Options/PauseForceKeySequence", ui.keyPauseForce->keySequence().toString());
-
+
+ theConf->SetValue("Options/EnableSuspendKey", ui.chkSuspend->isChecked());
+ theConf->SetValue("Options/SuspendKeySequence", ui.keySuspend->keySequence().toString());
+
theConf->SetValue("Options/WatchBoxSize", ui.chkMonitorSize->isChecked());
theConf->SetValue("Options/WatchIni", ui.chkWatchConfig->isChecked());