Changeset 69858 in vbox
- Timestamp:
- Nov 28, 2017 10:56:02 AM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 119303
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
r69789 r69858 783 783 foreach (UIMachineWindow *pMachineWindow, machineWindows()) 784 784 pMachineWindow->showInNecessaryMode(); 785 786 #ifdef VBOX_WS_MAC 787 /* Update dock: */ 788 updateDock(); 789 #endif 785 790 } 786 791 … … 833 838 , m_pDockIconPreview(0) 834 839 , m_pDockPreviewSelectMonitorGroup(0) 840 , m_pDockSettingsMenuSeparator(0) 835 841 , m_DockIconPreviewMonitor(0) 836 842 #endif /* VBOX_WS_MAC */ … … 1253 1259 pDockSettingsMenu->addAction(pDockIconDisableOverlay); 1254 1260 1255 /* Monitor selection if there are more than one monitor */ 1256 int cGuestScreens = machine().GetMonitorCount(); 1257 if (cGuestScreens > 1) 1258 { 1259 pDockSettingsMenu->addSeparator(); 1260 m_DockIconPreviewMonitor = qMin(gEDataManager->realtimeDockIconUpdateMonitor(vboxGlobal().managedVMUuid()), 1261 cGuestScreens - 1); 1261 /* If we have more than one visible window: */ 1262 const QList<int> visibleWindowsList = uisession()->listOfVisibleWindows(); 1263 const int cVisibleGuestScreens = visibleWindowsList.size(); 1264 if (cVisibleGuestScreens > 1) 1265 { 1266 /* Add separator: */ 1267 m_pDockSettingsMenuSeparator = pDockSettingsMenu->addSeparator(); 1268 1269 int extraDataUpdateMonitor = gEDataManager->realtimeDockIconUpdateMonitor(vboxGlobal().managedVMUuid()); 1270 if (visibleWindowsList.contains(extraDataUpdateMonitor)) 1271 m_DockIconPreviewMonitor = extraDataUpdateMonitor; 1272 else 1273 m_DockIconPreviewMonitor = visibleWindowsList.at(cVisibleGuestScreens - 1); 1274 1262 1275 m_pDockPreviewSelectMonitorGroup = new QActionGroup(this); 1263 for (int i = 0; i < cGuestScreens; ++i) 1276 1277 /* And dock preview actions: */ 1278 for (int i = 0; i < cVisibleGuestScreens; ++i) 1264 1279 { 1265 1280 QAction *pAction = new QAction(m_pDockPreviewSelectMonitorGroup); 1266 1281 pAction->setCheckable(true); 1267 pAction->setData( i);1268 if (m_DockIconPreviewMonitor == i)1282 pAction->setData(visibleWindowsList.at(i)); 1283 if (m_DockIconPreviewMonitor == visibleWindowsList.at(i)) 1269 1284 pAction->setChecked(true); 1270 1285 } … … 1297 1312 setDockIconPreviewEnabled(fEnabled); 1298 1313 updateDockOverlay(); 1314 } 1315 1316 void UIMachineLogic::updateDock() 1317 { 1318 QMenu *pDockSettingsMenu = actionPool()->action(UIActionIndexRT_M_Dock_M_DockSettings)->menu(); 1319 /* Clean the previous preview actions: */ 1320 if (m_pDockPreviewSelectMonitorGroup) 1321 { 1322 QList<QAction*> previewActions = m_pDockPreviewSelectMonitorGroup->actions(); 1323 foreach (QAction *pAction, previewActions) 1324 { 1325 pDockSettingsMenu->removeAction(pAction); 1326 m_pDockPreviewSelectMonitorGroup->removeAction(pAction); 1327 delete pAction; 1328 } 1329 } 1330 const QList<int> visibleWindowsList = uisession()->listOfVisibleWindows(); 1331 const int cVisibleGuestScreens = visibleWindowsList.size(); 1332 if (cVisibleGuestScreens > 1) 1333 { 1334 if (!m_pDockPreviewSelectMonitorGroup) 1335 m_pDockPreviewSelectMonitorGroup = new QActionGroup(this); 1336 /* Only if currently selected monitor for icon preview is not enabled: */ 1337 if (!visibleWindowsList.contains(m_DockIconPreviewMonitor)) 1338 { 1339 int iExtraDataUpdateMonitor = gEDataManager->realtimeDockIconUpdateMonitor(vboxGlobal().managedVMUuid()); 1340 if (visibleWindowsList.contains(iExtraDataUpdateMonitor)) 1341 m_DockIconPreviewMonitor = iExtraDataUpdateMonitor; 1342 else 1343 m_DockIconPreviewMonitor = visibleWindowsList.at(cVisibleGuestScreens - 1); 1344 } 1345 if (!m_pDockSettingsMenuSeparator) 1346 m_pDockSettingsMenuSeparator = pDockSettingsMenu->addSeparator(); 1347 for (int i = 0; i < cVisibleGuestScreens; ++i) 1348 { 1349 QAction *pAction = new QAction(m_pDockPreviewSelectMonitorGroup); 1350 pAction->setCheckable(true); 1351 pAction->setData(visibleWindowsList.at(i)); 1352 pAction->setText(QApplication::translate("UIActionPool", "Preview Monitor %1").arg(pAction->data().toInt() + 1)); 1353 if (m_DockIconPreviewMonitor == visibleWindowsList.at(i)) 1354 pAction->setChecked(true); 1355 } 1356 pDockSettingsMenu->addActions(m_pDockPreviewSelectMonitorGroup->actions()); 1357 connect(m_pDockPreviewSelectMonitorGroup, SIGNAL(triggered(QAction*)), 1358 this, SLOT(sltDockPreviewMonitorChanged(QAction*))); 1359 } 1360 else 1361 { 1362 m_DockIconPreviewMonitor = 0; 1363 /* Remove the seperator as well: */ 1364 if (m_pDockSettingsMenuSeparator) 1365 { 1366 pDockSettingsMenu->removeAction(m_pDockSettingsMenuSeparator); 1367 delete m_pDockSettingsMenuSeparator; 1368 m_pDockSettingsMenuSeparator = 0; 1369 } 1370 } 1299 1371 } 1300 1372 #endif /* VBOX_WS_MAC */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
r69500 r69858 225 225 #ifdef VBOX_WS_MAC 226 226 virtual void prepareDock(); 227 virtual void updateDock(); 227 228 #endif /* VBOX_WS_MAC */ 228 229 #ifdef VBOX_WITH_DEBUGGER_GUI … … 406 407 UIDockIconPreview *m_pDockIconPreview; 407 408 QActionGroup *m_pDockPreviewSelectMonitorGroup; 409 QAction *m_pDockSettingsMenuSeparator; 408 410 int m_DockIconPreviewMonitor; 409 411 #endif /* VBOX_WS_MAC */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r69824 r69858 2076 2076 } 2077 2077 2078 QList<int> UISession::listOfVisibleWindows() const 2079 { 2080 QList<int> visibleWindows; 2081 for (int i = 0; i < m_monitorVisibilityVector.size(); ++i) 2082 if (m_monitorVisibilityVector.at(i)) 2083 visibleWindows.push_back(i); 2084 return visibleWindows; 2085 } 2086 2078 2087 void UISession::loadVMSettings() 2079 2088 { -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
r69500 r69858 274 274 /** Returns VM's effective paravirtualization provider. */ 275 275 KParavirtProvider paraVirtProvider() const { return m_paraVirtProvider; } 276 277 /** Returns the list of visible guest windows. */ 278 QList<int> listOfVisibleWindows() const; 276 279 277 280 signals:
Note:
See TracChangeset
for help on using the changeset viewer.