aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2024-03-12 15:44:53 +0800
committerMitch Curtis <mitch.curtis@qt.io>2024-03-15 09:19:36 +0800
commite9f53d023d50a4367392db86c08843bbf10c947d (patch)
tree4fd49d86007d328d2e102067f1ddc417cbf86e76 /src/quickcontrols
parentd5cd8ac31577f4feecb0934f30f58af25261b5b1 (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 <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/quickcontrols')
-rw-r--r--src/quickcontrols/basic/CMakeLists.txt3
-rw-r--r--src/quickcontrols/basic/qtquickcontrols2basicforeign.cpp10
-rw-r--r--src/quickcontrols/basic/qtquickcontrols2basicforeign_p.h51
-rw-r--r--src/quickcontrols/ios/DialogButtonBox.qml1
-rw-r--r--src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml1
-rw-r--r--src/quickcontrols/material/Drawer.qml1
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