diff --git a/src/controllers/DockWidget.cpp b/src/controllers/DockWidget.cpp index 9e3908f1..b0f72d83 100644 --- a/src/controllers/DockWidget.cpp +++ b/src/controllers/DockWidget.cpp @@ -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()->asQWidget()->window()) + if ((isWindowActivate || isWindowDeactivate) && watched == q->view()->window()->asQObject()) Q_EMIT q->windowActiveAboutToChange(isWindowActivate); return QObject::eventFilter(watched, event); diff --git a/src/private/DockRegistry.cpp b/src/private/DockRegistry.cpp index b14e543d..3074e8a9 100644 --- a/src/private/DockRegistry.cpp +++ b/src/private/DockRegistry.cpp @@ -582,7 +582,8 @@ Controllers::FloatingWindow *DockRegistry::floatingWindowForHandle(Window::Ptr w Controllers::FloatingWindow *DockRegistry::floatingWindowForHandle(WId hwnd) const { for (Controllers::FloatingWindow *fw : m_floatingWindows) { - if (fw->view()->asQWidget()->windowHandle() && fw->view()->asQWidget()->windowHandle()->winId() == hwnd) + Window::Ptr window = fw->view()->windowHandle(); + if (window && window->handle() == hwnd) return fw; } @@ -599,17 +600,6 @@ Controllers::MainWindow *DockRegistry::mainWindowForHandle(Window::Ptr window) c return nullptr; } -QWidgetOrQuick *DockRegistry::topLevelForHandle(Window::Ptr windowHandle) const -{ - if (auto fw = floatingWindowForHandle(windowHandle)) - return fw->view()->asQWidget(); - - if (auto mw = mainWindowForHandle(windowHandle)) - return mw->view()->asQWidget(); - - return nullptr; -} - Window::List DockRegistry::topLevels(bool excludeFloatingDocks) const { Window::List windows; @@ -669,7 +659,7 @@ void DockRegistry::clear(const DockWidgetBase::List &dockWidgets, void DockRegistry::ensureAllFloatingWidgetsAreMorphed() { for (DockWidgetBase *dw : qAsConst(m_dockWidgets)) { - if (dw->view()->asQWidget()->window() == dw->view()->asQWidget() && dw->isVisible()) + if (dw->view()->window()->equals(dw->view()) && dw->isVisible()) dw->d->morphIntoFloatingWindow(); } } diff --git a/src/private/DockRegistry_p.h b/src/private/DockRegistry_p.h index d3205b70..130b1404 100644 --- a/src/private/DockRegistry_p.h +++ b/src/private/DockRegistry_p.h @@ -128,11 +128,6 @@ public: ///@brief returns the MainWindow with handle @p windowHandle Controllers::MainWindow *mainWindowForHandle(Window::Ptr windowHandle) const; - ///@brief returns the top level widget associated with the specified QWindow. - /// For QtWidgets, it returns a QWidget which is either a KDDockWidgets::MainWindow or a FloatingWindow. - /// For QtQuick ir returns the same, but the type is a QWidgetAdapter (a QQuickItem), not QWidget obviously. - QWidgetOrQuick *topLevelForHandle(Window::Ptr windowHandle) const; - ///@brief Returns the list with all visiblye top-level parents of our FloatingWindow and MainWindow instances. /// /// Typically these are the FloatingWindows and MainWindows themselves. However, since a