diff --git a/code.dev-qtwidgets.code-workspace b/code.dev-qtwidgets.code-workspace index 9e57d4d9..bf8de144 100644 --- a/code.dev-qtwidgets.code-workspace +++ b/code.dev-qtwidgets.code-workspace @@ -77,7 +77,7 @@ "request": "launch", "program": "${workspaceFolder}/build-dev/bin/tst_docks", "args": [ - "tst_simple2" + "tst_restoreFloatingMinimizedState" ], "cwd": "${workspaceFolder}", "MIMode": "gdb", diff --git a/src/Controller.cpp b/src/Controller.cpp index a7d85bc8..5cfdfe15 100644 --- a/src/Controller.cpp +++ b/src/Controller.cpp @@ -37,7 +37,7 @@ Type Controller::type() const bool Controller::is(Type t) const { - return m_type == t; + return int(m_type) & int(t); } bool Controller::inDtor() const diff --git a/src/Controller.h b/src/Controller.h index a844b939..f371ed6c 100644 --- a/src/Controller.h +++ b/src/Controller.h @@ -40,6 +40,9 @@ enum class Type MainWindow = 1024, DropIndicatorOverlayInterface = 2048, ViewWrapper = 4096, + MultiSplitter = 8192 + Layout, + MDILayout = 0x4000 + Layout, + MDIArea = 0X8000, LAST = ViewWrapper // Keep last }; diff --git a/src/MDIArea.cpp b/src/MDIArea.cpp index 0a5a618f..5d7a857c 100644 --- a/src/MDIArea.cpp +++ b/src/MDIArea.cpp @@ -15,7 +15,6 @@ #include "private/DropAreaWithCentralFrame_p.h" #ifdef KDDOCKWIDGETS_QTWIDGETS -#include "views_qtwidgets/DockWidget_qtwidgets.h" #include #else #include "DockWidgetQuick.h" @@ -27,7 +26,7 @@ using namespace KDDockWidgets::Controllers; class MDIArea::Private { public: - Private(QWidgetOrQuick *parent) + Private(View *parent) : layoutWidget(new MDILayoutWidget(parent)) { } @@ -40,8 +39,8 @@ public: MDILayoutWidget *const layoutWidget; }; -MDIArea::MDIArea(QWidgetOrQuick *parent) - : QWidgetOrQuick(parent) +MDIArea::MDIArea(QWidget *parent) + : Views::View_qtwidgets(nullptr, Type::MDIArea, parent) , d(new Private(this)) { #ifdef KDDOCKWIDGETS_QTWIDGETS @@ -63,7 +62,7 @@ void MDIArea::addDockWidget(DockWidgetBase *dw, QPoint localPt, InitialOption ad if (dw->options() & DockWidgetBase::Option_MDINestable) { // We' wrap it with a drop area, so we can drag other dock widgets over this one and dock auto wrapperDW = new Controllers::DockWidget(QStringLiteral("%1-mdiWrapper").arg(dw->uniqueName())); - auto dropAreaWrapper = new DropArea(wrapperDW->view()->asQWidget(), /*isMDIWrapper= */ true); + auto dropAreaWrapper = new DropArea(wrapperDW->view(), /*isMDIWrapper= */ true); dropAreaWrapper->addDockWidget(dw, Location_OnBottom, nullptr); wrapperDW->setWidget(dropAreaWrapper); diff --git a/src/MDIArea.h b/src/MDIArea.h index d97553d0..23de7f5d 100644 --- a/src/MDIArea.h +++ b/src/MDIArea.h @@ -14,8 +14,7 @@ #include "kddockwidgets/docks_export.h" #include "KDDockWidgets.h" - -#include +#include "views_qtwidgets/View_qtwidgets.h" namespace KDDockWidgets { @@ -26,8 +25,6 @@ class Frame; class DockWidget; } -#include - /** * @brief MDIArea allows to host dock widget in MDI mode. * This is an alternative to using a full blown MainWindowMDI. @@ -37,7 +34,7 @@ class DockWidget; * * See examples/mdi_with_docking/. */ -class DOCKS_EXPORT MDIArea : public QWidget +class DOCKS_EXPORT MDIArea : public Views::View_qtwidgets { Q_OBJECT public: diff --git a/src/View.cpp b/src/View.cpp index 67e1257c..72f4e1c6 100644 --- a/src/View.cpp +++ b/src/View.cpp @@ -19,6 +19,8 @@ #include "controllers/TabBar.h" #include "controllers/MainWindow.h" +#include "private/MultiSplitter_p.h" + #include // TODOv2 remove using namespace KDDockWidgets; @@ -179,7 +181,7 @@ QSize View::hardcodedMinimumSize() bool View::is(Type t) const { - return m_type == t; + return int(m_type) & int(t); } Controllers::FloatingWindow *View::asFloatingWindowController() const @@ -238,6 +240,13 @@ Controllers::MainWindow *View::asMainWindowController() const return nullptr; } +MultiSplitter *View::asMultiSplitterView() +{ + if (is(Type::MultiSplitter)) + return static_cast(this); + return nullptr; +} + bool View::equals(const View *other) const { return other && handle() == other->handle(); diff --git a/src/View.h b/src/View.h index 767d275a..01605b18 100644 --- a/src/View.h +++ b/src/View.h @@ -34,6 +34,7 @@ namespace KDDockWidgets { class ViewWrapper; class Controller; +class MultiSplitter; namespace Controllers { class DockWidget; @@ -246,6 +247,7 @@ public: Controllers::Stack *asStackController() const; Controllers::DockWidget *asDockWidgetController() const; Controllers::MainWindow *asMainWindowController() const; + MultiSplitter *asMultiSplitterView(); protected: virtual void free_impl(); diff --git a/src/controllers/FloatingWindow.cpp b/src/controllers/FloatingWindow.cpp index e9570cee..7875f7ea 100644 --- a/src/controllers/FloatingWindow.cpp +++ b/src/controllers/FloatingWindow.cpp @@ -98,7 +98,7 @@ MainWindow *actualParent(MainWindow *candidate) FloatingWindow::FloatingWindow(QRect suggestedGeometry, MainWindow *parent) : Controller(Type::FloatingWindow, Config::self().frameworkWidgetFactory()->createFloatingWindow(this, actualParent(parent), windowFlagsToUse())) , Draggable(view(), KDDockWidgets::usesNativeDraggingAndResizing()) // FloatingWindow is only draggable when using a native title bar. Otherwise the KDDockWidgets::TitleBar is the draggable - , m_dropArea(new DropArea(view()->asQWidget())) + , m_dropArea(new DropArea(view())) , m_titleBar(new Controllers::TitleBar(this)) { view()->init(); @@ -184,7 +184,7 @@ FloatingWindow::FloatingWindow(Controllers::Frame *frame, QRect suggestedGeometr // Adding a widget will trigger onFrameCountChanged, which triggers a setVisible(true). // The problem with setVisible(true) will forget about or requested geometry and place the window at 0,0 // So disable the setVisible(true) call while in the ctor. - m_dropArea->addWidget(frame->view()->asQWidget(), KDDockWidgets::Location_OnTop, {}); + m_dropArea->addWidget(frame->view(), KDDockWidgets::Location_OnTop, {}); } } diff --git a/src/controllers/MainWindow.cpp b/src/controllers/MainWindow.cpp index d7c9082d..bd6ecaf0 100644 --- a/src/controllers/MainWindow.cpp +++ b/src/controllers/MainWindow.cpp @@ -42,9 +42,9 @@ using namespace KDDockWidgets::Controllers; static LayoutWidget *createLayoutWidget(MainWindow *mainWindow, MainWindowOptions options) { if (options & MainWindowOption_MDI) - return new MDILayoutWidget(mainWindow->view()->asQWidget()); + return new MDILayoutWidget(mainWindow->view()); - return new DropAreaWithCentralFrame(mainWindow->view()->asQWidget(), options); + return new DropAreaWithCentralFrame(mainWindow->view(), options); } class MainWindow::Private diff --git a/src/private/DropArea.cpp b/src/private/DropArea.cpp index 0237a834..41d5a0d7 100644 --- a/src/private/DropArea.cpp +++ b/src/private/DropArea.cpp @@ -19,7 +19,6 @@ #include "Utils_p.h" #include "multisplitter/Item_p.h" #include "WindowBeingDragged_p.h" -#include "views_qtwidgets/DockWidget_qtwidgets.h" #include "controllers/Frame.h" #include "controllers/FloatingWindow.h" @@ -28,7 +27,6 @@ #include "controllers/MainWindow.h" #include "views_qtwidgets/Frame_qtwidgets.h" -#include "views_qtwidgets/View_qtwidgets.h" #include @@ -41,7 +39,7 @@ using namespace KDDockWidgets::Controllers; * * @author Sérgio Martins \ */ -DropArea::DropArea(QWidgetOrQuick *parent, bool isMDIWrapper) +DropArea::DropArea(View *parent, bool isMDIWrapper) : MultiSplitter(parent) , m_isMDIWrapper(isMDIWrapper) , m_dropIndicatorOverlay(Config::self().frameworkWidgetFactory()->createDropIndicatorOverlay(this)) @@ -167,9 +165,9 @@ void DropArea::addDockWidget(DockWidgetBase *dw, Location location, } if (option.startsHidden()) { - addWidget(dw->view()->asQWidget(), location, relativeToFrame, option); + addWidget(dw->view(), location, relativeToFrame, option); } else { - addWidget(frame->view()->asQWidget(), location, relativeToFrame, option); + addWidget(frame->view(), location, relativeToFrame, option); } if (hadSingleFloatingFrame && !hasSingleFloatingFrame()) { @@ -306,13 +304,13 @@ bool DropArea::drop(WindowBeingDragged *draggedWindow, Controllers::Frame *accep case DropLocation_Top: case DropLocation_Bottom: case DropLocation_Right: - result = drop(droppedWindow->view()->asQWidget(), DropIndicatorOverlayInterface::multisplitterLocationFor(droploc), acceptingFrame); + result = drop(droppedWindow->view(), DropIndicatorOverlayInterface::multisplitterLocationFor(droploc), acceptingFrame); break; case DropLocation_OutterLeft: case DropLocation_OutterTop: case DropLocation_OutterRight: case DropLocation_OutterBottom: - result = drop(droppedWindow->view()->asQWidget(), DropIndicatorOverlayInterface::multisplitterLocationFor(droploc), nullptr); + result = drop(droppedWindow->view(), DropIndicatorOverlayInterface::multisplitterLocationFor(droploc), nullptr); break; case DropLocation_Center: qCDebug(hovering) << "Tabbing" << droppedWindow << "into" << acceptingFrame; @@ -347,19 +345,18 @@ bool DropArea::drop(WindowBeingDragged *draggedWindow, Controllers::Frame *accep return result; } -bool DropArea::drop(QWidgetOrQuick *droppedWindow, KDDockWidgets::Location location, Controllers::Frame *relativeTo) +bool DropArea::drop(View *droppedWindow, KDDockWidgets::Location location, Controllers::Frame *relativeTo) { qCDebug(docking) << "DropArea::addFrame"; - if (auto dockView = qobject_cast(droppedWindow)) { - auto dock = dockView->dockWidget(); + if (auto dock = droppedWindow->asDockWidgetController()) { if (!validateAffinity(dock)) return false; auto frame = new Controllers::Frame(); frame->addWidget(dock); - addWidget(frame->view()->asQWidget(), location, relativeTo, DefaultSizeMode::FairButFloor); - } else if (auto floatingWindow = Views::ViewWrapper_qtwidgets(droppedWindow).asFloatingWindowController()) { + addWidget(frame->view(), location, relativeTo, DefaultSizeMode::FairButFloor); + } else if (auto floatingWindow = droppedWindow->asFloatingWindowController()) { if (!validateAffinity(floatingWindow)) return false; @@ -410,8 +407,7 @@ bool DropArea::isMDIWrapper() const DockWidgetBase *DropArea::mdiDockWidgetWrapper() const { if (m_isMDIWrapper) { - auto dwView = qobject_cast(QWidget::parent()); - return dwView ? dwView->dockWidget() : nullptr; + return parentView()->asDockWidgetController(); } return nullptr; diff --git a/src/private/DropAreaWithCentralFrame.cpp b/src/private/DropAreaWithCentralFrame.cpp index b81ff3bd..d0e6a9f2 100644 --- a/src/private/DropAreaWithCentralFrame.cpp +++ b/src/private/DropAreaWithCentralFrame.cpp @@ -15,12 +15,12 @@ using namespace KDDockWidgets; -DropAreaWithCentralFrame::DropAreaWithCentralFrame(QWidgetOrQuick *parent, MainWindowOptions options) +DropAreaWithCentralFrame::DropAreaWithCentralFrame(View *parent, MainWindowOptions options) : DropArea(parent) , m_centralFrame(createCentralFrame(options)) { if (m_centralFrame) - addWidget(m_centralFrame->view()->asQWidget(), KDDockWidgets::Location_OnTop, {}); + addWidget(m_centralFrame->view(), KDDockWidgets::Location_OnTop, {}); } DropAreaWithCentralFrame::~DropAreaWithCentralFrame() diff --git a/src/private/DropAreaWithCentralFrame_p.h b/src/private/DropAreaWithCentralFrame_p.h index 5e810b7e..034c2362 100644 --- a/src/private/DropAreaWithCentralFrame_p.h +++ b/src/private/DropAreaWithCentralFrame_p.h @@ -20,7 +20,8 @@ class DOCKS_EXPORT DropAreaWithCentralFrame : public DropArea { Q_OBJECT public: - explicit DropAreaWithCentralFrame(QWidgetOrQuick *parent = {}, MainWindowOptions options = MainWindowOption_HasCentralFrame); + explicit DropAreaWithCentralFrame(View *parent = nullptr, + MainWindowOptions options = MainWindowOption_HasCentralFrame); ~DropAreaWithCentralFrame(); static Controllers::Frame *createCentralFrame(MainWindowOptions options); diff --git a/src/private/DropArea_p.h b/src/private/DropArea_p.h index b9fd33b0..a5024c7f 100644 --- a/src/private/DropArea_p.h +++ b/src/private/DropArea_p.h @@ -45,7 +45,7 @@ class DOCKS_EXPORT DropArea : public MultiSplitter { Q_OBJECT public: - explicit DropArea(QWidget *parent, bool isMDIWrapper = false); + explicit DropArea(View *parent, bool isMDIWrapper = false); ~DropArea(); void removeHover(); @@ -93,7 +93,7 @@ private: template bool validateAffinity(T *, Controllers::Frame *acceptingFrame = nullptr) const; bool drop(WindowBeingDragged *draggedWindow, Controllers::Frame *acceptingFrame, DropLocation); - bool drop(QWidget *droppedwindow, KDDockWidgets::Location location, Controllers::Frame *relativeTo); + bool drop(View *droppedwindow, KDDockWidgets::Location location, Controllers::Frame *relativeTo); Controllers::Frame *frameContainingPos(QPoint globalPos) const; void updateFloatingActions(); diff --git a/src/private/LayoutWidget.cpp b/src/private/LayoutWidget.cpp index 6c5420e5..9937e7d0 100644 --- a/src/private/LayoutWidget.cpp +++ b/src/private/LayoutWidget.cpp @@ -28,8 +28,8 @@ using namespace KDDockWidgets; using namespace KDDockWidgets::Controllers; -LayoutWidget::LayoutWidget(QWidgetOrQuick *parent) - : Views::View_qtwidgets(nullptr, Type::Layout, parent) +LayoutWidget::LayoutWidget(Type type, View *parent) + : Views::View_qtwidgets(nullptr, type, parent ? static_cast *>(parent) : nullptr) { } @@ -212,12 +212,12 @@ DockWidgetBase::List LayoutWidget::dockWidgets() const return dockWidgets; } -Controllers::Frame::List LayoutWidget::framesFrom(QWidgetOrQuick *frameOrMultiSplitter) const +Controllers::Frame::List LayoutWidget::framesFrom(View *frameOrMultiSplitter) const { - if (auto frame = qobject_cast(frameOrMultiSplitter)) + if (auto frame = frameOrMultiSplitter->asFrameController()) return { frame }; - if (auto msw = qobject_cast(frameOrMultiSplitter)) + if (auto msw = frameOrMultiSplitter->asMultiSplitterView()) return msw->frames(); return {}; diff --git a/src/private/LayoutWidget_p.h b/src/private/LayoutWidget_p.h index 69dc0c59..5c7eca69 100644 --- a/src/private/LayoutWidget_p.h +++ b/src/private/LayoutWidget_p.h @@ -65,7 +65,7 @@ class DOCKS_EXPORT LayoutWidget : public Views::View_qtwidgets { Q_OBJECT public: - explicit LayoutWidget(QWidget *parent = nullptr); + explicit LayoutWidget(Type, View *parent = nullptr); ~LayoutWidget() override; /// @brief Returns whether this layout is in a MainWindow @@ -221,7 +221,7 @@ protected: * If frameOrMultiSplitter is a Frame, it returns a list of 1 element, with that frame * If frameOrMultiSplitter is a MultiSplitter then it returns a list of all frames it contains */ - QList framesFrom(QWidget *frameOrMultiSplitter) const; + QList framesFrom(View *frameOrMultiSplitter) const; Q_SIGNALS: void visibleWidgetCountChanged(int count); diff --git a/src/private/MDILayoutWidget.cpp b/src/private/MDILayoutWidget.cpp index f06b4821..8cad5bc0 100644 --- a/src/private/MDILayoutWidget.cpp +++ b/src/private/MDILayoutWidget.cpp @@ -19,8 +19,8 @@ using namespace KDDockWidgets; using namespace KDDockWidgets::Controllers; -MDILayoutWidget::MDILayoutWidget(QWidget *parent) - : LayoutWidget(parent) +MDILayoutWidget::MDILayoutWidget(View *parent) + : LayoutWidget(Type::MDILayout, parent) , m_rootItem(new Layouting::ItemFreeContainer(this)) { setRootItem(m_rootItem); diff --git a/src/private/MDILayoutWidget_p.h b/src/private/MDILayoutWidget_p.h index eaae831d..9046d193 100644 --- a/src/private/MDILayoutWidget_p.h +++ b/src/private/MDILayoutWidget_p.h @@ -32,7 +32,7 @@ class DOCKS_EXPORT MDILayoutWidget : public LayoutWidget { Q_OBJECT public: - explicit MDILayoutWidget(QWidget *parent = nullptr); + explicit MDILayoutWidget(View *parent = nullptr); ~MDILayoutWidget() override; /// @brief docks the dock widgets into this MDI area, at the specified position diff --git a/src/private/MultiSplitter.cpp b/src/private/MultiSplitter.cpp index bc660399..213af69a 100644 --- a/src/private/MultiSplitter.cpp +++ b/src/private/MultiSplitter.cpp @@ -34,15 +34,13 @@ #include "controllers/DockWidget.h" #include "controllers/MainWindow.h" -#include "views_qtwidgets/DockWidget_qtwidgets.h" - #include using namespace KDDockWidgets; using namespace KDDockWidgets::Controllers; -MultiSplitter::MultiSplitter(QWidgetOrQuick *parent) - : LayoutWidget(parent) +MultiSplitter::MultiSplitter(View *parent) + : LayoutWidget(Type::MultiSplitter, parent) { Q_ASSERT(parent); setRootItem(new Layouting::ItemBoxContainer(this)); @@ -60,7 +58,7 @@ MultiSplitter::~MultiSplitter() { } -bool MultiSplitter::validateInputs(QWidgetOrQuick *widget, Location location, +bool MultiSplitter::validateInputs(View *widget, Location location, const Controllers::Frame *relativeToFrame, InitialOption option) const { if (!widget) { @@ -68,12 +66,10 @@ bool MultiSplitter::validateInputs(QWidgetOrQuick *widget, Location location, return false; } - const bool isDockWidget = qobject_cast(widget); + const bool isDockWidget = widget->is(Type::DockWidget); const bool isStartHidden = option.startsHidden(); - Views::ViewWrapper_qtwidgets wrapper(widget); - - if (!wrapper.is(Type::Frame) && !wrapper.is(Type::Layout) && !isDockWidget) { + if (!widget->is(Type::Frame) && !widget->is(Type::Layout) && !isDockWidget) { qWarning() << "Unknown widget type" << widget; return false; } @@ -83,12 +79,12 @@ bool MultiSplitter::validateInputs(QWidgetOrQuick *widget, Location location, return false; } - if (relativeToFrame && relativeToFrame->view()->asQWidget() == widget) { + if (relativeToFrame && relativeToFrame->view()->equals(widget)) { qWarning() << "widget can't be relative to itself"; return false; } - Layouting::Item *item = itemForFrame(qobject_cast(widget)); + Layouting::Item *item = itemForFrame(widget->asFrameController()); if (containsItem(item)) { qWarning() << "MultiSplitter::addWidget: Already contains" << widget; @@ -114,13 +110,12 @@ bool MultiSplitter::validateInputs(QWidgetOrQuick *widget, Location location, return true; } -void MultiSplitter::addWidget(QWidget *w, Location location, +void MultiSplitter::addWidget(View *w, Location location, Controllers::Frame *relativeToWidget, InitialOption option) { - Views::ViewWrapper_qtwidgets wrapper(w); - auto frame = wrapper.asFrameController(); + auto frame = w->asFrameController(); if (itemForFrame(frame) != nullptr) { // Item already exists, remove it. // Changing the frame parent will make the item clean itself up. It turns into a placeholder and is removed by unrefOldPlaceholders @@ -140,8 +135,7 @@ void MultiSplitter::addWidget(QWidget *w, Location location, Controllers::Frame::List frames = framesFrom(w); unrefOldPlaceholders(frames); - auto dwView = qobject_cast(w); - auto dw = dwView ? dwView->dockWidget() : nullptr; + auto dw = w->asDockWidgetController(); if (frame) { newItem = new Layouting::Item(this); @@ -151,7 +145,7 @@ void MultiSplitter::addWidget(QWidget *w, Location location, frame = new Controllers::Frame(); newItem->setGuestWidget(frame->view()); frame->addWidget(dw, option); - } else if (auto ms = qobject_cast(w)) { + } else if (auto ms = w->asMultiSplitterView()) { newItem = ms->m_rootItem; newItem->setHostWidget(this); diff --git a/src/private/MultiSplitter_p.h b/src/private/MultiSplitter_p.h index 6ca75049..7b7bd57b 100644 --- a/src/private/MultiSplitter_p.h +++ b/src/private/MultiSplitter_p.h @@ -52,13 +52,13 @@ class DOCKS_EXPORT MultiSplitter : public LayoutWidget { Q_OBJECT public: - explicit MultiSplitter(QWidget *parent = nullptr); + explicit MultiSplitter(View *parent = nullptr); ~MultiSplitter() override; /** * @brief Adds a widget to this MultiSplitter. */ - void addWidget(QWidget *widget, KDDockWidgets::Location location, + void addWidget(View *widget, KDDockWidgets::Location location, Controllers::Frame *relativeTo = nullptr, InitialOption option = DefaultSizeMode::Fair); @@ -98,7 +98,7 @@ private: Layouting::ItemBoxContainer *rootItem() const; // For debug/hardening - bool validateInputs(QWidget *widget, KDDockWidgets::Location location, + bool validateInputs(View *widget, KDDockWidgets::Location location, const Controllers::Frame *relativeToFrame, InitialOption option) const; diff --git a/src/views_qtwidgets/ViewWrapper_qtwidgets.cpp b/src/views_qtwidgets/ViewWrapper_qtwidgets.cpp index 4acfecbe..104e007e 100644 --- a/src/views_qtwidgets/ViewWrapper_qtwidgets.cpp +++ b/src/views_qtwidgets/ViewWrapper_qtwidgets.cpp @@ -20,6 +20,10 @@ #include "views_qtwidgets/TabBar_qtwidgets.h" #include "views_qtwidgets/TitleBar_qtwidgets.h" +#include "private/MultiSplitter_p.h" +#include "private/MDILayoutWidget_p.h" +#include "MDIArea.h" + #include using namespace KDDockWidgets; @@ -61,9 +65,14 @@ static Controller *controllerForWidget(QWidget *widget) if (auto view = qobject_cast(widget)) return view->controller(); break; + case Type::MultiSplitter: + case Type::MDILayout: case Type::Layout: if (auto view = qobject_cast(widget)) return view->controller(); + case Type::MDIArea: + if (auto view = qobject_cast(widget)) + return view->controller(); break; case Type::SideBar: if (auto view = qobject_cast(widget)) @@ -197,6 +206,12 @@ bool ViewWrapper_qtwidgets::is(Type t) const return qobject_cast(m_widget); case Type::Layout: return qobject_cast(m_widget); + case Type::MultiSplitter: + return qobject_cast(m_widget); + case Type::MDILayout: + return qobject_cast(m_widget); + case Type::MDIArea: + return qobject_cast(m_widget); case Type::LayoutItem: case Type::DropIndicatorOverlayInterface: qWarning() << Q_FUNC_INFO << "These are framework internals that are not wrapped"; diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index b856831f..6465789d 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -428,7 +428,7 @@ void TestDocks::tst_sizeAfterRedock() QCOMPARE(suggestedDropRect.height(), height2); } - dropArea->drop(dw2->floatingWindow()->view()->asQWidget(), Location_OnBottom, nullptr); + dropArea->drop(dw2->floatingWindow()->view(), Location_OnBottom, nullptr); QCOMPARE(dw2->dptr()->frame()->height(), height2); @@ -4466,7 +4466,7 @@ void TestDocks::tst_moreTitleBarCornerCases() dock2->show(); auto fw1 = dock1->floatingWindow(); auto fw2 = dock2->floatingWindow(); - fw1->dropArea()->drop(fw2->view()->asQWidget(), Location_OnRight, nullptr); + fw1->dropArea()->drop(fw2->view(), Location_OnRight, nullptr); QVERIFY(fw1->titleBar()->isVisible()); QVERIFY(dock1->dptr()->frame()->titleBar()->isVisible()); QVERIFY(dock2->dptr()->frame()->titleBar()->isVisible()); @@ -6034,7 +6034,7 @@ void TestDocks::tst_maxSizeHonouredWhenDropped() dock2->setFloating(true); auto fw = dock2->floatingWindow(); - m1->dropArea()->drop(fw->view()->asQWidget(), Location_OnLeft, nullptr); + m1->dropArea()->drop(fw->view(), Location_OnLeft, nullptr); QCOMPARE(dock2->dptr()->frame()->width(), droppedWidth); } @@ -6243,7 +6243,7 @@ void TestDocks::tst_floatingAction() QSignalSpy spy21(dock2, &DockWidgetBase::isFloatingChanged); auto dropArea1 = dock1->floatingWindow()->dropArea(); - dropArea1->drop(oldFw2->view()->asQWidget(), Location_OnRight, nullptr); + dropArea1->drop(oldFw2->view(), Location_OnRight, nullptr); QCOMPARE(spy1.count(), 1); QCOMPARE(spy2.count(), 1); diff --git a/tests/utils.cpp b/tests/utils.cpp index b48b8c38..6b17d086 100644 --- a/tests/utils.cpp +++ b/tests/utils.cpp @@ -282,7 +282,7 @@ void KDDockWidgets::Tests::nestDockWidget(DockWidgetBase *dock, DropArea *dropAr frame->addWidget(dock); dock->d->frame()->setObjectName(dock->objectName()); - dropArea->addWidget(frame->view()->asQWidget(), location, relativeTo); + dropArea->addWidget(frame->view(), location, relativeTo); QVERIFY(dropArea->checkSanity()); }