diff --git a/src/libs/utils/checkablemessagebox.cpp b/src/libs/utils/checkablemessagebox.cpp index 19d3669adac..1d721e04c86 100644 --- a/src/libs/utils/checkablemessagebox.cpp +++ b/src/libs/utils/checkablemessagebox.cpp @@ -3,6 +3,7 @@ #include "checkablemessagebox.h" +#include "guiutils.h" #include "hostosinfo.h" #include "qtcassert.h" #include "qtcsettings.h" @@ -95,7 +96,7 @@ static QMessageBox::StandardButton exec( return acceptButton; } - QMessageBox msgBox(parent); + QMessageBox msgBox(dialogParent(parent)); prepare(icon, title, text, decider, buttons, defaultButton, buttonTextOverrides, msg, msgBox); msgBox.exec(); @@ -131,7 +132,7 @@ static void show(QWidget *parent, return; } - QMessageBox *msgBox = new QMessageBox(parent); + QMessageBox *msgBox = new QMessageBox(dialogParent(parent)); prepare(icon, title, text, decider, buttons, defaultButton, buttonTextOverrides, msg, *msgBox); std::optional> guardPtr; diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index b3649a457d1..d82353e2468 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -5,7 +5,6 @@ #include "savefile.h" #include "algorithm.h" -#include "devicefileaccess.h" #include "environment.h" #include "qtcassert.h" #include "utilstr.h" @@ -24,6 +23,8 @@ #include #ifdef QT_GUI_LIB +#include "guiutils.h" + #include #include #endif @@ -414,18 +415,6 @@ void withNtfsPermissions(const std::function &task) #ifdef QT_WIDGETS_LIB -static std::function s_dialogParentGetter; - -void FileUtils::setDialogParentGetter(const std::function &getter) -{ - s_dialogParentGetter = getter; -} - -static QWidget *dialogParent(QWidget *parent) -{ - return parent ? parent : s_dialogParentGetter ? s_dialogParentGetter() : nullptr; -} - static QUrl filePathToQUrl(const FilePath &filePath) { return QUrl::fromLocalFile(filePath.toFSPathString()); diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index b20f7568dbe..bdf7a7e3bab 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -89,8 +89,6 @@ public: static FilePaths usefulExtraSearchPaths(); #ifdef QT_WIDGETS_LIB - static void setDialogParentGetter(const std::function &getter); - static bool hasNativeFileDialog(); static FilePath getOpenFilePath(QWidget *parent, @@ -236,7 +234,5 @@ private: QTCREATOR_UTILS_EXPORT QTextStream &operator<<(QTextStream &s, const FilePath &fn); -bool isRelativePathHelper(const QString &path, OsType osType); - } // namespace Utils diff --git a/src/libs/utils/guiutils.cpp b/src/libs/utils/guiutils.cpp index 17cc9053002..d7d9cb5f84f 100644 --- a/src/libs/utils/guiutils.cpp +++ b/src/libs/utils/guiutils.cpp @@ -46,4 +46,16 @@ void QTCREATOR_UTILS_EXPORT setWheelScrollingWithoutFocusBlocked(QWidget *widget widget->setFocusPolicy(Qt::StrongFocus); } +static QWidget *(*s_dialogParentGetter)() = nullptr; + +void setDialogParentGetter(QWidget *(*getter)()) +{ + s_dialogParentGetter = getter; +} + +QWidget *dialogParent(QWidget *parent) +{ + return parent ? parent : s_dialogParentGetter ? s_dialogParentGetter() : nullptr; +} + } // namespace Utils diff --git a/src/libs/utils/guiutils.h b/src/libs/utils/guiutils.h index 83163777183..fea37f98f3c 100644 --- a/src/libs/utils/guiutils.h +++ b/src/libs/utils/guiutils.h @@ -9,6 +9,9 @@ class QWidget; namespace Utils { -void QTCREATOR_UTILS_EXPORT setWheelScrollingWithoutFocusBlocked(QWidget *widget); +QTCREATOR_UTILS_EXPORT void setWheelScrollingWithoutFocusBlocked(QWidget *widget); + +QTCREATOR_UTILS_EXPORT QWidget *dialogParent(QWidget *parent); +QTCREATOR_UTILS_EXPORT void setDialogParentGetter(QWidget *(*getter)()); } // namespace Utils diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index a625895b687..d1e669d8266 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -54,9 +54,9 @@ #include #include #include -#include #include #include +#include #include #include #include @@ -397,7 +397,7 @@ ICore::ICore() QCoreApplication::exit(exitCode); }); - Utils::FileUtils::setDialogParentGetter(&ICore::dialogParent); + Utils::setDialogParentGetter(&ICore::dialogParent); d->m_progressManager->init(); // needs the status bar manager MessageManager::init();