macOS: Fix hiding window after using database unlock dialog
* Properly hide window after Browser Integration and Auto-Type unlock, if needed * Fix #4904
This commit is contained in:
committed by
Jonathan White
parent
8ebd1ab4f4
commit
9b63e6a289
@@ -64,6 +64,7 @@ BrowserService::BrowserService()
|
||||
: QObject()
|
||||
, m_browserHost(new BrowserHost)
|
||||
, m_dialogActive(false)
|
||||
, m_bringToFrontRequested(false)
|
||||
, m_prevWindowState(WindowState::Normal)
|
||||
, m_keepassBrowserUUID(Tools::hexToUuid("de887cc3036343b8974b5911b8816224"))
|
||||
{
|
||||
@@ -109,6 +110,8 @@ bool BrowserService::openDatabase(bool triggerUnlock)
|
||||
}
|
||||
|
||||
if (triggerUnlock) {
|
||||
m_bringToFrontRequested = true;
|
||||
updateWindowState();
|
||||
emit requestUnlock();
|
||||
}
|
||||
|
||||
@@ -751,7 +754,7 @@ QList<Entry*> BrowserService::confirmEntries(QList<Entry*>& pwEntriesToConfirm,
|
||||
}
|
||||
|
||||
m_dialogActive = true;
|
||||
bool wasAppActive = qApp->activeWindow() == getMainWindow()->window();
|
||||
updateWindowState();
|
||||
BrowserAccessControlDialog accessControlDialog;
|
||||
|
||||
connect(m_currentDatabaseWidget, SIGNAL(databaseLocked()), &accessControlDialog, SLOT(reject()));
|
||||
@@ -796,11 +799,7 @@ QList<Entry*> BrowserService::confirmEntries(QList<Entry*>& pwEntriesToConfirm,
|
||||
#ifdef Q_OS_MAC
|
||||
// Re-hide the application if it wasn't visible before
|
||||
// only affects macOS because dialogs force the main window to show
|
||||
if (!wasAppActive) {
|
||||
hideWindow();
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(wasAppActive);
|
||||
hideWindow();
|
||||
#endif
|
||||
|
||||
m_dialogActive = false;
|
||||
@@ -1247,6 +1246,13 @@ void BrowserService::databaseLocked(DatabaseWidget* dbWidget)
|
||||
void BrowserService::databaseUnlocked(DatabaseWidget* dbWidget)
|
||||
{
|
||||
if (dbWidget) {
|
||||
#ifdef Q_OS_MAC
|
||||
if (m_bringToFrontRequested) {
|
||||
m_bringToFrontRequested = false;
|
||||
hideWindow();
|
||||
}
|
||||
#endif
|
||||
|
||||
QJsonObject msg;
|
||||
msg["action"] = QString("database-unlocked");
|
||||
m_browserHost->sendClientMessage(msg);
|
||||
|
||||
@@ -154,6 +154,7 @@ private:
|
||||
QHash<QString, QSharedPointer<BrowserAction>> m_browserClients;
|
||||
|
||||
bool m_dialogActive;
|
||||
bool m_bringToFrontRequested;
|
||||
WindowState m_prevWindowState;
|
||||
QUuid m_keepassBrowserUUID;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user