diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index f6f1bca8c30..c179b57c01b 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -272,7 +272,6 @@ public: void aboutToShowRecentFiles(); static void setFocusToEditor(); - void aboutQtCreator(); void changeLog(); void contact(); void updateFocusWidget(QWidget *old, QWidget *now); @@ -309,7 +308,6 @@ public: NavigationWidget *m_leftNavigationWidget = nullptr; NavigationWidget *m_rightNavigationWidget = nullptr; RightPaneWidget *m_rightPaneWidget = nullptr; - VersionDialog *m_versionDialog = nullptr; QList m_activeContext; @@ -2036,7 +2034,7 @@ void ICorePrivate::registerDefaultActions() aboutIdeAction.setMenuRole(QAction::AboutRole); aboutIdeAction.addToContainer(Constants::M_HELP, Constants::G_HELP_ABOUT); aboutIdeAction.setEnabled(true); - aboutIdeAction.addOnTriggered(this, [this] { aboutQtCreator(); }); + aboutIdeAction.addOnTriggered(this, &showAboutQtCreator); // About Plugins Action ActionBuilder aboutPluginsAction(this, Constants::ABOUT_PLUGINS); @@ -2429,27 +2427,6 @@ void ICorePrivate::aboutToShowRecentFiles() } } -void ICorePrivate::aboutQtCreator() -{ - if (!m_versionDialog) { - m_versionDialog = new VersionDialog(m_mainwindow); - connect(m_versionDialog, &QDialog::finished, - this, &ICorePrivate::destroyVersionDialog); - ICore::registerWindow(m_versionDialog, Context("Core.VersionDialog")); - m_versionDialog->show(); - } else { - ICore::raiseWindow(m_versionDialog); - } -} - -void ICorePrivate::destroyVersionDialog() -{ - if (m_versionDialog) { - m_versionDialog->deleteLater(); - m_versionDialog = nullptr; - } -} - class LogDialog : public QDialog { public: diff --git a/src/plugins/coreplugin/versiondialog.cpp b/src/plugins/coreplugin/versiondialog.cpp index 643372f729d..48a844fa8c5 100644 --- a/src/plugins/coreplugin/versiondialog.cpp +++ b/src/plugins/coreplugin/versiondialog.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -23,11 +24,18 @@ #include #include -using namespace Core; -using namespace Core::Internal; +namespace Core::Internal { -VersionDialog::VersionDialog(QWidget *parent) - : QDialog(parent) +class VersionDialog final : public QDialog +{ +public: + VersionDialog(); + + bool event(QEvent *event) final; +}; + +VersionDialog::VersionDialog() + : QDialog(ICore::dialogParent()) { // We need to set the window icon explicitly here since for some reason the // application icon isn't used when the size of the dialog is fixed (at least not on X11/GNOME) @@ -78,3 +86,27 @@ bool VersionDialog::event(QEvent *event) } return QDialog::event(event); } + +static QDialog *s_versionDialog = nullptr; + +static void destroyVersionDialog() +{ + if (s_versionDialog) { + s_versionDialog->deleteLater(); + s_versionDialog = nullptr; + } +} + +void showAboutQtCreator() +{ + if (s_versionDialog) { + ICore::raiseWindow(s_versionDialog); + } else { + s_versionDialog = new VersionDialog; + QObject::connect(s_versionDialog, &QDialog::finished, &destroyVersionDialog); + ICore::registerWindow(s_versionDialog, Context("Core.VersionDialog")); + s_versionDialog->show(); + } +} + +} // Core::Internal diff --git a/src/plugins/coreplugin/versiondialog.h b/src/plugins/coreplugin/versiondialog.h index a5bb3704807..643328cde52 100644 --- a/src/plugins/coreplugin/versiondialog.h +++ b/src/plugins/coreplugin/versiondialog.h @@ -3,24 +3,8 @@ #pragma once -#include +namespace Core::Internal { -QT_BEGIN_NAMESPACE -class QEvent; -QT_END_NAMESPACE +void showAboutQtCreator(); -namespace Core { -namespace Internal { - -class VersionDialog : public QDialog -{ - Q_OBJECT -public: - explicit VersionDialog(QWidget *parent); - - bool event(QEvent *event) override; - -}; - -} // namespace Internal -} // namespace Core +} // Core::Internal