From fd4431246c5293d08e048031d8ac95f5169a5a70 Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Tue, 28 Jun 2022 21:40:12 +0100 Subject: [PATCH] Remove the "groupViewInMDIResize" property from DockRegistry Moved it into the QmlHelpers, as it's QtQuick specific. Allows to remove a asQObject() call. --- src/DockRegistry.cpp | 8 -------- src/DockRegistry.h | 8 ++------ src/qtquick/Helpers.cpp | 17 +++++++++++++++++ src/qtquick/Helpers_p.h | 12 +++++++++++- src/qtquick/Platform_qtquick.h | 2 +- src/qtquick/TestHelpers_qtquick.cpp | 2 +- src/qtquick/views/qml/Group.qml | 2 +- 7 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/DockRegistry.cpp b/src/DockRegistry.cpp index 3dcd0bc6..3f226614 100644 --- a/src/DockRegistry.cpp +++ b/src/DockRegistry.cpp @@ -237,14 +237,6 @@ Controllers::Group *DockRegistry::groupInMDIResize() const return nullptr; } -QObject *DockRegistry::groupViewInMDIResize() const -{ - if (auto group = groupInMDIResize()) - return group->view()->asQObject(); - - return nullptr; -} - Controllers::MainWindow::List DockRegistry::mainWindowsWithAffinity(const QStringList &affinities) const { Controllers::MainWindow::List result; diff --git a/src/DockRegistry.h b/src/DockRegistry.h index 37a9e99b..655edb5d 100644 --- a/src/DockRegistry.h +++ b/src/DockRegistry.h @@ -48,8 +48,7 @@ struct WindowBeingDragged; class DOCKS_EXPORT DockRegistry : public QObject { Q_OBJECT - Q_PROPERTY( - QObject *groupViewInMDIResize READ groupViewInMDIResize NOTIFY groupInMDIResizeChanged) + public: enum class DockByNameFlag { @@ -230,12 +229,9 @@ public: ///@brief Overload that returns the SideBar itself Controllers::SideBar *sideBarForDockWidget(const Controllers::DockWidget *) const; - ///@brief Returns the Frame which is being resized in a MDI layout. nullptr if none + ///@brief Returns the Group which is being resized in a MDI layout. nullptr if none Controllers::Group *groupInMDIResize() const; - /// Returns the Frame view, for QtQuick - QObject *groupViewInMDIResize() const; - Q_SIGNALS: /// @brief emitted when a main window or a floating window change screen void windowChangedScreen(std::shared_ptr); diff --git a/src/qtquick/Helpers.cpp b/src/qtquick/Helpers.cpp index 7b62d9df..070dfc64 100644 --- a/src/qtquick/Helpers.cpp +++ b/src/qtquick/Helpers.cpp @@ -10,13 +10,30 @@ */ #include "Helpers_p.h" +#include "DockRegistry.h" +#include "controllers/Group.h" +#include "qtcommon/View_qt.h" #include using namespace KDDockWidgets; +QtQuickHelpers::QtQuickHelpers() +{ + connect(DockRegistry::self(), &DockRegistry::groupInMDIResizeChanged, + this, &QtQuickHelpers::groupInMDIResizeChanged); +} + qreal QtQuickHelpers::logicalDpiFactor(const QQuickItem *) const { return 1; // TODO: Support the actual dpi factor. // return KDDockWidgets::logicalDpiFactor(item); } + +QObject *QtQuickHelpers::groupViewInMDIResize() const +{ + if (auto group = DockRegistry::self()->groupInMDIResize()) + return Views::View_qt::asObject(group->view()); + + return nullptr; +} diff --git a/src/qtquick/Helpers_p.h b/src/qtquick/Helpers_p.h index aca91779..76c24213 100644 --- a/src/qtquick/Helpers_p.h +++ b/src/qtquick/Helpers_p.h @@ -22,11 +22,21 @@ namespace KDDockWidgets { class QtQuickHelpers : public QObject { Q_OBJECT + Q_PROPERTY( + QObject *groupViewInMDIResize READ groupViewInMDIResize NOTIFY groupInMDIResizeChanged) + +Q_SIGNALS: + /// @brief emitted when the MDI group that's being resized changed + void groupInMDIResizeChanged(); + public: - using QObject::QObject; + QtQuickHelpers(); Q_INVOKABLE qreal logicalDpiFactor(const QQuickItem *item) const; + + QObject *groupViewInMDIResize() const; }; + } #endif diff --git a/src/qtquick/Platform_qtquick.h b/src/qtquick/Platform_qtquick.h index f0f5e384..e8eeffdf 100644 --- a/src/qtquick/Platform_qtquick.h +++ b/src/qtquick/Platform_qtquick.h @@ -69,7 +69,7 @@ public: private: void init(); QQmlEngine *m_qmlEngine = nullptr; - QtQuickHelpers *const m_qquickHelpers; + QtQuickHelpers *m_qquickHelpers = nullptr; }; inline Platform_qtquick *plat() diff --git a/src/qtquick/TestHelpers_qtquick.cpp b/src/qtquick/TestHelpers_qtquick.cpp index e4809e6b..72d7fa33 100644 --- a/src/qtquick/TestHelpers_qtquick.cpp +++ b/src/qtquick/TestHelpers_qtquick.cpp @@ -57,9 +57,9 @@ TestView_qtquick::~TestView_qtquick() = default; Platform_qtquick::Platform_qtquick(int &argc, char **argv) : Platform_qt(argc, argv) - , m_qquickHelpers(new QtQuickHelpers()) { new QGuiApplication(argc, argv); + m_qquickHelpers = new QtQuickHelpers(); init(); } diff --git a/src/qtquick/views/qml/Group.qml b/src/qtquick/views/qml/Group.qml index 5ab73082..0c61bc2f 100644 --- a/src/qtquick/views/qml/Group.qml +++ b/src/qtquick/views/qml/Group.qml @@ -26,7 +26,7 @@ Rectangle { property bool hasCustomMouseEventRedirector: false property int mouseResizeMargin: 8 readonly property bool isMDI: groupCpp && groupCpp.isMDI - readonly property bool resizeAllowed: root.isMDI && !_kddwDragController.isDragging && _kddwDockRegistry && (!_kddwDockRegistry.groupViewInMDIResize || _kddwDockRegistry.groupViewInMDIResize === groupCpp) + readonly property bool resizeAllowed: root.isMDI && !_kddwDragController.isDragging && _kddwDockRegistry && (!_kddwHelpers.groupViewInMDIResize || _kddwHelpers.groupViewInMDIResize === groupCpp) property alias tabBarHeight: tabbar.height anchors.fill: parent