macOS: Don't use full screen geometry for popups
The fullscren geometry when an application is in full screen includes the area above the menu bar. Unfortunately, when clicking on areas of a Qt popup that overlays the menu bare area we get a callback for NSMenuDidBeginTrackingNotification, and as a result we close all popups. As macOS for some reason treats the menu bar area as special and tracks clicks there even if another window is on top, we should not put our popups there. This also matches the geometry of windows shown full screen, which does not overlap the menu bar area either when using the native APIs to make a window fullscreen (which we do). This change does not affect the original issue (QTBUG-39403), as the QScreen::availableGeometry() nowadays does not exclude the area of the Dock when in fullscreen mode. Pick-to: 6.8 6.7 6.5 Task-number: QTBUG-39403 Fixes: QTBUG-123298 Change-Id: I5890d7fc7a9b95a98b8fd2b9ce58ed9789e7f36e Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
0e40a3f664
commit
7f63b0fabb
@ -453,7 +453,7 @@ QVariant QCocoaTheme::themeHint(ThemeHint hint) const
|
||||
case QPlatformTheme::SpellCheckUnderlineStyle:
|
||||
return QVariant(int(QTextCharFormat::DotLine));
|
||||
case QPlatformTheme::UseFullScreenForPopupMenu:
|
||||
return QVariant(bool([[NSApplication sharedApplication] presentationOptions] & NSApplicationPresentationFullScreen));
|
||||
return false;
|
||||
case QPlatformTheme::InteractiveResizeAcrossScreens:
|
||||
return !NSScreen.screensHaveSeparateSpaces;
|
||||
case QPlatformTheme::ShowDirectoriesFirst:
|
||||
|
Loading…
x
Reference in New Issue
Block a user