void UIMachineLogicScale::prepareMachineWindows() { /* Do not create machine-window(s) if they created already: */ if (isMachineWindowsCreated()) return; #ifdef Q_WS_MAC // TODO: Is that really need here? /* We have to make sure that we are getting the front most process. * This is necessary for Qt versions > 4.3.3: */ ::darwinSetFrontMostProcess(); #endif /* Q_WS_MAC */ /* Get monitors count: */ ulong uMonitorCount = machine().GetMonitorCount(); /* Create machine window(s): */ for (ulong uScreenId = 0; uScreenId < uMonitorCount; ++ uScreenId) addMachineWindow(UIMachineWindow::create(this, uScreenId)); /* Order machine window(s): */ for (ulong uScreenId = uMonitorCount; uScreenId > 0; -- uScreenId) machineWindows()[uScreenId - 1]->raise(); /* Listen for frame-buffer resize: */ foreach (UIMachineWindow *pMachineWindow, machineWindows()) connect(pMachineWindow, SIGNAL(sigFrameBufferResize()), this, SIGNAL(sigFrameBufferResize())); emit sigFrameBufferResize(); /* Mark machine-window(s) created: */ setMachineWindowsCreated(true); }
void UIMachineLogicSeamless::prepareMachineWindows() { /* Do not create machine-window(s) if they created already: */ if (isMachineWindowsCreated()) return; #ifdef Q_WS_MAC // TODO: Is that really need here? /* We have to make sure that we are getting the front most process. * This is necessary for Qt versions > 4.3.3: */ ::darwinSetFrontMostProcess(); #endif /* Q_WS_MAC */ /* Update the multi-screen layout: */ m_pScreenLayout->update(); /* Create machine window(s): */ for (uint cScreenId = 0; cScreenId < session().GetMachine().GetMonitorCount(); ++cScreenId) addMachineWindow(UIMachineWindow::create(this, cScreenId)); /* Connect multi-screen layout change handler: */ for (int i = 0; i < machineWindows().size(); ++i) connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()), static_cast<UIMachineWindowSeamless*>(machineWindows()[i]), SLOT(sltShowInNecessaryMode())); /* Mark machine-window(s) created: */ setMachineWindowsCreated(true); }
void UIMachineLogicScale::cleanupMachineWindows() { /* Do not destroy machine-window(s) if they destroyed already: */ if (!isMachineWindowsCreated()) return; /* Mark machine-window(s) destroyed: */ setMachineWindowsCreated(false); /* Cleanup machine-window(s): */ foreach (UIMachineWindow *pMachineWindow, machineWindows()) UIMachineWindow::destroy(pMachineWindow); }
void UIMachineLogicSeamless::prepareMachineWindows() { /* Do not create machine-window(s) if they created already: */ if (isMachineWindowsCreated()) return; #ifdef VBOX_WS_MAC /* We have to make sure that we are getting the front most process. * This is necessary for Qt versions > 4.3.3: */ darwinSetFrontMostProcess(); #endif /* VBOX_WS_MAC */ /* Update the multi-screen layout: */ m_pScreenLayout->update(); /* Create machine-window(s): */ for (uint cScreenId = 0; cScreenId < machine().GetMonitorCount(); ++cScreenId) addMachineWindow(UIMachineWindow::create(this, cScreenId)); /* Listen for frame-buffer resize: */ foreach (UIMachineWindow *pMachineWindow, machineWindows()) connect(pMachineWindow, SIGNAL(sigFrameBufferResize()), this, SIGNAL(sigFrameBufferResize())); emit sigFrameBufferResize(); /* Connect multi-screen layout change handler: */ connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChange()), this, SLOT(sltScreenLayoutChanged())); /* Mark machine-window(s) created: */ setMachineWindowsCreated(true); #ifdef VBOX_WS_X11 switch (vboxGlobal().typeOfWindowManager()) { case X11WMType_GNOMEShell: case X11WMType_Mutter: { // WORKAROUND: // Under certain WMs we can loose machine-window activation due to any Qt::Tool // overlay asynchronously shown above it. Qt is not become aware of such event. // We are going to ask to return machine-window activation in let's say 100ms. QTimer::singleShot(100, machineWindows().first(), SLOT(sltActivateWindow())); break; } default: break; } #endif /* VBOX_WS_X11 */ }
void UIMachineLogicFullscreen::cleanupMachineWindows() { /* Do not destroy machine-window(s) if they destroyed already: */ if (!isMachineWindowsCreated()) return; /* Mark machine-window(s) destroyed: */ setMachineWindowsCreated(false); /* Cleanup machine-window(s): */ foreach (UIMachineWindow *pMachineWindow, machineWindows()) UIMachineWindow::destroy(pMachineWindow); #ifdef Q_WS_MAC setPresentationModeEnabled(false); #endif/* Q_WS_MAC */ }
void UIMachineLogicScale::prepareMachineWindows() { /* Do not create window(s) if they created already: */ if (isMachineWindowsCreated()) return; #ifdef Q_WS_MAC // TODO: Is that really need here? /* We have to make sure that we are getting the front most process. * This is necessary for Qt versions > 4.3.3: */ ::darwinSetFrontMostProcess(); #endif /* Q_WS_MAC */ /* Get monitors count: */ ulong uMonitorCount = session().GetMachine().GetMonitorCount(); /* Create machine window(s): */ for (ulong uScreenId = 0; uScreenId < uMonitorCount; ++ uScreenId) addMachineWindow(UIMachineWindow::create(this, uScreenId)); /* Order machine window(s): */ for (ulong uScreenId = uMonitorCount; uScreenId > 0; -- uScreenId) machineWindows()[uScreenId - 1]->raise(); /* Remember what machine window(s) created: */ setMachineWindowsCreated(true); }
void UIMachineLogicFullscreen::prepareMachineWindows() { /* Do not create window(s) if they created already: */ if (isMachineWindowsCreated()) return; #ifdef Q_WS_MAC // TODO: Is that "darwinSetFrontMostProcess" really need here? /* We have to make sure that we are getting the front most process. * This is necessary for Qt versions > 4.3.3: */ ::darwinSetFrontMostProcess(); #endif /* Q_WS_MAC */ /* Update the multi screen layout: */ m_pScreenLayout->update(); /* Create machine window(s): */ for (int cScreenId = 0; cScreenId < m_pScreenLayout->guestScreenCount(); ++cScreenId) addMachineWindow(UIMachineWindow::create(this, cScreenId)); /* Connect screen-layout change handler: */ for (int i = 0; i < machineWindows().size(); ++i) connect(m_pScreenLayout, SIGNAL(screenLayoutChanged()), static_cast<UIMachineWindowFullscreen*>(machineWindows()[i]), SLOT(sltPlaceOnScreen())); #ifdef Q_WS_MAC /* If the user change the screen, we have to decide again if the * presentation mode should be changed. */ connect(m_pScreenLayout, SIGNAL(screenLayoutChanged()), this, SLOT(sltScreenLayoutChanged())); /* Note: Presentation mode has to be set *after* the windows are created. */ setPresentationModeEnabled(true); #endif /* Q_WS_MAC */ /* Remember what machine window(s) created: */ setMachineWindowsCreated(true); }