diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/RealSpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/RealSpinBox.qml index 9072a2de8ae..c83be5bd2b4 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/RealSpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/RealSpinBox.qml @@ -4,6 +4,7 @@ import QtQuick import QtQuick.Templates as T import StudioTheme 1.0 as StudioTheme +import StudioQuickUtils T.SpinBox { id: control @@ -71,6 +72,8 @@ T.SpinBox { signal dragging signal indicatorPressed + locale: Utils.locale + // Use custom wheel handling due to bugs property bool __wheelEnabled: false wheelEnabled: false diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/SpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/SpinBox.qml index ffde6e4ad16..8a07e4bc478 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/SpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/SpinBox.qml @@ -4,6 +4,7 @@ import QtQuick import QtQuick.Templates as T import StudioTheme 1.0 as StudioTheme +import StudioQuickUtils T.SpinBox { id: control @@ -54,6 +55,8 @@ T.SpinBox { signal dragEnded signal dragging + locale: Utils.locale + // Use custom wheel handling due to bugs property bool __wheelEnabled: false wheelEnabled: false diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 68d3c7071f8..a158ba43098 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -27,7 +27,6 @@ #include #include #include -#include #ifndef QDS_USE_PROJECTSTORAGE # include #endif @@ -311,7 +310,6 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *e //TODO Move registering those types out of the property editor, since they are used also in the states editor Quick2PropertyEditorView::registerQmlTypes(); StudioQuickWidget::registerDeclarativeType(); - QmlDesignerBase::WindowManager::registerDeclarativeType(); Exception::setWarnAboutException(!QmlDesignerPlugin::instance() ->settings() diff --git a/src/plugins/qmldesignerbase/CMakeLists.txt b/src/plugins/qmldesignerbase/CMakeLists.txt index 2cee711a35c..4fe7d952f70 100644 --- a/src/plugins/qmldesignerbase/CMakeLists.txt +++ b/src/plugins/qmldesignerbase/CMakeLists.txt @@ -45,6 +45,7 @@ extend_qtc_plugin(QmlDesignerBase PUBLIC_INCLUDES studio SOURCES_PREFIX studio SOURCES + studioquickutils.cpp studioquickutils.h studiostyle.cpp studiostyle.h studiostyle_p.cpp studiostyle_p.h studioquickwidget.cpp studioquickwidget.h diff --git a/src/plugins/qmldesignerbase/qmldesignerbaseplugin.cpp b/src/plugins/qmldesignerbase/qmldesignerbaseplugin.cpp index ec3b47063a2..626fa9f17df 100644 --- a/src/plugins/qmldesignerbase/qmldesignerbaseplugin.cpp +++ b/src/plugins/qmldesignerbase/qmldesignerbaseplugin.cpp @@ -8,6 +8,8 @@ #include "studio/studiostyle.h" #include +#include +#include #include #include @@ -89,6 +91,9 @@ bool QmlDesignerBasePlugin::initialize(const QStringList &arguments, QString *) if (arguments.contains("-qml-lite-designer")) enbableLiteMode(); + WindowManager::registerDeclarativeType(); + StudioQuickUtils::registerDeclarativeType(); + d = std::make_unique(); if (Core::ICore::settings()->value("QML/Designer/StandAloneMode", false).toBool()) d->studioConfigSettingsPage = std::make_unique(); diff --git a/src/plugins/qmldesignerbase/studio/studioquickutils.cpp b/src/plugins/qmldesignerbase/studio/studioquickutils.cpp new file mode 100644 index 00000000000..11af253732d --- /dev/null +++ b/src/plugins/qmldesignerbase/studio/studioquickutils.cpp @@ -0,0 +1,31 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "studioquickutils.h" + +#include + +namespace QmlDesigner { + +StudioQuickUtils::StudioQuickUtils() +{ + m_locale = QLocale("DesignStudioLocale"); + m_locale.setNumberOptions(QLocale::OmitGroupSeparator); +} + +void StudioQuickUtils::registerDeclarativeType() +{ + qmlRegisterSingletonType( + "StudioQuickUtils", 1, 0, "Utils", [](QQmlEngine *, QJSEngine *) { + return new StudioQuickUtils(); + }); +} + +const QLocale &StudioQuickUtils::locale() const +{ + return m_locale; +} + +StudioQuickUtils::~StudioQuickUtils() {} + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesignerbase/studio/studioquickutils.h b/src/plugins/qmldesignerbase/studio/studioquickutils.h new file mode 100644 index 00000000000..b7f298cebf1 --- /dev/null +++ b/src/plugins/qmldesignerbase/studio/studioquickutils.h @@ -0,0 +1,39 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#pragma once + +#include "../qmldesignerbase_global.h" + +#include + +#include + +namespace QmlDesigner { + +class QMLDESIGNERBASE_EXPORT StudioQuickUtils : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged) + +public: + ~StudioQuickUtils(); + + StudioQuickUtils(const StudioQuickUtils &) = delete; + void operator=(const StudioQuickUtils &) = delete; + + static void registerDeclarativeType(); + + const QLocale &locale() const; + +signals: + void localeChanged(); + +private: + StudioQuickUtils(); + + QLocale m_locale; +}; + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesignerbase/utils/windowmanager.cpp b/src/plugins/qmldesignerbase/utils/windowmanager.cpp index aa0b0772f9e..e00a19fb6d9 100644 --- a/src/plugins/qmldesignerbase/utils/windowmanager.cpp +++ b/src/plugins/qmldesignerbase/utils/windowmanager.cpp @@ -11,9 +11,7 @@ #include #include -namespace QmlDesignerBase { - -QPointer WindowManager::m_instance = nullptr; +namespace QmlDesigner { WindowManager::WindowManager() { @@ -56,4 +54,4 @@ QRect WindowManager::getScreenGeometry(QPoint point) return screen->geometry(); } -} // namespace QmlDesignerBase +} // namespace QmlDesigner diff --git a/src/plugins/qmldesignerbase/utils/windowmanager.h b/src/plugins/qmldesignerbase/utils/windowmanager.h index 87a0b701463..01444ce43dc 100644 --- a/src/plugins/qmldesignerbase/utils/windowmanager.h +++ b/src/plugins/qmldesignerbase/utils/windowmanager.h @@ -10,7 +10,7 @@ QT_FORWARD_DECLARE_CLASS(QWindow) -namespace QmlDesignerBase { +namespace QmlDesigner { class QMLDESIGNERBASE_EXPORT WindowManager : public QObject { @@ -34,8 +34,6 @@ signals: private: WindowManager(); - - static QPointer m_instance; }; -} // namespace QmlDesignerBase +} // namespace QmlDesigner