From 6104fdf2e0fe65799b77e86f1adde2feba0a0c2e Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Tue, 28 Jul 2020 21:26:49 +0100 Subject: [PATCH] qml: Implemented QWidgetAdapter::setFlag FloatingWindow is frameless now. --- src/private/quick/FloatingWindowQuick.cpp | 1 + src/private/quick/QWidgetAdapter_quick.cpp | 20 +++++++++++++++++--- src/private/quick/QWidgetAdapter_quick_p.h | 3 +++ 3 files changed, 21 insertions(+), 3 deletions(-) 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; }; }