Move the "kddockwidgets_qwidget" property hack into the Qt platform
This removes the last usages of asQWidget() from the generic part.
This commit is contained in:
@@ -540,7 +540,6 @@ const Window::List DockRegistry::floatingQWindows() const
|
||||
for (Controllers::FloatingWindow *fw : m_floatingWindows) {
|
||||
if (!fw->beingDeleted()) {
|
||||
if (Window::Ptr window = fw->view()->windowHandle()) {
|
||||
window->setProperty("kddockwidgets_qwidget", QVariant::fromValue<QWidgetOrQuick *>(fw->view()->asQWidget())); // Since QWidgetWindow is private API
|
||||
windows.push_back(window);
|
||||
} else {
|
||||
qWarning() << Q_FUNC_INFO << "FloatingWindow doesn't have QWindow";
|
||||
@@ -608,8 +607,7 @@ Window::List DockRegistry::topLevels(bool excludeFloatingDocks) const
|
||||
if (!excludeFloatingDocks) {
|
||||
for (Controllers::FloatingWindow *fw : m_floatingWindows) {
|
||||
if (fw->isVisible()) {
|
||||
if (auto window = fw->view()->windowHandle()) {
|
||||
window->setProperty("kddockwidgets_qwidget", QVariant::fromValue<QWidgetOrQuick *>(fw->view()->asQWidget())); // Since QWidgetWindow is private API
|
||||
if (Window::Ptr window = fw->view()->windowHandle()) {
|
||||
windows << window;
|
||||
} else {
|
||||
qWarning() << Q_FUNC_INFO << "FloatingWindow doesn't have QWindow";
|
||||
@@ -621,7 +619,6 @@ Window::List DockRegistry::topLevels(bool excludeFloatingDocks) const
|
||||
for (Controllers::MainWindow *m : m_mainWindows) {
|
||||
if (m->isVisible()) {
|
||||
if (Window::Ptr window = m->view()->windowHandle()) {
|
||||
window->setProperty("kddockwidgets_qwidget", QVariant::fromValue<QWidgetOrQuick *>(m->view()->asQWidget()));
|
||||
windows << window;
|
||||
} else {
|
||||
qWarning() << Q_FUNC_INFO << "MainWindow doesn't have QWindow";
|
||||
|
||||
@@ -21,6 +21,14 @@ using namespace KDDockWidgets;
|
||||
|
||||
Window_qtwidgets::~Window_qtwidgets() = default;
|
||||
|
||||
Window_qtwidgets::Window_qtwidgets(QWidget *topLevel)
|
||||
: Window_qt(topLevel->windowHandle())
|
||||
{
|
||||
// QWidgetWindow is private API, we have no way for going from QWindow to the top-level QWidget
|
||||
// So set it as a property
|
||||
setProperty("kddockwidgets_qwidget", QVariant::fromValue<QWidget *>(topLevel));
|
||||
}
|
||||
|
||||
std::shared_ptr<ViewWrapper> Window_qtwidgets::rootView() const
|
||||
{
|
||||
if (!m_window)
|
||||
|
||||
@@ -18,6 +18,8 @@ class DOCKS_EXPORT Window_qtwidgets : public Window_qt
|
||||
{
|
||||
public:
|
||||
using Window_qt::Window_qt;
|
||||
|
||||
explicit Window_qtwidgets(QWidget *topLevel);
|
||||
~Window_qtwidgets() override;
|
||||
std::shared_ptr<ViewWrapper> rootView() const override;
|
||||
Window::Ptr transientParent() const override;
|
||||
|
||||
@@ -348,8 +348,8 @@ public:
|
||||
std::shared_ptr<Window> windowHandle() const override
|
||||
{
|
||||
if (QWidget *root = QWidget::window()) {
|
||||
if (QWindow *window = root->windowHandle()) {
|
||||
return std::shared_ptr<Window>(new Window_qtwidgets(window));
|
||||
if (root->windowHandle()) {
|
||||
return std::shared_ptr<Window>(new Window_qtwidgets(root));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user