diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index e38b943ac..250463d3f 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -1755,9 +1755,17 @@ bool DatabaseWidget::lock() emit databaseLockRequested(); - // ignore event if we are active and a modal dialog is still open (such as a message box or file dialog) - if (isVisible() && QApplication::activeModalWidget()) { - return false; + // Force close any modal widgets associated with this widget + auto modalWidget = QApplication::activeModalWidget(); + if (modalWidget) { + auto parent = modalWidget->parentWidget(); + while (parent) { + if (parent == this) { + modalWidget->close(); + break; + } + parent = parent->parentWidget(); + } } clipboard()->clearCopiedText(); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 1f1e459e7..c89e08f0b 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -1821,7 +1821,9 @@ void MainWindow::closeModalWindow() void MainWindow::lockDatabasesAfterInactivity() { - m_ui->tabWidget->lockDatabases(); + if (!m_ui->tabWidget->lockDatabases()) { + m_inactivityTimer->activate(); + } } bool MainWindow::isTrayIconEnabled() const diff --git a/src/gui/wizard/ImportWizardPageSelect.cpp b/src/gui/wizard/ImportWizardPageSelect.cpp index 7bca1a39a..05b8f0990 100644 --- a/src/gui/wizard/ImportWizardPageSelect.cpp +++ b/src/gui/wizard/ImportWizardPageSelect.cpp @@ -126,11 +126,17 @@ void ImportWizardPageSelect::updateDatabaseChoices() const auto mainWindow = getMainWindow(); if (mainWindow) { for (auto dbWidget : mainWindow->getOpenDatabases()) { + // Remove all connections + disconnect(dbWidget, nullptr, nullptr, nullptr); + // Skip over locked databases if (dbWidget->isLocked()) { continue; } + connect(dbWidget, &DatabaseWidget::databaseLocked, this, &ImportWizardPageSelect::updateDatabaseChoices); + connect(dbWidget, &DatabaseWidget::databaseModified, this, &ImportWizardPageSelect::updateDatabaseChoices); + // Enable the selection of an existing database m_ui->existingDatabaseRadio->setEnabled(true); m_ui->existingDatabaseRadio->setToolTip(""); @@ -161,6 +167,11 @@ void ImportWizardPageSelect::updateDatabaseChoices() const } } } + + if (m_ui->existingDatabaseChoice->count() == 0) { + m_ui->existingDatabaseRadio->setEnabled(false); + m_ui->newDatabaseRadio->setChecked(true); + } } void ImportWizardPageSelect::chooseImportFile()