void UIMachineWindowSeamless::prepareVisualState() { /* Call to base-class: */ UIMachineWindow::prepareVisualState(); /* Make sure we have no background * until the first one paint-event: */ setAttribute(Qt::WA_NoSystemBackground); #ifdef Q_WS_WIN /* Using Qt API to enable translucent background for the Win host. * - Under Mac host Qt doesn't allows to disable window-shadows * until version 4.8, but minimum supported version is 4.7.1 for now. * - Under x11 host Qt 4.8.3 has it broken wih KDE 4.9 for now: */ setAttribute(Qt::WA_TranslucentBackground); #endif /* Q_WS_WIN */ #ifdef Q_WS_MAC /* Using native API to enable translucent background for the Mac host. * - We also want to disable window-shadows which is possible * using Qt::WA_MacNoShadow only since Qt 4.8, * while minimum supported version is 4.7.1 for now: */ ::darwinSetShowsWindowTransparent(this, true); #endif /* Q_WS_MAC */ #ifndef Q_WS_MAC /* Prepare mini-toolbar: */ prepareMiniToolbar(); #endif /* !Q_WS_MAC */ }
void UIMachineWindowSeamless::prepareVisualState() { /* Call to base-class: */ UIMachineWindow::prepareVisualState(); /* This might be required to correctly mask: */ centralWidget()->setAutoFillBackground(false); #ifdef Q_WS_WIN /* Get corresponding screen: */ int iScreen = qobject_cast<UIMachineLogicSeamless*>(machineLogic())->hostScreenForGuestScreen(m_uScreenId); /* Prepare previous region: */ m_prevRegion = vboxGlobal().availableGeometry(iScreen); #endif /* Q_WS_WIN */ #ifdef Q_WS_MAC /* Please note: All the stuff below has to be done after the window has * switched to fullscreen. Qt changes the winId on the fullscreen * switch and make this stuff useless with the old winId. So please be * careful on rearrangement of the method calls. */ ::darwinSetShowsWindowTransparent(this, true); #endif /* Q_WS_MAC */ #ifndef Q_WS_MAC /* Prepare mini-toolbar: */ prepareMiniToolbar(); #endif /* !Q_WS_MAC */ }
void UIMachineWindowFullscreen::prepareVisualState() { /* Call to base-class: */ UIMachineWindow::prepareVisualState(); /* The background has to go black: */ QPalette palette(centralWidget()->palette()); palette.setColor(centralWidget()->backgroundRole(), Qt::black); centralWidget()->setPalette(palette); centralWidget()->setAutoFillBackground(true); setAutoFillBackground(true); #if defined(Q_WS_WIN) || defined(Q_WS_X11) /* Prepare mini-toolbar: */ prepareMiniToolbar(); #endif /* Q_WS_WIN || Q_WS_X11 */ #ifdef Q_WS_MAC /* Native fullscreen stuff on ML and next: */ if (vboxGlobal().osRelease() > MacOSXRelease_Lion) { /* Make sure this window has fullscreen logic: */ UIMachineLogicFullscreen *pFullscreenLogic = qobject_cast<UIMachineLogicFullscreen*>(machineLogic()); AssertPtrReturnVoid(pFullscreenLogic); /* Enable fullscreen support for every screen which requires it: */ if (pFullscreenLogic->screensHaveSeparateSpaces() || m_uScreenId == 0) darwinEnableFullscreenSupport(this); /* Enable transience support for other screens: */ else darwinEnableTransienceSupport(this); /* Register to native fullscreen notifications: */ UICocoaApplication::instance()->registerToNotificationOfWindow("NSWindowWillEnterFullScreenNotification", this, UIMachineWindow::handleNativeNotification); UICocoaApplication::instance()->registerToNotificationOfWindow("NSWindowDidEnterFullScreenNotification", this, UIMachineWindow::handleNativeNotification); UICocoaApplication::instance()->registerToNotificationOfWindow("NSWindowWillExitFullScreenNotification", this, UIMachineWindow::handleNativeNotification); UICocoaApplication::instance()->registerToNotificationOfWindow("NSWindowDidExitFullScreenNotification", this, UIMachineWindow::handleNativeNotification); UICocoaApplication::instance()->registerToNotificationOfWindow("NSWindowDidFailToEnterFullScreenNotification", this, UIMachineWindow::handleNativeNotification); } #endif /* Q_WS_MAC */ }
void UIMachineWindowSeamless::prepareVisualState() { /* Call to base-class: */ UIMachineWindow::prepareVisualState(); /* Make sure we have no background * until the first one paint-event: */ setAttribute(Qt::WA_NoSystemBackground); #ifdef VBOX_WITH_TRANSLUCENT_SEAMLESS # ifdef Q_WS_MAC /* Using native API to enable translucent background for the Mac host. * - We also want to disable window-shadows which is possible * using Qt::WA_MacNoShadow only since Qt 4.8, * while minimum supported version is 4.7.1 for now: */ ::darwinSetShowsWindowTransparent(this, true); # else /* Q_WS_MAC */ /* Using Qt API to enable translucent background: * - Under Win host Qt conflicts with 3D stuff (black seamless regions). * - Under Mac host Qt doesn't allows to disable window-shadows * until version 4.8, but minimum supported version is 4.7.1 for now. */ setAttribute(Qt::WA_TranslucentBackground); # endif /* !Q_WS_MAC */ #endif /* VBOX_WITH_TRANSLUCENT_SEAMLESS */ #ifdef VBOX_WITH_MASKED_SEAMLESS /* Make sure we have no background * until the first one set-region-event: */ setMask(m_maskGuest); #endif /* VBOX_WITH_MASKED_SEAMLESS */ #ifndef Q_WS_MAC /* Prepare mini-toolbar: */ prepareMiniToolbar(); #endif /* !Q_WS_MAC */ }