From 854459068fc56832b580cde1d19cf96e6ef293a4 Mon Sep 17 00:00:00 2001 From: Carlo Teubner Date: Fri, 28 Jun 2024 23:01:34 +0100 Subject: [PATCH] Database key settings: fix UI bug Fix a bug in the database key settings dialog, where it was previously always incorrectly applying an empty password if the password was not changed but some other change was made (e.g. adding or removing a key file). --- src/gui/databasekey/PasswordEditWidget.cpp | 2 +- src/gui/dbsettings/DatabaseSettingsWidgetDatabaseKey.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gui/databasekey/PasswordEditWidget.cpp b/src/gui/databasekey/PasswordEditWidget.cpp index e2c34be07..e04f6e0b1 100644 --- a/src/gui/databasekey/PasswordEditWidget.cpp +++ b/src/gui/databasekey/PasswordEditWidget.cpp @@ -62,7 +62,7 @@ bool PasswordEditWidget::isPasswordVisible() const bool PasswordEditWidget::isEmpty() const { - return visiblePage() != Page::Edit || m_compUi->enterPasswordEdit->text().isEmpty(); + return m_compUi->enterPasswordEdit->text().isEmpty(); } PasswordHealth::Quality PasswordEditWidget::getPasswordQuality() const diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetDatabaseKey.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetDatabaseKey.cpp index 18d35af4e..ebd5f0402 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetDatabaseKey.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetDatabaseKey.cpp @@ -160,7 +160,9 @@ bool DatabaseSettingsWidgetDatabaseKey::saveSettings() } // Show warning if database password has not been set - if (m_passwordEditWidget->visiblePage() == KeyComponentWidget::Page::AddNew || m_passwordEditWidget->isEmpty()) { + if (m_passwordEditWidget->visiblePage() == KeyComponentWidget::Page::AddNew + || (m_passwordEditWidget->visiblePage() == KeyComponentWidget::Page::Edit && m_passwordEditWidget->isEmpty())) { + QScopedPointer msgBox(new QMessageBox(this)); msgBox->setIcon(QMessageBox::Warning); msgBox->setWindowTitle(tr("No password set")); @@ -179,7 +181,7 @@ bool DatabaseSettingsWidgetDatabaseKey::saveSettings() return false; } - if (!m_passwordEditWidget->isEmpty()) { + if (m_passwordEditWidget->visiblePage() == KeyComponentWidget::Page::Edit && !m_passwordEditWidget->isEmpty()) { // Prevent setting password with a quality less than the minimum required auto minQuality = qBound(0, config()->get(Config::Security_DatabasePasswordMinimumQuality).toInt(), 4); if (m_passwordEditWidget->getPasswordQuality() < static_cast(minQuality)) {