diff --git a/examples/qtquick/customtitlebar/main.cpp b/examples/qtquick/customtitlebar/main.cpp index e20d141f..b040558c 100644 --- a/examples/qtquick/customtitlebar/main.cpp +++ b/examples/qtquick/customtitlebar/main.cpp @@ -15,7 +15,8 @@ #include #include #include -#include "kddockwidgets/controllers/MainWindow.h" +#include + #include #include @@ -70,7 +71,7 @@ int main(int argc, char *argv[]) // Access the main area we created in QML with DockingArea {} auto mainArea = KDDockWidgets::DockRegistry::self()->mainDockingAreas().constFirst(); - mainArea->addDockWidget(dw2->dockWidget(), KDDockWidgets::Location_OnTop); + mainArea->addDockWidget(dw2, KDDockWidgets::Location_OnTop); return app.exec(); } diff --git a/examples/qtquick/dockwidgets/main.cpp b/examples/qtquick/dockwidgets/main.cpp index 89e33cde..a34335f6 100644 --- a/examples/qtquick/dockwidgets/main.cpp +++ b/examples/qtquick/dockwidgets/main.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "kddockwidgets/controllers/MainWindow.h" +#include "kddockwidgets/views/MainWindow_qtquick.h" #include #include @@ -111,7 +111,7 @@ int main(int argc, char *argv[]) // Access the main area we created in QML with DockingArea {} auto mainArea = KDDockWidgets::DockRegistry::self()->mainDockingAreas().constFirst(); - mainArea->addDockWidget(dw2->dockWidget(), KDDockWidgets::Location_OnTop); // TODOm2: Don't require the ctrl + mainArea->addDockWidget(dw2, KDDockWidgets::Location_OnTop); return app.exec(); } diff --git a/examples/qtquick/mdi/main.cpp b/examples/qtquick/mdi/main.cpp index 022df063..72e77710 100644 --- a/examples/qtquick/mdi/main.cpp +++ b/examples/qtquick/mdi/main.cpp @@ -49,7 +49,7 @@ int main(int argc, char *argv[]) auto dw3 = new KDDockWidgets::Views::DockWidget_qtquick("Dock #3"); dw3->setGuestItem(QStringLiteral("qrc:/Guest3.qml")); - auto mainAreaView = KDDockWidgets::DockRegistry::self()->mainDockingAreas().constFirst()->view(); + auto mainAreaView = KDDockWidgets::DockRegistry::self()->mainDockingAreas().constFirst(); auto mainAreaMDI = static_cast(mainAreaView); mainAreaMDI->addDockWidget(dw1, QPoint(10, 10)); diff --git a/src/DockRegistry.cpp b/src/DockRegistry.cpp index 247bf7fc..0a01dc32 100644 --- a/src/DockRegistry.cpp +++ b/src/DockRegistry.cpp @@ -19,7 +19,7 @@ #include "private/WindowBeingDragged_p.h" #include "private/multisplitter/Item_p.h" #include "Window.h" - +#include "views/MainWindowViewInterface.h" #include "Platform.h" #include "kddockwidgets/controllers/FloatingWindow.h" #include "kddockwidgets/controllers/SideBar.h" @@ -511,9 +511,18 @@ const Controllers::MainWindow::List DockRegistry::mainwindows() const return m_mainWindows; } -const Controllers::MainWindow::List DockRegistry::mainDockingAreas() const +const QList DockRegistry::mainDockingAreas() const { - return m_mainWindows; + QList areas; + + for (auto mw : m_mainWindows) { + if (View *view = mw->view()) { + auto viewInterface = dynamic_cast(view); + areas << viewInterface; + } + } + + return areas; } const QVector DockRegistry::layouts() const diff --git a/src/DockRegistry.h b/src/DockRegistry.h index 8a1cbc09..3813ebae 100644 --- a/src/DockRegistry.h +++ b/src/DockRegistry.h @@ -39,6 +39,7 @@ class Group; namespace Views { class MainWindowMDIViewInterface; +class MainWindowViewInterface; } class MainWindowMDI; @@ -102,9 +103,9 @@ public: const QVector mainwindows() const; /// @brief returns all MainWindow instances - /// Exactly the same as mainwindows(), but with better terminology for QtQuick + /// Like mainwindows(), but with better suited for QtQuick and better terminology /// as we're phasing out the "MainWindow" name there - const QVector mainDockingAreas() const; + const QList mainDockingAreas() const; ///@brief overload returning only the ones with the specified names const QVector mainWindows(const QStringList &names); diff --git a/src/ViewWrapper.h b/src/ViewWrapper.h index db66098c..f3cf2546 100644 --- a/src/ViewWrapper.h +++ b/src/ViewWrapper.h @@ -20,11 +20,10 @@ namespace Controllers { class DropArea; } - /// @brief The base class for view wrappers /// A view wrapper is a view that doesn't own the native GUI element(QWidget, QQuickItem etc.) -/// It just adds View API to an existing GUI element -/// Useful for GUI elements that are not created by KDDW. +/// It just adds View API to an existing GUI element. Useful for GUI elements that are not created by KDDW. +/// this is optional class DOCKS_EXPORT ViewWrapper : public View { public: