This commit is contained in:
DavidXanatos 2023-10-21 22:15:07 +02:00
parent d5d588550a
commit 10e017af2f
11 changed files with 39 additions and 32 deletions

View File

@ -172,6 +172,7 @@ CSandMan::CSandMan(QWidget *parent)
QMessageBox::critical(this, "Sandboxie-Plus", tr("WARNING: Sandboxie-Plus.ini in %1 cannot be written to, settings will not be saved.").arg(theConf->GetConfigDir()));
}
m_bOnTop = false;
m_bExit = false;
m_ImDiskReady = true;
@ -1358,6 +1359,12 @@ void CSandMan::changeEvent(QEvent* e)
{
if (isMinimized())
{
if (m_bOnTop) {
m_bOnTop = false;
this->setWindowFlag(Qt::WindowStaysOnTopHint, m_bOnTop);
SafeShow(this);
}
if (m_pTrayIcon->isVisible() && theConf->GetBool("Options/MinimizeToTray", false))
{
StoreState();
@ -2574,22 +2581,18 @@ void CSandMan::OnHotKey(size_t id)
break;
case HK_TOP:
if (this->isActiveWindow() && m_pWndTopMost->isCheckable()) {
m_pWndTopMost->setChecked(false);
OnAlwaysTop();
return;
if (this->isActiveWindow() && m_bOnTop)
m_bOnTop = false;
else {
m_bOnTop = true;
QTimer::singleShot(100, [this]() {
this->setWindowState((this->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
SetForegroundWindow(MainWndHandle);
});
}
if (!isVisible()) {
CheckSupport();
show();
}
m_pWndTopMost->setChecked(true);
OnAlwaysTop();
QTimer::singleShot(100, [this]() {
this->setWindowState((this->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
SetForegroundWindow(MainWndHandle);
} );
this->setWindowFlag(Qt::WindowStaysOnTopHint, m_bOnTop);
SafeShow(this);
break;
}
}
@ -3308,6 +3311,8 @@ void CSandMan::OnViewMode(QAction* pAction)
void CSandMan::OnAlwaysTop()
{
m_bOnTop = false;
StoreState();
bool bAlwaysOnTop = m_pWndTopMost->isChecked();
theConf->SetValue("Options/AlwaysOnTop", bAlwaysOnTop);
@ -3319,6 +3324,11 @@ void CSandMan::OnAlwaysTop()
m_pProgressDialog->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
}
bool CSandMan::IsAlwaysOnTop() const
{
return m_bOnTop || theConf->GetBool("Options/AlwaysOnTop", false);
}
void CSandMan::OnRefresh()
{
if (!theAPI->IsConnected())

View File

@ -107,6 +107,8 @@ public:
bool CheckCertificate(QWidget* pWidget, bool bAdvanced = false);
bool IsAlwaysOnTop() const;
void UpdateTheme();
void UpdateTitleTheme(const HWND& hwnd);
@ -460,6 +462,8 @@ private:
bool m_bIconSun;
int m_iDeletingContent;
bool m_bOnTop;
bool m_bExit;
CProgressDialog* m_pProgressDialog;

View File

@ -9,7 +9,7 @@ void CSandMan::OnFileToRecover(const QString& BoxName, const QString& FilePath,
{
CRecoveryWindow* pWnd = ShowRecovery(pBox, false);
//if (!theConf->GetBool("Options/AlwaysOnTop", false)) {
//if (!theGUI->IsAlwaysOnTop()) {
// SetWindowPos((HWND)pWnd->winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
// QTimer::singleShot(100, this, [pWnd]() {
// SetWindowPos((HWND)pWnd->winId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
@ -356,8 +356,7 @@ void CRecoveryLogWnd::OnDblClick(QTreeWidgetItem* pItem)
void CSandMan::OnRecoveryLog()
{
if (!m_pRecoveryLogWnd->isVisible()) {
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
m_pRecoveryLogWnd->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
m_pRecoveryLogWnd->setWindowFlag(Qt::WindowStaysOnTopHint, theGUI->IsAlwaysOnTop());
SafeShow(m_pRecoveryLogWnd);
}
}

View File

@ -390,8 +390,7 @@ CFileBrowserWindow::CFileBrowserWindow(const CSandBoxPtr& pBox, QWidget *parent)
//flags &= ~Qt::WindowCloseButtonHint;
setWindowFlags(flags);
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
this->setWindowFlag(Qt::WindowStaysOnTopHint, theGUI->IsAlwaysOnTop());
m_pMainLayout = new QGridLayout(this);
m_FileView = new CFileView();

View File

@ -800,8 +800,7 @@ CTraceWindow::CTraceWindow(QWidget *parent)
this->setWindowTitle(tr("Sandboxie-Plus - Trace Monitor"));
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
this->setWindowFlag(Qt::WindowStaysOnTopHint, theGUI->IsAlwaysOnTop());
QGridLayout* pLayout = new QGridLayout();
pLayout->setContentsMargins(3,3,3,3);

View File

@ -176,8 +176,7 @@ COptionsWindow::COptionsWindow(const QSharedPointer<CSbieIni>& pBox, const QStri
//flags &= ~Qt::WindowCloseButtonHint;
setWindowFlags(flags);
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
this->setWindowFlag(Qt::WindowStaysOnTopHint, theGUI->IsAlwaysOnTop());
ui.setupUi(this);
this->setWindowTitle(tr("Sandboxie Plus - '%1' Options").arg(QString(Name).replace("_", " ")));

View File

@ -31,7 +31,7 @@ CRecoveryWindow::CRecoveryWindow(const CSandBoxPtr& pBox, bool bImmediate, QWidg
//setWindowState(Qt::WindowActive);
SetForegroundWindow((HWND)QWidget::winId());
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false) || (bImmediate && theConf->GetBool("Options/RecoveryOnTop", true));
bool bAlwaysOnTop = theGUI->IsAlwaysOnTop() || (bImmediate && theConf->GetBool("Options/RecoveryOnTop", true));
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
if (!bAlwaysOnTop) {

View File

@ -169,7 +169,7 @@ CSelectBoxWindow::CSelectBoxWindow(const QStringList& Commands, const QString& B
//setWindowState(Qt::WindowActive);
SetForegroundWindow((HWND)QWidget::winId());
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
bool bAlwaysOnTop = theGUI->IsAlwaysOnTop();
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
if (!bAlwaysOnTop) {

View File

@ -103,8 +103,7 @@ CSettingsWindow::CSettingsWindow(QWidget* parent)
//flags &= ~Qt::WindowCloseButtonHint;
setWindowFlags(flags);
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
this->setWindowFlag(Qt::WindowStaysOnTopHint, theGUI->IsAlwaysOnTop());
ui.setupUi(this);
this->setWindowTitle(tr("Sandboxie Plus - Global Settings"));

View File

@ -17,8 +17,7 @@ CSnapshotsWindow::CSnapshotsWindow(const CSandBoxPtr& pBox, QWidget *parent)
//flags &= ~Qt::WindowCloseButtonHint;
setWindowFlags(flags);
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
this->setWindowFlag(Qt::WindowStaysOnTopHint, theGUI->IsAlwaysOnTop());
ui.setupUi(this);
this->setWindowTitle(tr("%1 - Snapshots").arg(pBox->GetName()));

View File

@ -228,8 +228,7 @@ CSupportDialog::CSupportDialog(const QString& Message, bool NoGo, int Wait, QWid
//setWindowState(Qt::WindowActive);
SetForegroundWindow((HWND)QWidget::winId());
bool bAlwaysOnTop = theConf->GetBool("Options/AlwaysOnTop", false);
this->setWindowFlag(Qt::WindowStaysOnTopHint, bAlwaysOnTop);
this->setWindowFlag(Qt::WindowStaysOnTopHint, theGUI->IsAlwaysOnTop());
this->setWindowTitle(tr("Sandboxie-Plus - Support Reminder"));