diff --git a/.gitignore b/.gitignore index 2c257536d..ae83c1b5b 100644 --- a/.gitignore +++ b/.gitignore @@ -115,3 +115,5 @@ generated_plugins.cmake /book/ /src/flutter/dart/build/ /tests/flutter/linux/flutter/ephemeral +/src/.qmlls.ini +/.qmlls.ini diff --git a/CMakeLists.txt b/CMakeLists.txt index edf8cd328..77fabadbe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,6 +125,7 @@ option(KDDockWidgets_FLUTTER_TESTS_AOT "Flutter tests will be built in AOT mode" option(KDDockWidgets_NO_SPDLOG "Don't use spdlog, even if it is found." OFF) option(KDDockWidgets_USE_LLD "Use lld for linking" OFF) option(KDDockWidgets_USE_VALGRIND "Runs the tests under valgrind" OFF) +option(KDDockWidgets_QML_MODULE "The QtQuick support will be built as a QML module" ON) # change to off! list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/ECM/modules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/KDAB/modules") @@ -245,6 +246,10 @@ if(KDDW_FRONTEND_QTWIDGETS OR KDDW_FRONTEND_QTQUICK) set(KDDW_FRONTEND_QT ON) endif() +if(KDDockWidgets_QML_MODULE AND (NOT KDDW_FRONTEND_QTQUICK OR NOT KDDockWidgets_QT6)) + message(WARNING "KDDockWidgets_QML_MODULE=ON ignored. Only available for QtQuick on Qt6.") +endif() + if(KDDW_FRONTEND_FLUTTER) if(KDDW_FRONTEND_QT) message(FATAL_ERROR "The flutter frontend is not compatible with the Qt frontends. Chose a single one.") diff --git a/code.code-workspace b/code.code-workspace index 1f12199fe..383684547 100644 --- a/code.code-workspace +++ b/code.code-workspace @@ -41,7 +41,12 @@ "files.insertFinalNewline": true, "files.associations": { "*.code-workspace.template": "json" - } + }, + "qt-qml.qmlls.customExePath": "/data/secured/home/serj/Qt/6.8.1/gcc_64/bin/qmlls", + "qt-qml.qmlls.verboseOutput": true, + "qt-qml.qmlls.additionalImportPaths": [ + "/data/sources/kddockwidgets/build-dev6/com/kdab/kddockwidgets/" + ] }, "launch": { "version": "0.2.0", diff --git a/examples/qtquick/customplayground/main.qml b/examples/qtquick/customplayground/main.qml index 6a44c32fb..398110881 100644 --- a/examples/qtquick/customplayground/main.qml +++ b/examples/qtquick/customplayground/main.qml @@ -29,7 +29,7 @@ ApplicationWindow { uniqueName: "dock4" source: "qrc:/Guest4.qml" onIsFocusedChanged: { - console.log("Dock4 focus changed to: " + isFocused); + console.log("Dock4 focus changed to: " + isFocused); } } diff --git a/examples/qtquick/customseparator/main.qml b/examples/qtquick/customseparator/main.qml index 6a44c32fb..398110881 100644 --- a/examples/qtquick/customseparator/main.qml +++ b/examples/qtquick/customseparator/main.qml @@ -29,7 +29,7 @@ ApplicationWindow { uniqueName: "dock4" source: "qrc:/Guest4.qml" onIsFocusedChanged: { - console.log("Dock4 focus changed to: " + isFocused); + console.log("Dock4 focus changed to: " + isFocused); } } diff --git a/examples/qtquick/customtabbar/MyTabBar.qml b/examples/qtquick/customtabbar/MyTabBar.qml index c1f79c4d1..797a8af9c 100644 --- a/examples/qtquick/customtabbar/MyTabBar.qml +++ b/examples/qtquick/customtabbar/MyTabBar.qml @@ -33,7 +33,7 @@ KDDW.TabBarBase { Rectangle { id: addButton width: 50 - color: addButtonMouseArea.containsMouse ? (addButtonMouseArea.pressed ? "#d6ce93" : "#ffecd1" ) : "#ffecd1" + color: addButtonMouseArea.containsMouse ? (addButtonMouseArea.pressed ? "#d6ce93" : "#ffecd1") : "#ffecd1" anchors { right: parent.right top: parent.top @@ -103,7 +103,7 @@ KDDW.TabBarBase { spacing: 2 /// Needed only if you want to style hovered tabs differently - property int hoveredIndex: -1; + property int hoveredIndex: -1 /// ##HERE## The list of tabs is stored in a C++ model. This repeater populates our tab bar Repeater { @@ -112,7 +112,7 @@ KDDW.TabBarBase { id: tab height: parent.height width: 150 - readonly property bool isCurrent: index == root.groupCpp.currentIndex; + readonly property bool isCurrent: index == root.groupCpp.currentIndex color: (tabBarRow.hoveredIndex == index) ? "#d6ce93" : (isCurrent ? "#d6ce93" : "#ffecd1") border.color: "black" diff --git a/examples/qtquick/customtabbar/main.qml b/examples/qtquick/customtabbar/main.qml index f561cd155..118aae5b2 100644 --- a/examples/qtquick/customtabbar/main.qml +++ b/examples/qtquick/customtabbar/main.qml @@ -27,7 +27,7 @@ ApplicationWindow { // For demonstration purposes, show how to change title: text: qsTr("Change title of #4") onTriggered: { - dock4.title = "new title"; + dock4.title = "new title"; } } } @@ -51,13 +51,13 @@ ApplicationWindow { id: dock5 uniqueName: "dock5" Rectangle { - color: "#85baa1" - anchors.fill: parent - Text { - font.pixelSize: 25 - text: "Five" - anchors.centerIn: parent - } + color: "#85baa1" + anchors.fill: parent + Text { + font.pixelSize: 25 + text: "Five" + anchors.centerIn: parent + } } } @@ -68,8 +68,8 @@ ApplicationWindow { uniqueName: "MyMainLayout" Component.onCompleted: { - addDockWidget(dock4, KDDW.KDDockWidgets.Location_OnBottom); - dock4.addDockWidgetAsTab(dock5); + addDockWidget(dock4, KDDW.KDDockWidgets.Location_OnBottom); + dock4.addDockWidgetAsTab(dock5); } } } diff --git a/examples/qtquick/customtitlebar/main.qml b/examples/qtquick/customtitlebar/main.qml index 6a44c32fb..398110881 100644 --- a/examples/qtquick/customtitlebar/main.qml +++ b/examples/qtquick/customtitlebar/main.qml @@ -29,7 +29,7 @@ ApplicationWindow { uniqueName: "dock4" source: "qrc:/Guest4.qml" onIsFocusedChanged: { - console.log("Dock4 focus changed to: " + isFocused); + console.log("Dock4 focus changed to: " + isFocused); } } diff --git a/examples/qtquick/dockwidgets/main.qml b/examples/qtquick/dockwidgets/main.qml index 126918bd0..272f7eb39 100644 --- a/examples/qtquick/dockwidgets/main.qml +++ b/examples/qtquick/dockwidgets/main.qml @@ -86,7 +86,7 @@ ApplicationWindow { Action { text: qsTr("Close All") onTriggered: { - _kddwDockRegistry.clear(); + _kddwDockRegistry.clear(); } } @@ -94,12 +94,13 @@ ApplicationWindow { // Shows how to use direct deletion text: qsTr("Delete widget #5") onTriggered: { - dock5.deleteDockWidget(); + dock5.deleteDockWidget(); } } - MenuSeparator { } - Action { text: qsTr("&Quit") + MenuSeparator {} + Action { + text: qsTr("&Quit") onTriggered: { Qt.quit(); } @@ -129,7 +130,7 @@ ApplicationWindow { onIsOpenChanged: { // Just an example of detecting when a dockwidget is closed - console.log("Dock4 is open ? " + isOpen) + console.log("Dock4 is open ? " + isOpen); } } @@ -186,9 +187,7 @@ ApplicationWindow { // Adds dock6 but specifies a preferred initial size and it starts hidden // When toggled it will be shown on the desired dock location. // See MainWindowInstantiator_p.h for the API - addDockWidget(dock6, KDDW.KDDockWidgets.Location_OnLeft, null, - Qt.size(500, 100), KDDW.KDDockWidgets.StartHidden); - + addDockWidget(dock6, KDDW.KDDockWidgets.Location_OnLeft, null, Qt.size(500, 100), KDDW.KDDockWidgets.StartHidden); // dock7 will be tabbed with dock7: dock5.addDockWidgetAsTab(dock7); diff --git a/examples/qtquick/mdi_with_docking/main.qml b/examples/qtquick/mdi_with_docking/main.qml index c475ed0a3..f9aabfd29 100644 --- a/examples/qtquick/mdi_with_docking/main.qml +++ b/examples/qtquick/mdi_with_docking/main.qml @@ -25,12 +25,13 @@ ApplicationWindow { Action { text: qsTr("Close All") onTriggered: { - _kddwDockRegistry.clear(); + _kddwDockRegistry.clear(); } } - MenuSeparator { } - Action { text: qsTr("&Quit") + MenuSeparator {} + Action { + text: qsTr("&Quit") onTriggered: { Qt.quit(); } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e1338bfbb..a14a0a805 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -135,7 +135,6 @@ set(KDDW_FRONTEND_QTQUICK_SRCS qtquick/Helpers.cpp qtquick/ViewFactory.cpp qtquick/LayoutSaverInstantiator.cpp - qtquick/MainWindowInstantiator.cpp qtquick/MainWindowMDIInstantiator.cpp qtquick/DockWidgetInstantiator.cpp qtquick/QmlTypes.cpp @@ -257,7 +256,7 @@ endif() include(ECMGenerateHeaders) ecm_generate_headers(camelcase_HEADERS ORIGINAL CAMELCASE HEADER_NAMES Config LayoutSaver) -add_library(kddockwidgets ${KDDockWidgets_LIBRARY_MODE} ${DOCKSLIBS_SRCS} ${KDDW_PUBLIC_HEADERS}) +qt_add_library(kddockwidgets ${KDDockWidgets_LIBRARY_MODE} ${DOCKSLIBS_SRCS} ${KDDW_PUBLIC_HEADERS}) add_library(KDAB::kddockwidgets ALIAS kddockwidgets) set_target_properties(kddockwidgets PROPERTIES OUTPUT_NAME "kddockwidgets${KDDockWidgets_LIBRARY_QTID}") @@ -285,7 +284,10 @@ if(KDDW_FRONTEND_QTWIDGETS) endif() if(KDDW_FRONTEND_QTQUICK) - target_include_directories(kddockwidgets PUBLIC $) + target_include_directories( + kddockwidgets PUBLIC $ + $ + ) endif() if(KDDW_FRONTEND_FLUTTER) @@ -559,6 +561,62 @@ if(KDDW_FRONTEND_QTQUICK) qtquick/views/TitleBar.h ) + if(KDDockWidgets_QML_MODULE) + qt_policy(SET QTP0001 NEW) + function(fix_resource_paths) + foreach(SOURCE_FILE IN LISTS ARGN) + get_filename_component(FILENAME ${SOURCE_FILE} NAME) + set_source_files_properties(${SOURCE_FILE} PROPERTIES QT_RESOURCE_ALIAS ${FILENAME}) + endforeach() + endfunction() + + set(KDDW_QML_FILES + qtquick/views/qml/DockWidget.qml + qtquick/views/qml/DropArea.qml + qtquick/views/qml/TitleBarBase.qml + qtquick/views/qml/TitleBar.qml + qtquick/views/qml/Group.qml + qtquick/views/qml/FloatingWindow.qml + qtquick/views/qml/TabBarBase.qml + qtquick/views/qml/TabBar.qml + qtquick/views/qml/Separator.qml + qtquick/views/qml/MainWindowMDI.qml + qtquick/views/qml/MDIResizeHandlerHelper.qml + qtquick/views/qml/RubberBand.qml + qtquick/views/qml/TitleBarButton.qml + qtquick/views/qml/ClassicIndicatorsOverlay.qml + qtquick/views/qml/ClassicIndicator.qml + ) + + fix_resource_paths(${KDDW_QML_FILES}) + + target_compile_definitions(kddockwidgets PUBLIC KDDW_QML_MODULE) + + qt_add_qml_module( + kddockwidgets + URI + com.kdab.dockwidgets + VERSION + 2.0 + QML_FILES + ${KDDW_QML_FILES} + NO_CACHEGEN + SOURCES + KDDockWidgets.h + qtquick/MainWindowInstantiator.cpp + qtquick/MainWindowInstantiator.h + qtquick/LayoutSaverInstantiator.cpp + qtquick/LayoutSaverInstantiator.h + qtquick/DockWidgetInstantiator.cpp + qtquick/DockWidgetInstantiator.h + qtquick/MainWindowMDIInstantiator.cpp + qtquick/MainWindowMDIInstantiator.h + OUTPUT_DIRECTORY + ${CMAKE_BINARY_DIR}/com/kdab/dockwidgets + # NO_PLUGIN # For now. Feel free to enable plugin but add CI test coverage + ) + endif() + install(FILES ${KDDW_QTQUICK_HEADERS} DESTINATION ${DOCKS_INCLUDES_INSTALL_PATH}/kddockwidgets/qtquick) install(FILES ${KDDW_QTQUICK_VIEW_HEADERS} DESTINATION ${DOCKS_INCLUDES_INSTALL_PATH}/kddockwidgets/qtquick) install(FILES ${KDDW_FRONTEND_QTQUICK_VIEW_HEADERS} diff --git a/src/KDDockWidgets.cpp b/src/KDDockWidgets.cpp index a0149b2f5..1c3d10164 100644 --- a/src/KDDockWidgets.cpp +++ b/src/KDDockWidgets.cpp @@ -48,7 +48,7 @@ void KDDockWidgets::initFrontend(FrontendType type) const char *KDDockWidgets::spdlogLoggerName() { - return "com.kdab.kddockwidgets"; + return "com.kdab.dockwidgets"; } NeighbourSqueezeStrategy InitialOption::s_defaultNeighbourSqueezeStrategy = NeighbourSqueezeStrategy::AllNeighbours; diff --git a/src/KDDockWidgets.h b/src/KDDockWidgets.h index 26f0e6874..a720b6ed2 100644 --- a/src/KDDockWidgets.h +++ b/src/KDDockWidgets.h @@ -36,6 +36,11 @@ #endif +#ifdef KDDW_FRONTEND_QTQUICK +#include +#endif + + namespace KDDockWidgets::QtQuick { } namespace KDDockWidgets::QtWidgets { @@ -48,6 +53,7 @@ namespace KDDockWidgets::Flutter { namespace KDDockWidgets { QT_DOCKS_EXPORT Q_NAMESPACE +QML_ELEMENT namespace QtWidgets { class DockWidget; diff --git a/src/qtquick/DockWidgetInstantiator.h b/src/qtquick/DockWidgetInstantiator.h index 520511add..8e5610325 100644 --- a/src/qtquick/DockWidgetInstantiator.h +++ b/src/qtquick/DockWidgetInstantiator.h @@ -17,6 +17,7 @@ #include #include #include +#include namespace KDDockWidgets { @@ -32,6 +33,7 @@ namespace KDDockWidgets { class DockWidgetInstantiator : public QQuickItem { Q_OBJECT + QML_NAMED_ELEMENT(DockWidget) Q_PROPERTY(QString uniqueName READ uniqueName WRITE setUniqueName NOTIFY uniqueNameChanged) Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged) Q_PROPERTY(KDDockWidgets::QtQuick::DockWidget *dockWidget READ dockWidget NOTIFY diff --git a/src/qtquick/LayoutSaverInstantiator.h b/src/qtquick/LayoutSaverInstantiator.h index 178cdb85c..8a92a6629 100644 --- a/src/qtquick/LayoutSaverInstantiator.h +++ b/src/qtquick/LayoutSaverInstantiator.h @@ -16,7 +16,7 @@ #include "LayoutSaver.h" #include - +#include QT_BEGIN_NAMESPACE class QQuickItem; @@ -33,6 +33,7 @@ namespace KDDockWidgets { class DOCKS_EXPORT LayoutSaverInstantiator : public QObject, public LayoutSaver { Q_OBJECT + QML_NAMED_ELEMENT(LayoutSaver) Q_PROPERTY(QVector affinities READ affinities WRITE setAffinities NOTIFY affinitiesChanged) public: explicit LayoutSaverInstantiator(QObject *parent = nullptr); diff --git a/src/qtquick/MainWindowInstantiator.h b/src/qtquick/MainWindowInstantiator.h index ca40d500b..21e8cdf16 100644 --- a/src/qtquick/MainWindowInstantiator.h +++ b/src/qtquick/MainWindowInstantiator.h @@ -17,6 +17,7 @@ #include "kddockwidgets/KDDockWidgets.h" #include +#include namespace KDDockWidgets { @@ -30,6 +31,7 @@ class SideBar; class DOCKS_EXPORT MainWindowInstantiator : public QQuickItem { Q_OBJECT + QML_NAMED_ELEMENT(DockingArea) Q_PROPERTY(QString uniqueName READ uniqueName WRITE setUniqueName NOTIFY uniqueNameChanged) Q_PROPERTY(QString persistentCentralItemFileName READ persistentCentralItemFileName WRITE setPersistentCentralItemFileName NOTIFY uniqueNameChanged) Q_PROPERTY(KDDockWidgets::MainWindowOptions options READ options WRITE setOptions NOTIFY diff --git a/src/qtquick/MainWindowMDIInstantiator.h b/src/qtquick/MainWindowMDIInstantiator.h index df1efe997..c7d9a9063 100644 --- a/src/qtquick/MainWindowMDIInstantiator.h +++ b/src/qtquick/MainWindowMDIInstantiator.h @@ -17,6 +17,7 @@ #include "kddockwidgets/KDDockWidgets.h" #include +#include namespace KDDockWidgets { @@ -30,6 +31,7 @@ class SideBar; class DOCKS_EXPORT MainWindowMDIInstantiator : public QQuickItem { Q_OBJECT + QML_NAMED_ELEMENT(MDIDockingArea) Q_PROPERTY(QString uniqueName READ uniqueName WRITE setUniqueName NOTIFY uniqueNameChanged) Q_PROPERTY(QVector affinities READ affinities CONSTANT) public: diff --git a/src/qtquick/Platform.cpp b/src/qtquick/Platform.cpp index 830242962..7bb0edc23 100644 --- a/src/qtquick/Platform.cpp +++ b/src/qtquick/Platform.cpp @@ -83,7 +83,10 @@ void Platform::init() initResources(); #endif +#ifndef KDDW_QML_MODULE KDDockWidgets::registerQmlTypes(); +#endif + QQuickWindow::setDefaultAlphaBuffer(true); qGuiApp->connect(qApp, &QGuiApplication::focusObjectChanged, qApp, [this](QObject *obj) { diff --git a/src/qtquick/QmlTypes.cpp b/src/qtquick/QmlTypes.cpp index 10285600b..4b2c5f5bc 100644 --- a/src/qtquick/QmlTypes.cpp +++ b/src/qtquick/QmlTypes.cpp @@ -24,7 +24,6 @@ void KDDockWidgets::registerQmlTypes() qmlRegisterType("com.kdab.dockwidgets", 2, 0, "MDIDockingArea"); qmlRegisterType("com.kdab.dockwidgets", 2, 0, "DockWidget"); qmlRegisterType("com.kdab.dockwidgets", 2, 0, "LayoutSaver"); - qmlRegisterUncreatableMetaObject(KDDockWidgets::staticMetaObject, "com.kdab.dockwidgets", 2, 0, "KDDockWidgets", QStringLiteral("Enum access only")); } diff --git a/src/qtquick/ViewFactory.cpp b/src/qtquick/ViewFactory.cpp index 126699ad1..bb2f6db2a 100644 --- a/src/qtquick/ViewFactory.cpp +++ b/src/qtquick/ViewFactory.cpp @@ -45,6 +45,17 @@ using namespace KDDockWidgets; using namespace KDDockWidgets::QtQuick; +namespace { +QString kddwResourcePrefix() +{ +#ifdef KDDW_QML_MODULE + return QStringLiteral("qrc:/qt/qml/com/kdab/dockwidgets"); +#else + return QStringLiteral("qrc:/kddockwidgets/qtquick/views/qml"); +#endif +} +} + ViewFactory::~ViewFactory() { @@ -175,32 +186,32 @@ Core::View *ViewFactory::createMDILayout(Core::MDILayout *controller, Core::View QUrl ViewFactory::titleBarFilename() const { - return QUrl(QStringLiteral("qrc:/kddockwidgets/qtquick/views/qml/TitleBar.qml")); + return QUrl(QStringLiteral("%1/TitleBar.qml").arg(kddwResourcePrefix())); } QUrl ViewFactory::dockwidgetFilename() const { - return QUrl(QStringLiteral("qrc:/kddockwidgets/qtquick/views/qml/DockWidget.qml")); + return QUrl(QStringLiteral("%1/DockWidget.qml").arg(kddwResourcePrefix())); } QUrl ViewFactory::groupFilename() const { - return QUrl(QStringLiteral("qrc:/kddockwidgets/qtquick/views/qml/Group.qml")); + return QUrl(QStringLiteral("%1/Group.qml").arg(kddwResourcePrefix())); } QUrl ViewFactory::floatingWindowFilename() const { - return QUrl(QStringLiteral("qrc:/kddockwidgets/qtquick/views/qml/FloatingWindow.qml")); + return QUrl(QStringLiteral("%1/FloatingWindow.qml").arg(kddwResourcePrefix())); } QUrl ViewFactory::tabbarFilename() const { - return QUrl(QStringLiteral("qrc:/kddockwidgets/qtquick/views/qml/TabBar.qml")); + return QUrl(QStringLiteral("%1/TabBar.qml").arg(kddwResourcePrefix())); } QUrl ViewFactory::separatorFilename() const { - return QUrl(QStringLiteral("qrc:/kddockwidgets/qtquick/views/qml/Separator.qml")); + return QUrl(QStringLiteral("%1/Separator.qml").arg(kddwResourcePrefix())); } Core::View * diff --git a/src/qtquick/views/qml/ClassicIndicator.qml b/src/qtquick/views/qml/ClassicIndicator.qml index 3539f1275..315035c93 100644 --- a/src/qtquick/views/qml/ClassicIndicator.qml +++ b/src/qtquick/views/qml/ClassicIndicator.qml @@ -18,7 +18,7 @@ Image { property int indicatorType: KDDockWidgets.DropLocation_None readonly property bool isHovered: _kddw_overlayWindow && _kddw_overlayWindow.currentDropLocation === indicatorType - source: _kddw_overlayWindow ? ("qrc:/img/classic_indicators/" + _kddw_overlayWindow.iconName(indicatorType, isHovered) + ".png") : ""; + source: _kddw_overlayWindow ? ("qrc:/img/classic_indicators/" + _kddw_overlayWindow.iconName(indicatorType, isHovered) + ".png") : "" width: 64 height: 64 } diff --git a/src/qtquick/views/qml/ClassicIndicatorsOverlay.qml b/src/qtquick/views/qml/ClassicIndicatorsOverlay.qml index debc9c42c..85767dc4b 100644 --- a/src/qtquick/views/qml/ClassicIndicatorsOverlay.qml +++ b/src/qtquick/views/qml/ClassicIndicatorsOverlay.qml @@ -69,8 +69,7 @@ Item { width: (centerIndicator * 3) + (2 * innerMargin) height: width - visible: _kddw_overlayWindow && (_kddw_overlayWindow.innerLeftIndicatorVisible || _kddw_overlayWindow.innerRightIndicatorVisible || - _kddw_overlayWindow.innerTopIndicatorVisible || _kddw_overlayWindow.innerBottomIndicatorVisible || _kddw_overlayWindow.tabIndicatorVisible) + visible: _kddw_overlayWindow && (_kddw_overlayWindow.innerLeftIndicatorVisible || _kddw_overlayWindow.innerRightIndicatorVisible || _kddw_overlayWindow.innerTopIndicatorVisible || _kddw_overlayWindow.innerBottomIndicatorVisible || _kddw_overlayWindow.tabIndicatorVisible) ClassicIndicator { id: innerLeft diff --git a/src/qtquick/views/qml/Group.qml b/src/qtquick/views/qml/Group.qml index 30a37a7bf..df3bb111b 100644 --- a/src/qtquick/views/qml/Group.qml +++ b/src/qtquick/views/qml/Group.qml @@ -54,7 +54,6 @@ Rectangle { MouseArea { anchors.fill: parent - MDIResizeHandlerHelper { anchors { left: parent ? parent.left : undefined @@ -104,7 +103,7 @@ Rectangle { anchors { right: parent ? parent.right : undefined left: parent ? parent.left : undefined - bottom: parent ? parent.bottom : undefined + bottom: parent ? parent.bottom : undefined } height: resizeMargin @@ -132,8 +131,8 @@ Rectangle { MDIResizeHandlerHelper { anchors { - left: parent ? parent.left : undefined - top: parent ? parent.top : undefined + left: parent ? parent.left : undefined + top: parent ? parent.top : undefined } height: width @@ -179,11 +178,10 @@ Rectangle { Loader { id: titleBar readonly property QtObject titleBarCpp: root.titleBarCpp - source: groupCpp ? _kddw_widgetFactory.titleBarFilename() - : "" + source: groupCpp ? _kddw_widgetFactory.titleBarFilename() : "" anchors { - top: parent ? parent.top : undefined + top: parent ? parent.top : undefined left: parent ? parent.left : undefined right: parent ? parent.right : undefined topMargin: root.titleBarContentsMargin @@ -197,13 +195,11 @@ Rectangle { readonly property QtObject groupCpp: root.groupCpp readonly property bool hasCustomMouseEventRedirector: root.hasCustomMouseEventRedirector - source: groupCpp ? _kddw_widgetFactory.tabbarFilename() - : "" + source: groupCpp ? _kddw_widgetFactory.tabbarFilename() : "" function topAnchor() { if (root.tabsAtTop) { - return (titleBar && titleBar.visible) ? titleBar.bottom - : (parent ? parent.top : undefined); + return (titleBar && titleBar.visible) ? titleBar.bottom : (parent ? parent.top : undefined); } else { return undefined; } @@ -213,7 +209,7 @@ Rectangle { left: parent ? parent.left : undefined right: parent ? parent.right : undefined top: topAnchor() - bottom: root.tabsAtTop ? undefined : parent.bottom; + bottom: root.tabsAtTop ? undefined : parent.bottom // 1 pixel gap so we don't overlap with outer frame. We shouldn't hardcode this though leftMargin: 1 @@ -237,9 +233,7 @@ Rectangle { anchors { left: parent ? parent.left : undefined right: parent ? parent.right : undefined - top: (parent && tabbar.visible && root.tabsAtTop) ? tabbar.bottom : ((titleBar && titleBar.visible) ? titleBar.bottom - : parent ? parent.top - : undefined); + top: (parent && tabbar.visible && root.tabsAtTop) ? tabbar.bottom : ((titleBar && titleBar.visible) ? titleBar.bottom : parent ? parent.top : undefined) bottom: bottomAnchor() leftMargin: root.contentsMargin diff --git a/src/qtquick/views/qml/MDIResizeHandlerHelper.qml b/src/qtquick/views/qml/MDIResizeHandlerHelper.qml index ecfdc5034..9faa26c41 100644 --- a/src/qtquick/views/qml/MDIResizeHandlerHelper.qml +++ b/src/qtquick/views/qml/MDIResizeHandlerHelper.qml @@ -30,8 +30,8 @@ MouseArea { return Qt.ArrowCursor; } - var isFixedHeight = groupCpp && groupCpp.isFixedHeight - var isFixedWidth = groupCpp && groupCpp.isFixedWidth + var isFixedHeight = groupCpp && groupCpp.isFixedHeight; + var isFixedWidth = groupCpp && groupCpp.isFixedWidth; if (isFixedHeight && isFixedWidth) return Qt.ArrowCursor; @@ -52,9 +52,9 @@ MouseArea { onPressed: { // install event filter - groupCpp.startMDIResize() + groupCpp.startMDIResize(); // ignore event, so event filter catches press as well - mouse.accepted = false + mouse.accepted = false; } } diff --git a/tests/main343.qml b/tests/main343.qml index 0c2e8b32d..25c9fc987 100644 --- a/tests/main343.qml +++ b/tests/main343.qml @@ -9,7 +9,6 @@ Contact KDAB at for commercial licensing options. */ - import QtQuick 2.6 import QtQuick.Controls 2.12 import com.kdab.dockwidgets 2.0 as KDDW diff --git a/tests/main343_2.qml b/tests/main343_2.qml index fe5ffa3e7..d81b3e905 100644 --- a/tests/main343_2.qml +++ b/tests/main343_2.qml @@ -9,7 +9,6 @@ Contact KDAB at for commercial licensing options. */ - import QtQuick 2.6 import QtQuick.Controls 2.12 import com.kdab.dockwidgets 2.0 as KDDW diff --git a/tests/main350.qml b/tests/main350.qml index 59f8ac8fb..26b8bad36 100644 --- a/tests/main350.qml +++ b/tests/main350.qml @@ -9,7 +9,6 @@ Contact KDAB at for commercial licensing options. */ - import QtQuick 2.6 import QtQuick.Controls 2.12 import com.kdab.dockwidgets 2.0 as KDDW @@ -50,6 +49,5 @@ ApplicationWindow { addDockWidget(dock4, KDDW.KDDockWidgets.Location_OnBottom); dock5.show(); } - } } diff --git a/tests/main465.qml b/tests/main465.qml index 0edbc0969..cedd969c6 100644 --- a/tests/main465.qml +++ b/tests/main465.qml @@ -9,7 +9,6 @@ Contact KDAB at for commercial licensing options. */ - import QtQuick 2.6 import QtQuick.Controls 2.12 import com.kdab.dockwidgets 2.0 as KDDW