macOS: Treat explicitly set Qt::SubWindows as not needing a NSWindow
We used to have logic that explicitly marked a QWindow as "embedded",
but we now resolve this dynamically based on whether or not we have
a parent window owned by Qt or not.
As part of this refactoring the fix for QTBUG-63443 in ac35f9c44c
got lost. We restore the behavior by treating Qt::SubWindow as a
reason not to create a NSWindow for a view. This flag is set by
QMenuPrivate::moveWidgetToPlatformItem already.
Fixes: QTBUG-63443
Change-Id: I12bff546eefcb8f6c9ca43b1b879773d129a28f9
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
bb10
parent
acf5c37046
commit
e02d758c95
|
|
@ -1378,11 +1378,14 @@ void QCocoaWindow::recreateWindowIfNeeded()
|
|||
if (m_windowModality != window()->modality())
|
||||
recreateReason |= WindowModalityChanged;
|
||||
|
||||
const bool shouldBeContentView = !parentWindow && !isEmbeddedView;
|
||||
Qt::WindowType type = window()->type();
|
||||
|
||||
const bool shouldBeContentView = !parentWindow
|
||||
&& !((type & Qt::SubWindow) == Qt::SubWindow)
|
||||
&& !isEmbeddedView;
|
||||
if (isContentView() != shouldBeContentView)
|
||||
recreateReason |= ContentViewChanged;
|
||||
|
||||
Qt::WindowType type = window()->type();
|
||||
const bool isPanel = isContentView() && [m_view.window isKindOfClass:[QNSPanel class]];
|
||||
const bool shouldBePanel = shouldBeContentView &&
|
||||
((type & Qt::Popup) == Qt::Popup || (type & Qt::Dialog) == Qt::Dialog);
|
||||
|
|
|
|||
Loading…
Reference in New Issue