macOS: Base window collection behavior on the correct window flags
When QCocoaWindow::setWindowFlags is called, the window()'s flags have not been updated, so re-computing the collection behavior based on those would not be correct. Change-Id: I5512da75104483eac7100880c164a9d08fd82984 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This commit is contained in:
parent
d2ee858194
commit
8912c2bd9d
@ -558,14 +558,8 @@ void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags)
|
|||||||
m_inSetStyleMask = true;
|
m_inSetStyleMask = true;
|
||||||
m_view.window.styleMask = windowStyleMask(flags);
|
m_view.window.styleMask = windowStyleMask(flags);
|
||||||
m_inSetStyleMask = false;
|
m_inSetStyleMask = false;
|
||||||
m_view.window.level = this->windowLevel(flags);
|
|
||||||
|
|
||||||
m_view.window.hasShadow = !(flags & Qt::NoDropShadowWindowHint);
|
Qt::WindowType type = static_cast<Qt::WindowType>(int(flags & Qt::WindowType_Mask));
|
||||||
|
|
||||||
if (!(flags & Qt::FramelessWindowHint))
|
|
||||||
setWindowTitle(window()->title());
|
|
||||||
|
|
||||||
Qt::WindowType type = window()->type();
|
|
||||||
if ((type & Qt::Popup) != Qt::Popup && (type & Qt::Dialog) != Qt::Dialog) {
|
if ((type & Qt::Popup) != Qt::Popup && (type & Qt::Dialog) != Qt::Dialog) {
|
||||||
NSWindowCollectionBehavior behavior = m_view.window.collectionBehavior;
|
NSWindowCollectionBehavior behavior = m_view.window.collectionBehavior;
|
||||||
if (flags & Qt::WindowFullscreenButtonHint) {
|
if (flags & Qt::WindowFullscreenButtonHint) {
|
||||||
@ -577,6 +571,16 @@ void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags)
|
|||||||
}
|
}
|
||||||
m_view.window.collectionBehavior = behavior;
|
m_view.window.collectionBehavior = behavior;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set styleMask and collectionBehavior before applying window level, as
|
||||||
|
// the window level change will trigger verification of the two properties.
|
||||||
|
m_view.window.level = this->windowLevel(flags);
|
||||||
|
|
||||||
|
m_view.window.hasShadow = !(flags & Qt::NoDropShadowWindowHint);
|
||||||
|
|
||||||
|
if (!(flags & Qt::FramelessWindowHint))
|
||||||
|
setWindowTitle(window()->title());
|
||||||
|
|
||||||
setWindowZoomButton(flags);
|
setWindowZoomButton(flags);
|
||||||
|
|
||||||
// Make window ignore mouse events if WindowTransparentForInput is set.
|
// Make window ignore mouse events if WindowTransparentForInput is set.
|
||||||
|
Loading…
Reference in New Issue
Block a user