From a8ba420d7225d4c423042a6b73427b09b893e72c Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Tue, 16 Dec 2025 22:32:11 +0100 Subject: [PATCH] ErrorDialog: Use QApplication::activeWindow --- src/core/mainwindow.cpp | 3 --- src/dialogs/errordialog.cpp | 11 ++++++----- src/dialogs/errordialog.h | 3 +-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index cae02ec3d..5f6a31153 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -296,9 +296,6 @@ MainWindow::MainWindow(Application *app, #ifdef HAVE_DISCORD_RPC discord_rich_presence_(discord_rich_presence), #endif - error_dialog_([this]() { - return new ErrorDialog(this); - }), console_([app, this]() { Console *console = new Console(app->database()); QObject::connect(console, &Console::Error, this, &MainWindow::ShowErrorDialog); diff --git a/src/dialogs/errordialog.cpp b/src/dialogs/errordialog.cpp index 564560f4b..5ff0456f2 100644 --- a/src/dialogs/errordialog.cpp +++ b/src/dialogs/errordialog.cpp @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -40,9 +41,8 @@ using namespace Qt::Literals::StringLiterals; -ErrorDialog::ErrorDialog(QWidget *mainwindow, QWidget *parent) +ErrorDialog::ErrorDialog(QWidget *parent) : QDialog(parent), - mainwindow_(mainwindow), ui_(new Ui_ErrorDialog) { ui_->setupUi(this); @@ -64,8 +64,9 @@ ErrorDialog::~ErrorDialog() { void ErrorDialog::ShowDialog() { - if (screen() && mainwindow_->screen() && screen() != mainwindow_->screen()) { - Utilities::CenterWidgetOnScreen(mainwindow_->screen(), this); + QWidget *active_window = QApplication::activeWindow(); + if (active_window && screen() && active_window->screen() && screen() != active_window->screen()) { + Utilities::CenterWidgetOnScreen(active_window->screen(), this); } setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); show(); @@ -81,7 +82,7 @@ void ErrorDialog::ShowMessage(const QString &message) { current_messages_ << message; UpdateContent(); - if (mainwindow_->isActiveWindow()) { + if (QApplication::activeWindow()) { ShowDialog(); } else if (!isVisible()) { diff --git a/src/dialogs/errordialog.h b/src/dialogs/errordialog.h index e9e84bba8..57465bb5a 100644 --- a/src/dialogs/errordialog.h +++ b/src/dialogs/errordialog.h @@ -37,7 +37,7 @@ class ErrorDialog : public QDialog { Q_OBJECT public: - explicit ErrorDialog(QWidget *mainwindow, QWidget *parent = nullptr); + explicit ErrorDialog(QWidget *parent = nullptr); ~ErrorDialog() override; public Q_SLOTS: @@ -50,7 +50,6 @@ class ErrorDialog : public QDialog { private: void UpdateContent(); - QWidget *mainwindow_; Ui_ErrorDialog *ui_; QStringList current_messages_;