diff options
author | Mitch Curtis <[email protected]> | 2024-03-12 15:44:53 +0800 |
---|---|---|
committer | Mitch Curtis <[email protected]> | 2024-03-15 09:19:36 +0800 |
commit | e9f53d023d50a4367392db86c08843bbf10c947d (patch) | |
tree | 4fd49d86007d328d2e102067f1ddc417cbf86e76 /src/quickcontrols | |
parent | d5cd8ac31577f4feecb0934f30f58af25261b5b1 (diff) |
Use document imports of QtQuick.Controls.impl, not qmldir-imports
qmldir-imports are transitive, meaning that we were exposing all types
from QtQuick.Controls.impl each time QtQuick.Controls was imported.
This patch removes these transitive qmldir-imports by moving the
foreign type declarations for QQuickOverlay and
QQuickSplitHandleAttached into the Basic style (which is always
imported by every style as a final fallback).
Task-number: QTBUG-104768
Task-number: QTBUG-123103
Change-Id: Ia0ff778a88a38bb872730e055631dc924456d7be
Reviewed-by: Qt CI Bot <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Diffstat (limited to 'src/quickcontrols')
-rw-r--r-- | src/quickcontrols/basic/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/quickcontrols/basic/qtquickcontrols2basicforeign.cpp | 10 | ||||
-rw-r--r-- | src/quickcontrols/basic/qtquickcontrols2basicforeign_p.h | 51 | ||||
-rw-r--r-- | src/quickcontrols/ios/DialogButtonBox.qml | 1 | ||||
-rw-r--r-- | src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml | 1 | ||||
-rw-r--r-- | src/quickcontrols/material/Drawer.qml | 1 |
6 files changed, 65 insertions, 2 deletions
diff --git a/src/quickcontrols/basic/CMakeLists.txt b/src/quickcontrols/basic/CMakeLists.txt index 12404f0851..a9ed8f1f2a 100644 --- a/src/quickcontrols/basic/CMakeLists.txt +++ b/src/quickcontrols/basic/CMakeLists.txt @@ -157,14 +157,13 @@ qt_internal_add_qml_module(QuickControls2Basic CLASS_NAME QtQuickControls2BasicStylePlugin DEPENDENCIES QtQuick/auto - IMPORTS - QtQuick.Controls.impl/auto PLUGIN_TARGET qtquickcontrols2basicstyleplugin NO_PLUGIN_OPTIONAL NO_GENERATE_PLUGIN_SOURCE SOURCES qquickbasicstyle.cpp qquickbasicstyle_p.h qquickbasictheme.cpp qquickbasictheme_p.h + qtquickcontrols2basicforeign.cpp qtquickcontrols2basicforeign_p.h QML_FILES ${qml_files} DEFINES diff --git a/src/quickcontrols/basic/qtquickcontrols2basicforeign.cpp b/src/quickcontrols/basic/qtquickcontrols2basicforeign.cpp new file mode 100644 index 0000000000..7a5472e758 --- /dev/null +++ b/src/quickcontrols/basic/qtquickcontrols2basicforeign.cpp @@ -0,0 +1,10 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "qtquickcontrols2basicforeign_p.h" + +QT_BEGIN_NAMESPACE + +QT_END_NAMESPACE + +#include "moc_qtquickcontrols2basicforeign_p.cpp" diff --git a/src/quickcontrols/basic/qtquickcontrols2basicforeign_p.h b/src/quickcontrols/basic/qtquickcontrols2basicforeign_p.h new file mode 100644 index 0000000000..203a1c69a3 --- /dev/null +++ b/src/quickcontrols/basic/qtquickcontrols2basicforeign_p.h @@ -0,0 +1,51 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +#ifndef QTQUICKCONTROLS2BASICFOREIGN_P_H +#define QTQUICKCONTROLS2BASICFOREIGN_P_H + +#include <QtQml/qqml.h> +#include <QtQuickTemplates2/private/qquickoverlay_p.h> +#if QT_CONFIG(quicktemplates2_container) +#include <QtQuickTemplates2/private/qquicksplitview_p.h> +#endif + +QT_BEGIN_NAMESPACE + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +// These are necessary in order to use C++ types in a file where only QtQuick.Controls has been imported. +// Control types like Button don't need this done for them, as each style module provides a Button type, +// and QtQuick.Controls is a sort of alias for the active style import. + +struct QQuickOverlayAttachedForeign +{ + Q_GADGET + QML_NAMED_ELEMENT(Overlay) + QML_FOREIGN(QQuickOverlay) + QML_UNCREATABLE("") + QML_ADDED_IN_VERSION(2, 3) +}; + +#if QT_CONFIG(quicktemplates2_container) +struct QQuickSplitHandleAttachedForeign +{ + Q_GADGET + QML_NAMED_ELEMENT(SplitHandle) + QML_FOREIGN(QQuickSplitHandleAttached) + QML_UNCREATABLE("") + QML_ADDED_IN_VERSION(2, 13) +}; +#endif + +QT_END_NAMESPACE + +#endif // QTQUICKCONTROLS2BASICFOREIGN_P_H diff --git a/src/quickcontrols/ios/DialogButtonBox.qml b/src/quickcontrols/ios/DialogButtonBox.qml index 4dd5fec2a5..f04088a9d1 100644 --- a/src/quickcontrols/ios/DialogButtonBox.qml +++ b/src/quickcontrols/ios/DialogButtonBox.qml @@ -3,6 +3,7 @@ import QtQuick import QtQuick.Templates as T +import QtQuick.Controls.impl import QtQuick.Controls.iOS.impl T.DialogButtonBox { diff --git a/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml b/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml index ec506f6c06..2be1f9535e 100644 --- a/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml +++ b/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml @@ -3,6 +3,7 @@ import QtQuick import QtQuick.Controls +import QtQuick.Controls.impl import QtQuick.Controls.iOS.impl Button { diff --git a/src/quickcontrols/material/Drawer.qml b/src/quickcontrols/material/Drawer.qml index 915c98bb5a..fc31a19a84 100644 --- a/src/quickcontrols/material/Drawer.qml +++ b/src/quickcontrols/material/Drawer.qml @@ -3,6 +3,7 @@ import QtQuick import QtQuick.Templates as T +import QtQuick.Controls.impl import QtQuick.Controls.Material import QtQuick.Controls.Material.impl |