qml: Implemented QWidgetAdapter::setFlag

FloatingWindow is frameless now.
This commit is contained in:
Sergio Martins
2020-07-28 21:26:49 +01:00
parent f42f3804a1
commit 6104fdf2e0
3 changed files with 21 additions and 3 deletions

View File

@@ -40,5 +40,6 @@ void FloatingWindowQuick::init()
{
m_quickWindow->setResizeMode(QQuickView::SizeViewToRootObject);
QWidgetAdapter::setParent(m_quickWindow->contentItem());
m_quickWindow->setFlags(windowFlags());
m_quickWindow->show();
}

View File

@@ -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;
}
}
}

View File

@@ -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;
};
}