[Development] Detecting full-screen mode on the Mac

Jake Petroules jake.petroules at petroules.com
Tue Jun 24 01:41:39 CEST 2014


On 2014-06-23, at 06:28 PM, Ben Medina <ben.medina at gmail.com> wrote:

> Hello all,
> I'm attempting a fix for this bug:
> https://bugreports.qt-project.org/browse/QTBUG-39403
> 
> Our app currently uses 5.2.1, so that's the context. As you can see from my post, using the qt_mac_app_fullscreen Boolean seems to no longer work. So I attempted to look at the QWindow's visibility property, like this:
> 
> QRect QScreen::availableGeometry() const
> {
>     Q_D(const QScreen);
> #ifdef Q_OS_MAC
>     foreach (QWindow* window, QGuiApplication::allWindows())
>     {
>         // If we're in fullscreen mode on the Mac, we don't have to account for space
>         // taken up by the Dock and menu bar, so we can use the full screen geometry.
>         if (window->visibility() == QWindow::FullScreen)
>             return d->geometry;
>     }
> #endif
>     return d->availableGeometry;
> }
> 
> But even when in full-screen mode, I never get QWindow::FullScreen. Does anyone know how to detect if the application is in fullscreen mode on the Mac?
> 
> Thanks,
> Ben
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development


That code is probably from the pre-Lion days when OS X didn't have a native fullscreen mode and I'm guessing we don't properly set the window's visibility to FullScreen on Lion+ when the window is actually fullscreen. The way to detect fullscreen mode for a given window on OS X is:

    (([nswindow styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask)

You can also find additional documentation here: https://developer.apple.com/library/mac/documentation/General/Conceptual/MOSXAppProgrammingGuide/FullScreenApp/FullScreenApp.html
-- 
Jake Petroules - jake.petroules at petroules.com
Chief Technology Officer - Petroules Corporation
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20140623/bf8c802c/attachment.html>


More information about the Development mailing list