diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 34 |
1 files changed, 16 insertions, 18 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) { |