diff --git a/src/private/quick/FloatingWindowQuick.cpp b/src/private/quick/FloatingWindowQuick.cpp index 09b1deea..49a2ed80 100644 --- a/src/private/quick/FloatingWindowQuick.cpp +++ b/src/private/quick/FloatingWindowQuick.cpp @@ -40,5 +40,6 @@ void FloatingWindowQuick::init() { m_quickWindow->setResizeMode(QQuickView::SizeViewToRootObject); QWidgetAdapter::setParent(m_quickWindow->contentItem()); + m_quickWindow->setFlags(windowFlags()); m_quickWindow->show(); } diff --git a/src/private/quick/QWidgetAdapter_quick.cpp b/src/private/quick/QWidgetAdapter_quick.cpp index b2ee30b1..f1d1f8ae 100644 --- a/src/private/quick/QWidgetAdapter_quick.cpp +++ b/src/private/quick/QWidgetAdapter_quick.cpp @@ -27,8 +27,9 @@ using namespace KDDockWidgets; -QWidgetAdapter::QWidgetAdapter(QQuickItem *parent, Qt::WindowFlags) +QWidgetAdapter::QWidgetAdapter(QQuickItem *parent, Qt::WindowFlags flags) : QQuickItem(parent) + , m_requestedWindowFlags(flags) { this->setParent(parent); // also set parentItem @@ -179,12 +180,25 @@ QSize QWidgetAdapter::sizeHint() const return {}; } +Qt::WindowFlags QWidgetAdapter::windowFlags() const +{ + if (QWindow *w = windowHandle()) + return w->flags(); + + return m_requestedWindowFlags; +} + void QWidgetAdapter::setFlag(Qt::WindowType f, bool on) { - if (auto w = windowHandle()) { + if (QWindow *w = windowHandle()) { w->setFlag(f, on); } else { - qWarning() << Q_FUNC_INFO << "Implement me"; + // When we create a QWindow we'll set these + if (on) { + m_requestedWindowFlags |= f; + } else { + m_requestedWindowFlags &= ~f; + } } } diff --git a/src/private/quick/QWidgetAdapter_quick_p.h b/src/private/quick/QWidgetAdapter_quick_p.h index 159c14ea..5da0b6ba 100644 --- a/src/private/quick/QWidgetAdapter_quick_p.h +++ b/src/private/quick/QWidgetAdapter_quick_p.h @@ -123,6 +123,8 @@ public: QSizePolicy sizePolicy() const; QSize sizeHint() const; + Qt::WindowFlags windowFlags() const; + protected: void raiseAndActivate(); @@ -135,6 +137,7 @@ protected: private: QSize m_minimumSize = {KDDOCKWIDGETS_MIN_WIDTH, KDDOCKWIDGETS_MIN_HEIGHT}; QSize m_maximumSize = {KDDOCKWIDGETS_MAX_WIDTH, KDDOCKWIDGETS_MAX_HEIGHT}; + Qt::WindowFlags m_requestedWindowFlags; }; }