From 35a4f486803d3a707844517d2338a93b286c8a5f Mon Sep 17 00:00:00 2001 From: Fatih Uzunoglu Date: Tue, 29 Mar 2022 17:14:28 +0300 Subject: [PATCH] qt: don't allow PrefsDialog to open multiple times in DialogsProvider allowing PrefsDialog to be opened multiple time causes massive freezing --- modules/gui/qt/dialogs/dialogs_provider.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/gui/qt/dialogs/dialogs_provider.cpp b/modules/gui/qt/dialogs/dialogs_provider.cpp index eaa5448908..2bc1efc649 100644 --- a/modules/gui/qt/dialogs/dialogs_provider.cpp +++ b/modules/gui/qt/dialogs/dialogs_provider.cpp @@ -62,6 +62,7 @@ #include #include #include +#include #define I_OP_DIR_WINTITLE I_DIR_OR_FOLDER( N_("Open Directory"), \ N_("Open Folder") ) @@ -248,9 +249,18 @@ const QEvent::Type DialogEvent::DialogEvent_Type = void DialogsProvider::prefsDialog() { - PrefsDialog *p = new PrefsDialog( nullptr, p_intf ); - p->setAttribute(Qt::WA_DeleteOnClose); - p->toggleVisible(); + static QPointer p; + + if (Q_LIKELY(!p)) + { + p = new PrefsDialog( nullptr, p_intf ); + p->setAttribute(Qt::WA_DeleteOnClose); + p->open(); + } + else + { + p->reject(); + } } void DialogsProvider::firstRunDialog()