UIMachineWindowFullscreen::UIMachineWindowFullscreen(UIMachineLogic *pMachineLogic, ulong uScreenId) : QIWithRetranslateUI2<QMainWindow>(0, Qt::FramelessWindowHint) , UIMachineWindow(pMachineLogic, uScreenId) , m_pMainMenu(0) , m_pMiniToolBar(0) { /* "This" is machine window: */ m_pMachineWindow = this; /* Set the main window in VBoxGlobal: */ if (uScreenId == 0) vboxGlobal().setMainWindow(this); /* Prepare fullscreen window icon: */ prepareWindowIcon(); /* Prepare console connections: */ prepareConsoleConnections(); /* Prepare fullscreen menu: */ prepareMenu(); /* Prepare machine view container: */ prepareMachineViewContainer(); /* Prepare fullscreen machine view: */ prepareMachineView(); /* Prepare handlers: */ prepareHandlers(); /* Prepare mini tool-bar: */ prepareMiniToolBar(); /* Retranslate fullscreen window finally: */ retranslateUi(); /* Update all the elements: */ updateAppearanceOf(UIVisualElement_AllStuff); /* Make sure the window is placed on valid screen * before we are show fullscreen window: */ sltPlaceOnScreen(); /* Show fullscreen window: */ showFullScreen(); /* Make sure the window is placed on valid screen again * after window is shown & window's decorations applied. * That is required due to X11 Window Geometry Rules. */ sltPlaceOnScreen(); #ifdef Q_WS_MAC /* Make sure it is really on the right place (especially on the Mac) */ QRect r = QApplication::desktop()->screenGeometry(static_cast<UIMachineLogicFullscreen*>(machineLogic())->hostScreenForGuestScreen(m_uScreenId)); move(r.topLeft()); #endif /* Q_WS_MAC */ }
void UIMachineLogicSeamless::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 */ /* 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<UIMachineWindowSeamless*>(machineWindows()[i]), SLOT(sltPlaceOnScreen())); /* Remember what machine window(s) created: */ setMachineWindowsCreated(true); }
void UIMachineWindowSeamless::showSeamless() { /* Show manually maximized window: */ sltPlaceOnScreen(); show(); #ifdef Q_WS_MAC /* Make sure it is really on the right place (especially on the Mac): */ int iScreen = static_cast<UIMachineLogicSeamless*>(machineLogic())->hostScreenForGuestScreen(m_uScreenId); QRect r = vboxGlobal().availableGeometry(iScreen); move(r.topLeft()); #endif /* Q_WS_MAC */ }
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); }