summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@qt.io>2016-09-14 16:30:22 +0200
committerPaul Olav Tvete <paul.tvete@qt.io>2016-09-18 07:02:13 +0000
commit02e34ece17ca1b24111ccb5110bfdb0c740f8923 (patch)
treeccdc52e735a856a753c53aed6778987ce262f15d /src/client
parent004c6ffdbdb91f215364740a1975b37fe54b757c (diff)
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>
Diffstat (limited to 'src/client')
-rw-r--r--src/client/qwaylandwindow.cpp9
-rw-r--r--src/client/qwaylandwindow_p.h1
2 files changed, 8 insertions, 2 deletions
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 9cbc6e231..473fe0912 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 82898152c..03c4a1e48 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;