mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-12-27 00:09:53 -05:00
Ensure that YubiKey is only polled once, even if showEvent() is called twice
This commit is contained in:
parent
51b42bc7b8
commit
f6933a8868
@ -95,11 +95,16 @@ void DatabaseOpenWidget::showEvent(QShowEvent* event)
|
|||||||
m_ui->editPassword->setFocus();
|
m_ui->editPassword->setFocus();
|
||||||
|
|
||||||
#ifdef WITH_XC_YUBIKEY
|
#ifdef WITH_XC_YUBIKEY
|
||||||
connect(YubiKey::instance(), SIGNAL(detected(int,bool)), SLOT(yubikeyDetected(int,bool)), Qt::QueuedConnection);
|
// showEvent() may be called twice, so make sure we are only polling once
|
||||||
connect(YubiKey::instance(), SIGNAL(detectComplete()), SLOT(yubikeyDetectComplete()), Qt::QueuedConnection);
|
if (!m_yubiKeyBeingPolled) {
|
||||||
connect(YubiKey::instance(), SIGNAL(notFound()), SLOT(noYubikeyFound()), Qt::QueuedConnection);
|
connect(YubiKey::instance(), SIGNAL(detected(int, bool)), SLOT(yubikeyDetected(int, bool)),
|
||||||
|
Qt::QueuedConnection);
|
||||||
|
connect(YubiKey::instance(), SIGNAL(detectComplete()), SLOT(yubikeyDetectComplete()), Qt::QueuedConnection);
|
||||||
|
connect(YubiKey::instance(), SIGNAL(notFound()), SLOT(noYubikeyFound()), Qt::QueuedConnection);
|
||||||
|
|
||||||
pollYubikey();
|
pollYubikey();
|
||||||
|
m_yubiKeyBeingPolled = true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,6 +115,7 @@ void DatabaseOpenWidget::hideEvent(QHideEvent* event)
|
|||||||
#ifdef WITH_XC_YUBIKEY
|
#ifdef WITH_XC_YUBIKEY
|
||||||
// Don't listen to any Yubikey events if we are hidden
|
// Don't listen to any Yubikey events if we are hidden
|
||||||
disconnect(YubiKey::instance(), 0, this, 0);
|
disconnect(YubiKey::instance(), 0, this, 0);
|
||||||
|
m_yubiKeyBeingPolled = false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,10 +317,12 @@ void DatabaseOpenWidget::yubikeyDetectComplete()
|
|||||||
m_ui->checkChallengeResponse->setEnabled(true);
|
m_ui->checkChallengeResponse->setEnabled(true);
|
||||||
m_ui->buttonRedetectYubikey->setEnabled(true);
|
m_ui->buttonRedetectYubikey->setEnabled(true);
|
||||||
m_ui->yubikeyProgress->setVisible(false);
|
m_ui->yubikeyProgress->setVisible(false);
|
||||||
|
m_yubiKeyBeingPolled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseOpenWidget::noYubikeyFound()
|
void DatabaseOpenWidget::noYubikeyFound()
|
||||||
{
|
{
|
||||||
m_ui->buttonRedetectYubikey->setEnabled(true);
|
m_ui->buttonRedetectYubikey->setEnabled(true);
|
||||||
m_ui->yubikeyProgress->setVisible(false);
|
m_ui->yubikeyProgress->setVisible(false);
|
||||||
|
m_yubiKeyBeingPolled = false;
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@ protected:
|
|||||||
QString m_filename;
|
QString m_filename;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool m_yubiKeyBeingPolled = false;
|
||||||
Q_DISABLE_COPY(DatabaseOpenWidget)
|
Q_DISABLE_COPY(DatabaseOpenWidget)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user