VirtualBox

Ignore:
Timestamp:
Feb 19, 2014 3:03:24 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
92347
Message:

FE/Qt: Mac OS X: 7016: Check if *screens have separate spaces* feature is supported/enabled, use *transience* for non-primary screens otherwise.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/VBoxUtils-darwin-cocoa.mm

    r50479 r50505  
    190190}
    191191
     192void darwinEnableTransienceSupport(NativeNSWindowRef pWindow)
     193{
     194    [pWindow setCollectionBehavior :NSWindowCollectionBehaviorTransient];
     195}
     196
    192197void darwinToggleFullscreenMode(NativeNSWindowRef pWindow)
    193198{
     
    196201    if ([pWindow respondsToSelector: @selector(toggleFullScreen:)])
    197202        [pWindow performSelector: @selector(toggleFullScreen:) withObject: (id)nil];
     203}
     204
     205bool darwinScreensHaveSeparateSpaces()
     206{
     207    /* Check whether screens have separate spaces.
     208     * This method is available since 10.9 only. */
     209    if ([NSScreen respondsToSelector: @selector(screensHaveSeparateSpaces)])
     210        return [NSScreen performSelector: @selector(screensHaveSeparateSpaces)];
     211    else
     212        return false;
    198213}
    199214
  • trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/VBoxUtils-darwin.cpp

    r50479 r50505  
    142142{
    143143    return ::darwinEnableFullscreenSupport(::darwinToNativeWindow(pWidget));
     144}
     145
     146void darwinEnableTransienceSupport(QWidget *pWidget)
     147{
     148    return ::darwinEnableTransienceSupport(::darwinToNativeWindow(pWidget));
    144149}
    145150
  • trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/VBoxUtils-darwin.h

    r50479 r50505  
    8080void darwinMinaturizeWindow(NativeNSWindowRef pWindow);
    8181void darwinEnableFullscreenSupport(NativeNSWindowRef pWindow);
     82void darwinEnableTransienceSupport(NativeNSWindowRef pWindow);
    8283void darwinToggleFullscreenMode(NativeNSWindowRef pWindow);
     84bool darwinScreensHaveSeparateSpaces();
    8385
    8486bool darwinOpenFile(NativeNSStringRef pstrFile);
     
    243245void darwinMinaturizeWindow(QWidget *pWidget);
    244246void darwinEnableFullscreenSupport(QWidget *pWidget);
     247void darwinEnableTransienceSupport(QWidget *pWidget);
    245248void darwinToggleFullscreenMode(QWidget *pWidget);
    246249bool darwinOpenFile(const QString &strFile);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp

    r50498 r50505  
    506506    {
    507507        case UIVisualStateType_Normal: return Qt::Window;
    508 #ifdef Q_WS_MAC
    509         /* We want normal window for native fullscreen mode on ML and next: */
    510         case UIVisualStateType_Fullscreen: return vboxGlobal().osRelease() > MacOSXRelease_Lion ? Qt::Window : Qt::FramelessWindowHint;
    511 #else /* !Q_WS_MAC */
    512508        case UIVisualStateType_Fullscreen: return Qt::FramelessWindowHint;
    513 #endif /* !Q_WS_MAC */
    514509        case UIVisualStateType_Seamless: return Qt::FramelessWindowHint;
    515510        case UIVisualStateType_Scale: return Qt::Window;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp

    r50498 r50505  
    134134    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
    135135    {
    136         /* Enable native fullscreen support: */
    137         darwinEnableFullscreenSupport(this);
     136        /* Enable fullscreen support for every screen which requires it: */
     137        if (darwinScreensHaveSeparateSpaces() || m_uScreenId == 0)
     138            darwinEnableFullscreenSupport(this);
     139        /* Enable transience support for other screens: */
     140        else
     141            darwinEnableTransienceSupport(this);
    138142        /* Register to native fullscreen notifications: */
    139143        UICocoaApplication::instance()->registerToNativeNotification("NSWindowDidEnterFullScreenNotification", this,
     
    141145        UICocoaApplication::instance()->registerToNativeNotification("NSWindowDidExitFullScreenNotification", this,
    142146                                                                     UIMachineWindow::handleNativeNotification);
    143         /* Asynchronously toggle native fullscreen mode: */
    144         QTimer::singleShot(0, this, SLOT(sltToggleNativeFullscreenMode()));
     147        /* Asynchronously toggle fullscreen mode for every screen which requires it: */
     148        if (darwinScreensHaveSeparateSpaces() || m_uScreenId == 0)
     149            QTimer::singleShot(0, this, SLOT(sltToggleNativeFullscreenMode()));
    145150    }
    146151#endif /* Q_WS_MAC */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette