From 182bcd4ef7203940c6e5d97719c579a0f03a8258 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 969b3ddf5..55b2f1464 100644 --- a/src/gui/databasekey/PasswordEditWidget.cpp +++ b/src/gui/databasekey/PasswordEditWidget.cpp @@ -64,7 +64,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 9b23d7f41..268b3e827 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetDatabaseKey.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetDatabaseKey.cpp @@ -168,7 +168,9 @@ bool DatabaseSettingsWidgetDatabaseKey::save() } // 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")); @@ -187,7 +189,7 @@ bool DatabaseSettingsWidgetDatabaseKey::save() 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)) {