diff options
-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 |