From b4510f200ab331432cf4f43ace0239aa0ada24b0 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 7 Aug 2020 10:44:03 +0200 Subject: Make MainWindow reusing code smarter wrt LoginForm Previously, we might have ended up with no LoginForm after some screen setup change events. --- src/main.cpp | 34 ++++++++++++++++------------------ src/mainwindow.h | 2 -- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index c25d7df..77c4932 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -212,18 +212,18 @@ void setupScreens() MainWindow *old = remaining.take(it.key()); if (old != nullptr) { // Existing - qDebug() << "Re-using existing window"; - old->setGeometry(it.value()); - if (old->showLoginForm() && primary != it.key()) { - qDebug() << "Destroying old login form"; - LoginForm *logForm = old->stealLoginForm(); - if (logForm != nullptr) { - logForm->setParent(nullptr); - logForm->deleteLater(); + if (old->showLoginForm() == (primary == it.key())) { + qDebug() << "Re-using existing window"; + old->setGeometry(it.value()); + currentWindows.insert(it.key(), old); + it.remove(); + if (old->showLoginForm()) { + old->setFocus(Qt::OtherFocusReason); + old->activateWindow(); } + } else { + old->deleteLater(); } - currentWindows.insert(it.key(), old); - it.remove(); } } } while(0); @@ -234,17 +234,15 @@ void setupScreens() it.next(); MainWindow *old = nullptr; if (!remaining.empty()) { - qDebug() << "This should never happen, reusing old window II"; old = remaining.take(remaining.firstKey()); if (old != nullptr) { - if (old->showLoginForm() && primary != it.key()) { - LoginForm *logForm = old->stealLoginForm(); - if (logForm != nullptr) { - logForm->setParent(nullptr); - logForm->deleteLater(); - } + if (old->showLoginForm() == (primary == it.key())) { + qDebug() << "This should never happen, reusing old window II"; + old->setGeometry(it.value()); + } else { + old->deleteLater(); + old = nullptr; } - old->setGeometry(it.value()); } } if (old == nullptr) { diff --git a/src/mainwindow.h b/src/mainwindow.h index f6b1072..e1a8011 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -38,8 +38,6 @@ public: bool showLoginForm(); - LoginForm* stealLoginForm() { LoginForm *p = m_LoginForm; m_LoginForm = nullptr; return p; } - const QImage& background() { return m_background; } protected: -- cgit v1.2.3-55-g7522