diff options
author | Doris Verria <[email protected]> | 2025-01-13 16:22:09 +0100 |
---|---|---|
committer | Doris Verria <[email protected]> | 2025-01-15 08:59:38 +0100 |
commit | 76359a60a583e0d20aa97fced3db11302d30068e (patch) | |
tree | 64c6d2d935a8ad36e37f2dfbe8645c6126198f4b | |
parent | 1247ed1a103a7349e56a7ff2b6c05800e0442f6b (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.txt | 2 | ||||
-rw-r--r-- | src/quickcontrols/fluentwinui3/FocusFrame.qml | 9 | ||||
-rw-r--r-- | src/quickcontrols/fluentwinui3/impl/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/quickcontrols/fluentwinui3/impl/FocusFrame.qml | 50 | ||||
-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.h | 22 | ||||
-rw-r--r-- | src/quickcontrols/fluentwinui3/qtquickcontrols2fluentwinui3styleplugin.cpp | 2 |
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 |