diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp index 7f85af970..c78744e0b 100644 --- a/src/browser/BrowserService.cpp +++ b/src/browser/BrowserService.cpp @@ -64,7 +64,6 @@ BrowserService::BrowserService() : QObject() , m_browserHost(new BrowserHost) , m_dialogActive(false) - , m_bringToFrontRequested(false) , m_prevWindowState(WindowState::Normal) , m_keepassBrowserUUID(Tools::hexToUuid("de887cc3036343b8974b5911b8816224")) { @@ -110,8 +109,7 @@ bool BrowserService::openDatabase(bool triggerUnlock) } if (triggerUnlock) { - m_bringToFrontRequested = true; - raiseWindow(true); + emit requestUnlock(); } return false; @@ -1220,6 +1218,23 @@ void BrowserService::raiseWindow(const bool force) #endif } +void BrowserService::updateWindowState() +{ + m_prevWindowState = WindowState::Normal; + if (getMainWindow()->isMinimized()) { + m_prevWindowState = WindowState::Minimized; + } +#ifdef Q_OS_MACOS + if (macUtils()->isHidden()) { + m_prevWindowState = WindowState::Hidden; + } +#else + if (getMainWindow()->isHidden()) { + m_prevWindowState = WindowState::Hidden; + } +#endif +} + void BrowserService::databaseLocked(DatabaseWidget* dbWidget) { if (dbWidget) { @@ -1232,11 +1247,6 @@ void BrowserService::databaseLocked(DatabaseWidget* dbWidget) void BrowserService::databaseUnlocked(DatabaseWidget* dbWidget) { if (dbWidget) { - if (m_bringToFrontRequested) { - hideWindow(); - m_bringToFrontRequested = false; - } - QJsonObject msg; msg["action"] = QString("database-unlocked"); m_browserHost->sendClientMessage(msg); diff --git a/src/browser/BrowserService.h b/src/browser/BrowserService.h index c94cb70ca..1a9af8082 100644 --- a/src/browser/BrowserService.h +++ b/src/browser/BrowserService.h @@ -91,6 +91,9 @@ public: static const QString OPTION_ONLY_HTTP_AUTH; static const QString ADDITIONAL_URL; +signals: + void requestUnlock(); + public slots: void databaseLocked(DatabaseWidget* dbWidget); void databaseUnlocked(DatabaseWidget* dbWidget); @@ -142,6 +145,7 @@ private: void hideWindow() const; void raiseWindow(const bool force = false); + void updateWindowState(); static bool moveSettingsToCustomData(Entry* entry, const QString& name); static int moveKeysToCustomData(Entry* entry, QSharedPointer db); @@ -150,7 +154,6 @@ private: QHash> m_browserClients; bool m_dialogActive; - bool m_bringToFrontRequested; WindowState m_prevWindowState; QUuid m_keepassBrowserUUID; diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index f484815af..2a873dbb2 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -755,3 +755,11 @@ void DatabaseTabWidget::performGlobalAutoType() unlockDatabaseInDialog(currentDatabaseWidget(), DatabaseOpenDialog::Intent::AutoType); } } + +void DatabaseTabWidget::performBrowserUnlock() +{ + auto dbWidget = currentDatabaseWidget(); + if (dbWidget && dbWidget->isLocked()) { + unlockDatabaseInDialog(dbWidget, DatabaseOpenDialog::Intent::Browser); + } +} diff --git a/src/gui/DatabaseTabWidget.h b/src/gui/DatabaseTabWidget.h index d7c656908..64d154350 100644 --- a/src/gui/DatabaseTabWidget.h +++ b/src/gui/DatabaseTabWidget.h @@ -82,6 +82,7 @@ public slots: void changeReports(); void changeDatabaseSettings(); void performGlobalAutoType(); + void performBrowserUnlock(); signals: void databaseOpened(DatabaseWidget* dbWidget); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index d232a91ac..c52298377 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -144,6 +144,8 @@ MainWindow::MainWindow() &DatabaseTabWidget::activateDatabaseChanged, browserService(), &BrowserService::activeDatabaseChanged); + connect( + browserService(), &BrowserService::requestUnlock, m_ui->tabWidget, &DatabaseTabWidget::performBrowserUnlock); #endif #ifdef WITH_XC_SSHAGENT