diff --git a/src/Controller.cpp b/src/Controller.cpp index 9468552c..8fa9b031 100644 --- a/src/Controller.cpp +++ b/src/Controller.cpp @@ -118,7 +118,7 @@ bool Controller::close() std::shared_ptr Controller::window() const { - return view()->window(); + return view()->rootView(); } void Controller::show() const diff --git a/src/View.h b/src/View.h index 19473253..d28583bc 100644 --- a/src/View.h +++ b/src/View.h @@ -212,8 +212,7 @@ public: /// @brief Returns the top-level gui element which this view is inside /// It's the root view of the window. - /// Like QWidget::window() // TODOv2 rename window() to rootView() - virtual std::shared_ptr window() const = 0; + virtual std::shared_ptr rootView() const = 0; /// @brief Returns the window this view is inside /// For the Qt frontend, this wraps a QWindow. diff --git a/src/controllers/DockWidget.cpp b/src/controllers/DockWidget.cpp index 09ed56be..6dcfe35f 100644 --- a/src/controllers/DockWidget.cpp +++ b/src/controllers/DockWidget.cpp @@ -122,7 +122,7 @@ void DockWidget::addDockWidgetToContainingWindow(DockWidget *other, DockWidget *relativeTo, InitialOption initialOption) { - if (auto mainWindow = view()->window()->asMainWindowController()) { + if (auto mainWindow = view()->rootView()->asMainWindowController()) { // It's inside a main window. Simply use the main window API. mainWindow->addDockWidget(other, location, relativeTo, initialOption); return; @@ -510,7 +510,7 @@ bool DockWidget::skipsRestore() const void DockWidget::setFloatingGeometry(QRect geometry) { if (isOpen() && isFloating()) { - view()->window()->setGeometry(geometry); + view()->rootView()->setGeometry(geometry); } else { d->m_lastPosition->setLastFloatingGeometry(geometry); } @@ -518,7 +518,7 @@ void DockWidget::setFloatingGeometry(QRect geometry) Controllers::FloatingWindow *DockWidget::floatingWindow() const { - if (auto fw = view()->window()->asFloatingWindowController()) + if (auto fw = view()->rootView()->asFloatingWindowController()) return fw; return nullptr; @@ -644,7 +644,7 @@ bool DockWidget::Private::eventFilter(QObject *watched, QEvent *event) { const bool isWindowActivate = event->type() == QEvent::WindowActivate; const bool isWindowDeactivate = event->type() == QEvent::WindowDeactivate; - if ((isWindowActivate || isWindowDeactivate) && watched == q->view()->window()->asQObject()) + if ((isWindowActivate || isWindowDeactivate) && watched == q->view()->rootView()->asQObject()) Q_EMIT q->windowActiveAboutToChange(isWindowActivate); return QObject::eventFilter(watched, event); @@ -653,7 +653,7 @@ bool DockWidget::Private::eventFilter(QObject *watched, QEvent *event) void DockWidget::Private::updateTitle() { if (q->isFloating()) - q->view()->window()->setWindowTitle(title); + q->view()->rootView()->setWindowTitle(title); toggleAction->setText(title); } diff --git a/src/controllers/DockWidget_p.h b/src/controllers/DockWidget_p.h index d31af2db..81b4e554 100644 --- a/src/controllers/DockWidget_p.h +++ b/src/controllers/DockWidget_p.h @@ -51,7 +51,7 @@ public: */ Controllers::FloatingWindow *floatingWindow() const { - if (auto fw = q->view()->window()->asFloatingWindowController()) + if (auto fw = q->view()->rootView()->asFloatingWindowController()) return fw; return nullptr; diff --git a/src/controllers/Frame.cpp b/src/controllers/Frame.cpp index 471fd3e9..55445659 100644 --- a/src/controllers/Frame.cpp +++ b/src/controllers/Frame.cpp @@ -550,7 +550,7 @@ FloatingWindow *Frame::floatingWindow() const if (auto fw = p->asFloatingWindowController()) return fw; - if (p->equals(view()->window())) { + if (p->equals(view()->rootView())) { // We stop at the window. (top-levels can have parent, but we're not interested) return nullptr; } diff --git a/src/controllers/Stack.cpp b/src/controllers/Stack.cpp index 05e38d9e..7f6ef99a 100644 --- a/src/controllers/Stack.cpp +++ b/src/controllers/Stack.cpp @@ -116,7 +116,7 @@ std::unique_ptr Stack::makeWindow() // This is called when using Flag_HideTitleBarWhenTabsVisible // For detaching individual tabs, TabBar::makeWindow() is called. - if (auto fw = view()->window()->asFloatingWindowController()) { + if (auto fw = view()->rootView()->asFloatingWindowController()) { if (fw->hasSingleFrame()) { // We're already in a floating window, and it only has 1 dock widget. // So there's no detachment to be made, we just move the window. @@ -138,7 +138,7 @@ std::unique_ptr Stack::makeWindow() bool Stack::isWindow() const { - if (auto fw = view()->window()->asFloatingWindowController()) { + if (auto fw = view()->rootView()->asFloatingWindowController()) { // Case of dragging via the tab widget when the title bar is hidden return fw->hasSingleFrame(); } diff --git a/src/controllers/TitleBar.cpp b/src/controllers/TitleBar.cpp index adcc91c3..a2dee0a3 100644 --- a/src/controllers/TitleBar.cpp +++ b/src/controllers/TitleBar.cpp @@ -423,13 +423,13 @@ bool TitleBar::closeButtonEnabled() const std::unique_ptr TitleBar::makeWindow() { - if (!isVisible() && view()->window()->isVisible() && !(Config::self().flags() & Config::Flag_ShowButtonsOnTabBarIfTitleBarHidden)) { + if (!isVisible() && view()->rootView()->isVisible() && !(Config::self().flags() & Config::Flag_ShowButtonsOnTabBarIfTitleBarHidden)) { // When using Flag_ShowButtonsOnTabBarIfTitleBarHidden we forward the call from the tab bar's // buttons to the title bar's buttons, just to reuse logic qWarning() << "TitleBar::makeWindow shouldn't be called on invisible title bar" - << this << view()->window()->isVisible(); + << this << view()->rootView()->isVisible(); if (m_frame) { qWarning() << "this=" << this << "; actual=" << m_frame->actualTitleBar(); } else if (m_floatingWindow) { diff --git a/src/private/DockRegistry.cpp b/src/private/DockRegistry.cpp index cd5110af..f2b8f7c2 100644 --- a/src/private/DockRegistry.cpp +++ b/src/private/DockRegistry.cpp @@ -656,7 +656,7 @@ void DockRegistry::clear(const DockWidgetBase::List &dockWidgets, void DockRegistry::ensureAllFloatingWidgetsAreMorphed() { for (DockWidgetBase *dw : qAsConst(m_dockWidgets)) { - if (dw->view()->window()->equals(dw->view()) && dw->isVisible()) + if (dw->view()->rootView()->equals(dw->view()) && dw->isVisible()) dw->d->morphIntoFloatingWindow(); } } diff --git a/src/private/WindowBeingDragged.cpp b/src/private/WindowBeingDragged.cpp index f97b26be..6992d85b 100644 --- a/src/private/WindowBeingDragged.cpp +++ b/src/private/WindowBeingDragged.cpp @@ -163,7 +163,7 @@ bool WindowBeingDragged::contains(LayoutWidget *layoutWidget) const if (m_floatingWindow) return m_floatingWindow->layoutWidget() == layoutWidget; - if (auto fw = m_draggableWidget->window()->asFloatingWindowController()) { + if (auto fw = m_draggableWidget->rootView()->asFloatingWindowController()) { // We're not dragging via the floating window itself, but via the tab bar. Still might represent floating window though. return fw->layoutWidget() == layoutWidget && fw->hasSingleFrame(); } diff --git a/src/qtquick/views/ViewWrapper_qtquick.cpp b/src/qtquick/views/ViewWrapper_qtquick.cpp index 1b6522fb..802f3009 100644 --- a/src/qtquick/views/ViewWrapper_qtquick.cpp +++ b/src/qtquick/views/ViewWrapper_qtquick.cpp @@ -160,7 +160,7 @@ bool ViewWrapper_qtquick::is(Type t) const return false; } -std::shared_ptr ViewWrapper_qtquick::window() const +std::shared_ptr ViewWrapper_qtquick::rootView() const { // return std::shared_ptr(new ViewWrapper_qtquick(m_item->window())); return {}; diff --git a/src/qtquick/views/ViewWrapper_qtquick.h b/src/qtquick/views/ViewWrapper_qtquick.h index 1d113b3d..6682ee24 100644 --- a/src/qtquick/views/ViewWrapper_qtquick.h +++ b/src/qtquick/views/ViewWrapper_qtquick.h @@ -45,7 +45,7 @@ public: std::shared_ptr childViewAt(QPoint) const override; QVector> childViews() const override; std::shared_ptr windowHandle() const override; - std::shared_ptr window() const override; + std::shared_ptr rootView() const override; std::shared_ptr parentView() const override; void setParent(View *) override; // TODOv2: Rename to setParentView HANDLE handle() const override; diff --git a/src/qtquick/views/View_qtquick.h b/src/qtquick/views/View_qtquick.h index 1a55d093..e8a033d8 100644 --- a/src/qtquick/views/View_qtquick.h +++ b/src/qtquick/views/View_qtquick.h @@ -413,7 +413,7 @@ public: return child ? asQQuickWrapper(child) : nullptr; } - std::shared_ptr window() const override + std::shared_ptr rootView() const override { return {}; } diff --git a/src/qtwidgets/DebugWindow.cpp b/src/qtwidgets/DebugWindow.cpp index 4e772aa1..97a1fc6f 100644 --- a/src/qtwidgets/DebugWindow.cpp +++ b/src/qtwidgets/DebugWindow.cpp @@ -242,7 +242,7 @@ DebugWindow::DebugWindow(QWidget *parent) connect(button, &QPushButton::clicked, this, [] { const auto layouts = DockRegistry::self()->layouts(); for (auto l : layouts) { - auto tlw = l->view()->window(); + auto tlw = l->view()->rootView(); tlw->resize(tlw->size() + QSize(1, 1)); } }); diff --git a/src/qtwidgets/views/ViewWrapper_qtwidgets.cpp b/src/qtwidgets/views/ViewWrapper_qtwidgets.cpp index 6040332f..3dc47802 100644 --- a/src/qtwidgets/views/ViewWrapper_qtwidgets.cpp +++ b/src/qtwidgets/views/ViewWrapper_qtwidgets.cpp @@ -235,7 +235,7 @@ bool ViewWrapper_qtwidgets::is(Type t) const return false; } -std::shared_ptr ViewWrapper_qtwidgets::window() const +std::shared_ptr ViewWrapper_qtwidgets::rootView() const { if (auto w = m_widget->window()) return std::shared_ptr(new ViewWrapper_qtwidgets(w)); diff --git a/src/qtwidgets/views/ViewWrapper_qtwidgets.h b/src/qtwidgets/views/ViewWrapper_qtwidgets.h index 49217f7c..b083398b 100644 --- a/src/qtwidgets/views/ViewWrapper_qtwidgets.h +++ b/src/qtwidgets/views/ViewWrapper_qtwidgets.h @@ -43,7 +43,7 @@ public: void setSize(int width, int height) override; bool is(Type) const override; std::shared_ptr windowHandle() const override; - std::shared_ptr window() const override; + std::shared_ptr rootView() const override; std::shared_ptr parentView() const override; void setParent(View *) override; diff --git a/src/qtwidgets/views/View_qtwidgets.h b/src/qtwidgets/views/View_qtwidgets.h index f3371d85..8f45f3ba 100644 --- a/src/qtwidgets/views/View_qtwidgets.h +++ b/src/qtwidgets/views/View_qtwidgets.h @@ -375,7 +375,7 @@ public: return reinterpret_cast(this); } - std::shared_ptr window() const override + std::shared_ptr rootView() const override { if (auto w = QWidget::window()) { ViewWrapper *wrapper = new ViewWrapper_qtwidgets(w); diff --git a/tests/utils.cpp b/tests/utils.cpp index 86dbf594..cfe0fddc 100644 --- a/tests/utils.cpp +++ b/tests/utils.cpp @@ -194,7 +194,7 @@ void KDDockWidgets::Tests::doubleClickOn(QPoint globalPos, View *receiver) QCursor::setPos(globalPos); pressOn(globalPos, receiver); // double-click involves an initial press - QMouseEvent ev(QEvent::MouseButtonDblClick, receiver->mapFromGlobal(globalPos), receiver->window()->mapFromGlobal(globalPos), globalPos, + QMouseEvent ev(QEvent::MouseButtonDblClick, receiver->mapFromGlobal(globalPos), receiver->rootView()->mapFromGlobal(globalPos), globalPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); if (auto actualReceiver = receiver->property("titleBarMouseArea").value()) { @@ -219,7 +219,7 @@ void KDDockWidgets::Tests::doubleClickOn(QPoint globalPos, Window::Ptr receiver) void KDDockWidgets::Tests::pressOn(QPoint globalPos, View *receiver) { QCursor::setPos(globalPos); - QMouseEvent ev(QEvent::MouseButtonPress, receiver->mapFromGlobal(globalPos), receiver->window()->mapFromGlobal(globalPos), globalPos, + QMouseEvent ev(QEvent::MouseButtonPress, receiver->mapFromGlobal(globalPos), receiver->rootView()->mapFromGlobal(globalPos), globalPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); Platform::instance()->sendEvent(receiver, &ev); } @@ -234,7 +234,7 @@ void KDDockWidgets::Tests::pressOn(QPoint globalPos, Window::Ptr receiver) void KDDockWidgets::Tests::releaseOn(QPoint globalPos, View *receiver) { - QMouseEvent ev(QEvent::MouseButtonRelease, receiver->mapFromGlobal(globalPos), receiver->window()->mapFromGlobal(globalPos), globalPos, + QMouseEvent ev(QEvent::MouseButtonRelease, receiver->mapFromGlobal(globalPos), receiver->rootView()->mapFromGlobal(globalPos), globalPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); Platform::instance()->sendEvent(receiver, &ev); } @@ -263,7 +263,7 @@ void KDDockWidgets::Tests::moveMouseTo(QPoint globalDest, View *receiver) } QCursor::setPos(globalSrc); // Since some code uses QCursor::pos() - QMouseEvent ev(QEvent::MouseMove, receiver->mapFromGlobal(globalSrc), receiver->window()->mapFromGlobal(globalSrc), globalSrc, + QMouseEvent ev(QEvent::MouseMove, receiver->mapFromGlobal(globalSrc), receiver->rootView()->mapFromGlobal(globalSrc), globalSrc, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); if (!receiverP) {