summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main.cpp34
-rw-r--r--src/mainwindow.h2
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: