aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoris Verria <[email protected]>2025-01-13 16:22:09 +0100
committerDoris Verria <[email protected]>2025-01-15 08:59:38 +0100
commit76359a60a583e0d20aa97fced3db11302d30068e (patch)
tree64c6d2d935a8ad36e37f2dfbe8645c6126198f4b
parent1247ed1a103a7349e56a7ff2b6c05800e0442f6b (diff)
FluentWinUI3: Move FocusFrame type to private impl module
FocusFrame.qml was included in the FluentWinUI3 public module imports, despite not providing any documentation. This component is an implementation detail and should not be part of public QML API. Add deprecation warnings in the original file and move it to the private impl module instead. [ChangeLog][QtQuick][Controls][FluentWinUI3] FocusFrame.qml is deprecated in the module's public QML API and moved to the private impl module instead. Pick-to: 6.9 Change-Id: I74c8c9a03ccc1f7b33d6fb814ca1faeca57b0545 Reviewed-by: Mitch Curtis <[email protected]>
-rw-r--r--src/quickcontrols/fluentwinui3/CMakeLists.txt2
-rw-r--r--src/quickcontrols/fluentwinui3/FocusFrame.qml9
-rw-r--r--src/quickcontrols/fluentwinui3/impl/CMakeLists.txt5
-rw-r--r--src/quickcontrols/fluentwinui3/impl/FocusFrame.qml50
-rw-r--r--src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3focusframe.cpp (renamed from src/quickcontrols/fluentwinui3/qquickfluentwinui3focusframe.cpp)9
-rw-r--r--src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3focusframe_p.h (renamed from src/quickcontrols/fluentwinui3/qquickfluentwinui3focusframe_p.h)3
-rw-r--r--src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3styleimplglobal_p.h22
-rw-r--r--src/quickcontrols/fluentwinui3/qtquickcontrols2fluentwinui3styleplugin.cpp2
8 files changed, 93 insertions, 9 deletions
diff --git a/src/quickcontrols/fluentwinui3/CMakeLists.txt b/src/quickcontrols/fluentwinui3/CMakeLists.txt
index ecf986369e..fb63f76c90 100644
--- a/src/quickcontrols/fluentwinui3/CMakeLists.txt
+++ b/src/quickcontrols/fluentwinui3/CMakeLists.txt
@@ -71,7 +71,6 @@ qt_internal_add_qml_module(qtquickcontrols2fluentwinui3styleplugin
SOURCES
qtquickcontrols2fluentwinui3styleplugin.cpp
qquickfluentwinui3theme_p.h qquickfluentwinui3theme.cpp
- qquickfluentwinui3focusframe_p.h qquickfluentwinui3focusframe.cpp
QML_FILES
${qml_files}
RESOURCES
@@ -86,6 +85,7 @@ qt_internal_add_qml_module(qtquickcontrols2fluentwinui3styleplugin
Qt::GuiPrivate
Qt::QmlPrivate
Qt::QuickControls2FluentWinUI3StyleImpl
+ Qt::QuickControls2FluentWinUI3StyleImplPrivate
Qt::QuickControls2ImplPrivate
Qt::QuickControls2Private
Qt::QuickPrivate
diff --git a/src/quickcontrols/fluentwinui3/FocusFrame.qml b/src/quickcontrols/fluentwinui3/FocusFrame.qml
index 35efc3bb8d..4010c7805e 100644
--- a/src/quickcontrols/fluentwinui3/FocusFrame.qml
+++ b/src/quickcontrols/fluentwinui3/FocusFrame.qml
@@ -5,8 +5,15 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
+@Deprecated {
+ reason: "FocusFrame component has been moved to private FluentWinUI3.impl module \
+ and is no longer part of the public QML API."
+}
Rectangle {
-
+ Component.onCompleted: {
+ print("FocusFrame has been moved to private FluentWinUI3.impl module "
+ + "and is no longer part of the public QML API.")
+ }
function moveToItem(item) {
if (!item) {
targetItem = null;
diff --git a/src/quickcontrols/fluentwinui3/impl/CMakeLists.txt b/src/quickcontrols/fluentwinui3/impl/CMakeLists.txt
index b23085411b..35b77186d9 100644
--- a/src/quickcontrols/fluentwinui3/impl/CMakeLists.txt
+++ b/src/quickcontrols/fluentwinui3/impl/CMakeLists.txt
@@ -9,6 +9,7 @@ set(qml_files
"CheckIndicator.qml"
"RadioIndicator.qml"
"SwitchIndicator.qml"
+ "FocusFrame.qml"
)
qt_internal_add_qml_module(QuickControls2FluentWinUI3StyleImpl
@@ -21,9 +22,12 @@ qt_internal_add_qml_module(QuickControls2FluentWinUI3StyleImpl
PLUGIN_TARGET qtquickcontrols2fluentwinui3styleimplplugin
SOURCES
qquickfluentwinui3focusstroke_p.h qquickfluentwinui3focusstroke.cpp
+ qquickfluentwinui3focusframe_p.h qquickfluentwinui3focusframe.cpp
+ qquickfluentwinui3styleimplglobal_p.h
QML_FILES
${qml_files}
DEFINES
+ QT_BUILD_QUICKCONTROLS2FLUENTWINUI3STYLEIMPL_LIB
QT_NO_CAST_FROM_ASCII
QT_NO_CAST_TO_ASCII
LIBRARIES
@@ -33,4 +37,5 @@ qt_internal_add_qml_module(QuickControls2FluentWinUI3StyleImpl
Qt::QmlPrivate
Qt::Quick
Qt::QuickPrivate
+ Qt::QuickTemplates2Private
)
diff --git a/src/quickcontrols/fluentwinui3/impl/FocusFrame.qml b/src/quickcontrols/fluentwinui3/impl/FocusFrame.qml
new file mode 100644
index 0000000000..35efc3bb8d
--- /dev/null
+++ b/src/quickcontrols/fluentwinui3/impl/FocusFrame.qml
@@ -0,0 +1,50 @@
+// 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
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Rectangle {
+
+ function moveToItem(item) {
+ if (!item) {
+ targetItem = null;
+ parent = null;
+ return;
+ }
+ parent = item.parent
+ targetItem = item
+ }
+
+ property Item targetItem
+ property real innerFrameSize: 1
+ property real outerFrameSize: 3
+ property real frameRadius: 4.0
+
+ x: targetItem ? targetItem.x - outerFrameSize : 0
+ y: targetItem ? targetItem.y - outerFrameSize : 0
+ // Stack on top of all siblings of the targetItem
+ z: 100
+ width: targetItem ? targetItem.width + outerFrameSize * 2 : 0
+ height: targetItem ? targetItem.height + outerFrameSize * 2 : 0
+ radius: frameRadius + outerFrameSize
+ visible: targetItem && targetItem.visible
+ color: "transparent"
+ border.color: Application.styleHints.colorScheme === Qt.Light ? "black" : "white"
+ border.width: outerFrameSize - (Application.styleHints.colorScheme === Qt.Light ? innerFrameSize : 0)
+
+ Rectangle {
+ id: innerFocusFrame
+ z: 10
+ x: outerFrameSize - innerFrameSize
+ y: outerFrameSize - innerFrameSize
+ width: targetItem ? targetItem.width + innerFrameSize * 2 : 0
+ height: targetItem ? targetItem.height + innerFrameSize * 2 : 0
+ radius: frameRadius + innerFrameSize
+ visible: targetItem && targetItem.visible
+ color: "transparent"
+ border.color: Application.styleHints.colorScheme === Qt.Light ? "white" : "black"
+ border.width: innerFrameSize
+ }
+}
diff --git a/src/quickcontrols/fluentwinui3/qquickfluentwinui3focusframe.cpp b/src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3focusframe.cpp
index e7ca6fc918..972e818364 100644
--- a/src/quickcontrols/fluentwinui3/qquickfluentwinui3focusframe.cpp
+++ b/src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3focusframe.cpp
@@ -34,10 +34,7 @@ QQuickFluentWinUI3FocusFrame::QQuickFluentWinUI3FocusFrame()
QQuickItem *QQuickFluentWinUI3FocusFrame::createFocusFrame(QQmlContext *context)
{
- QQmlComponent component(
- context->engine(),
- QUrl(QStringLiteral(
- "qrc:/qt-project.org/imports/QtQuick/Controls/FluentWinUI3/FocusFrame.qml")));
+ QQmlComponent component(context->engine(), "QtQuick.Controls.FluentWinUI3.impl", "FocusFrame");
auto frame = qobject_cast<QQuickItem *>(component.create());
if (!frame)
return nullptr;
@@ -54,11 +51,11 @@ void QQuickFluentWinUI3FocusFrame::moveToItem(QQuickControl *item)
if (!context || !context->engine())
return;
m_focusFrame.reset(createFocusFrame(context));
- QQuickItemPrivate::get(m_focusFrame.get())->setTransparentForPositioner(true);
if (!m_focusFrame) {
qWarning() << "Failed to create FocusFrame";
return;
}
+ QQuickItemPrivate::get(m_focusFrame.get())->setTransparentForPositioner(true);
}
const auto target = getFocusTarget(item);
@@ -85,3 +82,5 @@ QQuickControl *QQuickFluentWinUI3FocusFrame::getFocusTarget(QQuickControl *focus
}
QT_END_NAMESPACE
+
+#include "moc_qquickfluentwinui3focusframe_p.cpp"
diff --git a/src/quickcontrols/fluentwinui3/qquickfluentwinui3focusframe_p.h b/src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3focusframe_p.h
index 1b79cc5ec2..764fe8d7f1c 100644
--- a/src/quickcontrols/fluentwinui3/qquickfluentwinui3focusframe_p.h
+++ b/src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3focusframe_p.h
@@ -14,10 +14,11 @@
// We mean it.
//
#include <QtQuickTemplates2/private/qquickcontrol_p.h>
+#include "qquickfluentwinui3styleimplglobal_p.h"
QT_BEGIN_NAMESPACE
-class QQuickFluentWinUI3FocusFrame : public QObject
+class Q_QUICKCONTROLS2FLUENTWINUI3STYLEIMPL_EXPORT QQuickFluentWinUI3FocusFrame : public QObject
{
Q_OBJECT
diff --git a/src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3styleimplglobal_p.h b/src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3styleimplglobal_p.h
new file mode 100644
index 0000000000..580e41ae80
--- /dev/null
+++ b/src/quickcontrols/fluentwinui3/impl/qquickfluentwinui3styleimplglobal_p.h
@@ -0,0 +1,22 @@
+// Copyright (C) 2025 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 QQUICKFLUENTWINUI3STYLEIMPLGLOBAL_P_H
+#define QQUICKFLUENTWINUI3STYLEIMPLGLOBAL_P_H
+
+//
+// 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.
+//
+
+#include <QtCore/qglobal.h>
+#include <QtQml/private/qqmlglobal_p.h>
+#include <QtQuickControls2FluentWinUI3StyleImpl/qtquickcontrols2fluentwinui3styleimplexports.h>
+
+#endif // QQUICKFLUENTWINUI3STYLEIMPLGLOBAL_P_H
diff --git a/src/quickcontrols/fluentwinui3/qtquickcontrols2fluentwinui3styleplugin.cpp b/src/quickcontrols/fluentwinui3/qtquickcontrols2fluentwinui3styleplugin.cpp
index 909cd313ef..6b27a7bba3 100644
--- a/src/quickcontrols/fluentwinui3/qtquickcontrols2fluentwinui3styleplugin.cpp
+++ b/src/quickcontrols/fluentwinui3/qtquickcontrols2fluentwinui3styleplugin.cpp
@@ -7,7 +7,7 @@
#include <QtQuickControls2/private/qquickstyleplugin_p.h>
#include <QtQuickTemplates2/private/qquicktheme_p.h>
-#include "qquickfluentwinui3focusframe_p.h"
+#include <QtQuickControls2FluentWinUI3StyleImpl/private/qquickfluentwinui3focusframe_p.h>
QT_BEGIN_NAMESPACE