aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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