diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2016-09-14 16:30:22 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2016-09-18 07:02:13 +0000 |
commit | 02e34ece17ca1b24111ccb5110bfdb0c740f8923 (patch) | |
tree | ccdc52e735a856a753c53aed6778987ce262f15d | |
parent | 004c6ffdbdb91f215364740a1975b37fe54b757c (diff) | |
download | qtwayland-02e34ece17ca1b24111ccb5110bfdb0c740f8923.tar.gz |
Fix FramelessWindowHint
setFlags() works just like setWindowState(): we have to use the supplied
parameter because the window's state hasn't been updated yet.
Change-Id: I223e01ef192f30911697e449669e745f0ad59d99
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@hawaiios.org>
-rw-r--r-- | src/client/qwaylandwindow.cpp | 9 | ||||
-rw-r--r-- | src/client/qwaylandwindow_p.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index 9cbc6e23..473fe091 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -196,6 +196,7 @@ void QWaylandWindow::initWindow() setMask(window()->mask()); setWindowStateInternal(window()->windowState()); handleContentOrientationChange(window()->contentOrientation()); + mFlags = window()->flags(); } bool QWaylandWindow::shouldCreateShellSurface() const @@ -579,6 +580,9 @@ void QWaylandWindow::setWindowFlags(Qt::WindowFlags flags) { if (mShellSurface) mShellSurface->setWindowFlags(flags); + + mFlags = flags; + createDecoration(); } bool QWaylandWindow::createDecoration() @@ -613,9 +617,9 @@ bool QWaylandWindow::createDecoration() default: break; } - if (window()->flags() & Qt::FramelessWindowHint || isFullscreen()) + if (mFlags & Qt::FramelessWindowHint || isFullscreen()) decoration = false; - if (window()->flags() & Qt::BypassWindowManagerHint) + if (mFlags & Qt::BypassWindowManagerHint) decoration = false; if (mSubSurfaceWindow) decoration = false; @@ -663,6 +667,7 @@ bool QWaylandWindow::createDecoration() QMargins m = frameMargins(); subsurf->set_position(pos.x() + m.left(), pos.y() + m.top()); } + QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(), geometry().size())); } return mWindowDecoration; diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h index 82898152..03c4a1e4 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -237,6 +237,7 @@ protected: QIcon mWindowIcon; Qt::WindowState mState; + Qt::WindowFlags mFlags; QRegion mMask; QWaylandShmBackingStore *mBackingStore; |