Changeset 52239 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Jul 30, 2014 7:05:31 PM (10 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
r52238 r52239 18 18 /* GUI includes: */ 19 19 #include "UIActionPoolRuntime.h" 20 #include "UIMultiScreenLayout.h" 20 21 #include "UIExtraDataManager.h" 21 22 #include "UIShortcutPool.h" … … 1262 1263 : UIActionPool(UIActionPoolType_Runtime, fTemporary) 1263 1264 , m_pSession(0) 1265 , m_pMultiScreenLayout(0) 1264 1266 { 1265 1267 } … … 1271 1273 } 1272 1274 1273 UISession* UIActionPoolRuntime::session() const 1274 { 1275 return m_pSession; 1275 void UIActionPoolRuntime::setMultiScreenLayout(UIMultiScreenLayout *pMultiScreenLayout) 1276 { 1277 /* Disconnect old stuff: */ 1278 if (m_pMultiScreenLayout) 1279 { 1280 disconnect(this, SIGNAL(sigNotifyAboutTriggeringViewMultiscreen(int, int)), 1281 m_pMultiScreenLayout, SLOT(sltHandleScreenLayoutChange(int, int))); 1282 disconnect(m_pMultiScreenLayout, SIGNAL(sigScreenLayoutUpdate()), 1283 this, SLOT(sltHandleScreenLayoutUpdate())); 1284 } 1285 1286 /* Assign new multi-screen layout: */ 1287 m_pMultiScreenLayout = pMultiScreenLayout; 1288 1289 /* Connect new stuff: */ 1290 if (m_pMultiScreenLayout) 1291 { 1292 connect(this, SIGNAL(sigNotifyAboutTriggeringViewMultiscreen(int, int)), 1293 m_pMultiScreenLayout, SLOT(sltHandleScreenLayoutChange(int, int))); 1294 connect(m_pMultiScreenLayout, SIGNAL(sigScreenLayoutUpdate()), 1295 this, SLOT(sltHandleScreenLayoutUpdate())); 1296 } 1297 1298 /* Invalidate View menu: */ 1299 m_invalidations << UIActionIndexRT_M_View; 1276 1300 } 1277 1301 … … 1358 1382 } 1359 1383 1384 void UIActionPoolRuntime::sltPrepareMenuViewMultiscreen() 1385 { 1386 /* Make sure sender is valid: */ 1387 QMenu *pMenu = qobject_cast<QMenu*>(sender()); 1388 AssertPtrReturnVoid(pMenu); 1389 1390 /* Call to corresponding handler: */ 1391 updateMenuViewMultiscreen(pMenu); 1392 } 1393 1360 1394 void UIActionPoolRuntime::sltHandleActionTriggerViewResize(QAction *pAction) 1361 1395 { … … 1367 1401 const QSize size = pAction->property("Requested Size").toSize(); 1368 1402 emit sigNotifyAboutTriggeringViewResize(iGuestScreenIndex, size); 1403 } 1404 1405 void UIActionPoolRuntime::sltHandleActionTriggerViewMultiscreen(QAction *pAction) 1406 { 1407 /* Make sure sender is valid: */ 1408 AssertPtrReturnVoid(pAction); 1409 1410 /* Send request to remap guest-screen to required host-screen: */ 1411 const int iGuestScreenIndex = pAction->property("Guest Screen Index").toInt(); 1412 const int iHostScreenIndex = pAction->property("Host Screen Index").toInt(); 1413 emit sigNotifyAboutTriggeringViewMultiscreen(iGuestScreenIndex, iHostScreenIndex); 1414 } 1415 1416 void UIActionPoolRuntime::sltHandleScreenLayoutUpdate() 1417 { 1418 /* Invalidate View menu: */ 1419 m_invalidations << UIActionIndexRT_M_View; 1369 1420 } 1370 1421 … … 1919 1970 1920 1971 1921 /* Do we have to show resize menu? */1972 /* Do we have to show resize or multiscreen menu? */ 1922 1973 const bool fAllowToShowActionResize = isAllowedInMenuView(RuntimeMenuViewActionType_Resize); 1974 const bool fAllowToShowActionMultiscreen = isAllowedInMenuView(RuntimeMenuViewActionType_Multiscreen); 1923 1975 if (fAllowToShowActionResize && session()) 1924 1976 { … … 1930 1982 pSubMenu->setProperty("Guest Screen Index", iGuestScreenIndex); 1931 1983 connect(pSubMenu, SIGNAL(aboutToShow()), this, SLOT(sltPrepareMenuViewResize())); 1984 } 1985 } 1986 else if (fAllowToShowActionMultiscreen && multiScreenLayout()) 1987 { 1988 /* Only if host/guest screen count differes from 1: */ 1989 if (session()->hostScreens().size() > 1 || 1990 session()->frameBuffers().size() > 1) 1991 { 1992 for (int iGuestScreenIndex = 0; iGuestScreenIndex < session()->frameBuffers().size(); ++iGuestScreenIndex) 1993 { 1994 /* Add 'Virtual Screen %1' menu: */ 1995 QMenu *pSubMenu = pMenu->addMenu(QApplication::translate("UIMultiScreenLayout", 1996 "Virtual Screen %1").arg(iGuestScreenIndex + 1)); 1997 pSubMenu->setProperty("Guest Screen Index", iGuestScreenIndex); 1998 connect(pSubMenu, SIGNAL(aboutToShow()), this, SLOT(sltPrepareMenuViewMultiscreen())); 1999 } 1932 2000 } 1933 2001 } … … 2077 2145 } 2078 2146 2147 void UIActionPoolRuntime::updateMenuViewMultiscreen(QMenu *pMenu) 2148 { 2149 /* Make sure UI session defined: */ 2150 AssertPtrReturnVoid(multiScreenLayout()); 2151 2152 /* Clear contents: */ 2153 pMenu->clear(); 2154 2155 /* Get corresponding screen index and size: */ 2156 const int iGuestScreenIndex = pMenu->property("Guest Screen Index").toInt(); 2157 2158 /* Create exclusive action-group: */ 2159 QActionGroup *pActionGroup = new QActionGroup(pMenu); 2160 AssertPtrReturnVoid(pActionGroup); 2161 { 2162 /* Configure exclusive action-group: */ 2163 pActionGroup->setExclusive(true); 2164 for (int iHostScreenIndex = 0; iHostScreenIndex < session()->hostScreens().size(); ++iHostScreenIndex) 2165 { 2166 QAction *pAction = pActionGroup->addAction(UIMultiScreenLayout::tr("Use Host Screen %1") 2167 .arg(iHostScreenIndex + 1)); 2168 AssertPtrReturnVoid(pAction); 2169 { 2170 pAction->setCheckable(true); 2171 pAction->setProperty("Guest Screen Index", iGuestScreenIndex); 2172 pAction->setProperty("Host Screen Index", iHostScreenIndex); 2173 if (multiScreenLayout()->hasHostScreenForGuestScreen(iGuestScreenIndex) && 2174 multiScreenLayout()->hostScreenForGuestScreen(iGuestScreenIndex) == iHostScreenIndex) 2175 pAction->setChecked(true); 2176 } 2177 } 2178 /* Insert group actions into menu: */ 2179 pMenu->addActions(pActionGroup->actions()); 2180 /* Install listener for exclusive action-group: */ 2181 connect(pActionGroup, SIGNAL(triggered(QAction*)), 2182 this, SLOT(sltHandleActionTriggerViewMultiscreen(QAction*))); 2183 } 2184 } 2185 2079 2186 void UIActionPoolRuntime::updateMenuDevices() 2080 2187 { -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
r52238 r52239 28 28 /* Forward declarations: */ 29 29 class UISession; 30 class UIMultiScreenLayout; 30 31 31 32 /** Runtime action-pool index enum. … … 122 123 /** Notifies about 'View' : 'Resize' menu action trigger. */ 123 124 void sigNotifyAboutTriggeringViewResize(int iGuestScreenIndex, const QSize &size); 125 /** Notifies about 'View' : 'Multiscreen' menu action trigger. */ 126 void sigNotifyAboutTriggeringViewMultiscreen(int iGuestScreenIndex, int iHostScreenIndex); 124 127 125 128 public: … … 129 132 void setSession(UISession *pSession); 130 133 /** Returns UI session object reference. */ 131 UISession* session() const; 134 UISession* session() const { return m_pSession; } 135 136 /** Defines UI multi-screen layout object reference. 137 * @note For menus which uses it to build contents. */ 138 void setMultiScreenLayout(UIMultiScreenLayout *pMultiScreenLayout); 139 /** Returns UI multi-screen layout object reference. */ 140 UIMultiScreenLayout* multiScreenLayout() const { return m_pMultiScreenLayout; } 132 141 133 142 /** Returns whether the menu with passed @a type is allowed in menu-bar. */ … … 162 171 /** Prepare 'View' : 'Resize' menu routine. */ 163 172 void sltPrepareMenuViewResize(); 173 /** Prepare 'View' : 'Multiscreen' menu routine. */ 174 void sltPrepareMenuViewMultiscreen(); 164 175 165 176 /** Handles 'View' : 'Resize' menu @a pAction trigger. */ 166 177 void sltHandleActionTriggerViewResize(QAction *pAction); 178 /** Handles 'View' : 'Multiscreen' menu @a pAction trigger. */ 179 void sltHandleActionTriggerViewMultiscreen(QAction *pAction); 180 181 /** Handles screen-layout update. */ 182 void sltHandleScreenLayoutUpdate(); 167 183 168 184 protected: … … 199 215 /** Update 'View' : 'Resize' @a pMenu routine. */ 200 216 void updateMenuViewResize(QMenu *pMenu); 217 /** Update 'View' : 'Multiscreen' @a pMenu routine. */ 218 void updateMenuViewMultiscreen(QMenu *pMenu); 201 219 /** Update 'Devices' menu routine. */ 202 220 void updateMenuDevices(); … … 229 247 /** Holds the UI session object reference. */ 230 248 UISession *m_pSession; 249 /** Holds the UI multi-screen layout object reference. */ 250 UIMultiScreenLayout *m_pMultiScreenLayout; 231 251 232 252 /** Holds the list of main-menus. */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp
r52202 r52239 43 43 UIMultiScreenLayout::UIMultiScreenLayout(UIMachineLogic *pMachineLogic) 44 44 : m_pMachineLogic(pMachineLogic) 45 , m_pViewMenu(0)46 45 { 47 46 /* Calculate host/guest screen count: */ 48 47 calculateHostMonitorCount(); 49 48 calculateGuestScreenCount(); 50 }51 52 UIMultiScreenLayout::~UIMultiScreenLayout()53 {54 /* Cleanup view-menu: */55 cleanupViewMenu();56 }57 58 void UIMultiScreenLayout::setViewMenu(QMenu *pViewMenu)59 {60 /* Assign view-menu: */61 m_pViewMenu = pViewMenu;62 /* Prepare view-menu: */63 prepareViewMenu();64 49 } 65 50 … … 178 163 } 179 164 180 /* Update menu actions: */181 updateMenuActions(false);165 /* Notifies about layout update: */ 166 emit sigScreenLayoutUpdate(); 182 167 183 168 LogRelFlow(("UIMultiScreenLayout::update: Finished!\n")); … … 191 176 calculateHostMonitorCount(); 192 177 calculateGuestScreenCount(); 193 /* Update view-menu: */194 prepareViewMenu();195 178 /* Update layout: */ 196 179 update(); … … 242 225 } 243 226 244 void UIMultiScreenLayout::sltScreenLayoutChanged(QAction *pAction) 245 { 246 /* Parse incoming information: */ 247 int a = pAction->data().toInt(); 248 int iRequestedGuestScreen = RT_LOWORD(a); 249 int iRequestedHostScreen = RT_HIWORD(a); 250 227 void UIMultiScreenLayout::sltHandleScreenLayoutChange(int iRequestedGuestScreen, int iRequestedHostScreen) 228 { 251 229 /* Search for the virtual screen which is currently displayed on the 252 230 * requested host screen. When there is one found, we swap both. */ … … 282 260 /* Swap the maps: */ 283 261 m_screenMap = tmpMap; 284 /* Update menu actions: */ 285 updateMenuActions(true); 286 /* Inform the observer: */ 287 emit sigScreenLayoutChanged(); 262 263 /* Save guest-to-host mapping: */ 264 saveScreenMapping(); 265 266 /* Notifies about layout change: */ 267 emit sigScreenLayoutChange(); 288 268 } 289 269 … … 307 287 } 308 288 309 void UIMultiScreenLayout::prepareViewMenu() 310 { 311 /* Make sure view-menu was set: */ 312 if (!m_pViewMenu) 313 return; 314 315 /* Cleanup menu first: */ 316 cleanupViewMenu(); 317 318 /* If we do have more than one host/guest screen: */ 319 if (m_cHostScreens > 1 || m_guestScreens.size() > 1) 320 { 321 m_pViewMenu->addSeparator(); 322 foreach (int iGuestScreen, m_guestScreens) 323 { 324 m_screenMenuList << m_pViewMenu->addMenu(tr("Virtual Screen %1").arg(iGuestScreen + 1)); 325 m_screenMenuList.last()->menuAction()->setData(true); 326 QActionGroup *pScreenGroup = new QActionGroup(m_screenMenuList.last()); 327 pScreenGroup->setExclusive(true); 328 connect(pScreenGroup, SIGNAL(triggered(QAction*)), this, SLOT(sltScreenLayoutChanged(QAction*))); 329 for (int a = 0; a < m_cHostScreens; ++a) 330 { 331 QAction *pAction = pScreenGroup->addAction(tr("Use Host Screen %1").arg(a + 1)); 332 pAction->setCheckable(true); 333 pAction->setData(RT_MAKE_U32(iGuestScreen, a)); 334 } 335 m_screenMenuList.last()->addActions(pScreenGroup->actions()); 336 } 337 } 338 339 /* Update menu actions: */ 340 updateMenuActions(false); 341 } 342 343 void UIMultiScreenLayout::cleanupViewMenu() 344 { 345 /* Make sure view-menu was set: */ 346 if (!m_pViewMenu) 347 return; 348 349 /* Cleanup view-menu actions: */ 350 while (!m_screenMenuList.isEmpty()) 351 delete m_screenMenuList.takeFirst(); 352 } 353 354 void UIMultiScreenLayout::updateMenuActions(bool fWithSave) 355 { 356 /* Make sure view-menu was set: */ 357 if (!m_pViewMenu) 358 return; 359 360 /* Get the list of all view-menu actions: */ 361 QList<QAction*> viewMenuActions = m_pMachineLogic->actionPool()->action(UIActionIndexRT_M_View)->menu()->actions(); 362 /* Get the list of all view related actions: */ 363 QList<QAction*> viewActions; 364 for (int i = 0; i < viewMenuActions.size(); ++i) 365 if (viewMenuActions[i]->data().toBool()) 366 viewActions << viewMenuActions[i]; 367 /* Update view actions: */ 368 CMachine machine = m_pMachineLogic->session().GetMachine(); 369 for (int iViewAction = 0; iViewAction < viewActions.size(); ++iViewAction) 370 { 371 int iGuestScreen = m_guestScreens[iViewAction]; 372 int iHostScreen = m_screenMap.value(iGuestScreen, -1); 373 if (fWithSave) 374 gEDataManager->setHostScreenForPassedGuestScreen(iViewAction, iHostScreen, vboxGlobal().managedVMUuid()); 375 QList<QAction*> screenActions = viewActions.at(iViewAction)->menu()->actions(); 376 /* Update screen actions: */ 377 for (int j = 0; j < screenActions.size(); ++j) 378 { 379 QAction *pTmpAction = screenActions.at(j); 380 pTmpAction->blockSignals(true); 381 pTmpAction->setChecked(RT_HIWORD(pTmpAction->data().toInt()) == iHostScreen); 382 pTmpAction->blockSignals(false); 383 } 289 void UIMultiScreenLayout::saveScreenMapping() 290 { 291 foreach (const int &iGuestScreen, m_guestScreens) 292 { 293 const int iHostScreen = m_screenMap.value(iGuestScreen, -1); 294 gEDataManager->setHostScreenForPassedGuestScreen(iGuestScreen, iHostScreen, vboxGlobal().managedVMUuid()); 384 295 } 385 296 } -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.h
r45402 r52239 36 36 signals: 37 37 38 /* Notifier: Layout change stuff: */ 39 void sigScreenLayoutChanged(); 38 /** Notifies about layout update. */ 39 void sigScreenLayoutUpdate(); 40 /** Notifies about layout change. */ 41 void sigScreenLayoutChange(); 40 42 41 43 public: … … 43 45 /* Constructor/destructor: */ 44 46 UIMultiScreenLayout(UIMachineLogic *pMachineLogic); 45 ~UIMultiScreenLayout();46 47 /* API: View-menu stuff: */48 void setViewMenu(QMenu *pViewMenu);49 47 50 48 /* API: Update stuff: */ … … 63 61 64 62 /* Handler: Screen change stuff: */ 65 void slt ScreenLayoutChanged(QAction *pAction);63 void sltHandleScreenLayoutChange(int iRequestedGuestScreen, int iRequestedHostScreen); 66 64 67 65 private: … … 70 68 void calculateHostMonitorCount(); 71 69 void calculateGuestScreenCount(); 72 void prepareViewMenu();73 74 /* Helper: Cleanup stuff: */75 void cleanupViewMenu();76 70 77 71 /* Other helpers: */ 78 void updateMenuActions(bool fWithSave);72 void saveScreenMapping(); 79 73 quint64 memoryRequirements(const QMap<int, int> &screenLayout) const; 80 74 … … 85 79 int m_cHostScreens; 86 80 QMap<int, int> m_screenMap; 87 QMenu *m_pViewMenu;88 81 QList<QMenu*> m_screenMenuList; 89 82 }; -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r52238 r52239 839 839 840 840 /* Check if display count changed: */ 841 if (pDesktop->screenCount() != m_screens.size()) 842 { 843 /* Recache display data: */ 844 recacheDisplayData(); 841 if (pDesktop->screenCount() != m_hostScreens.size()) 842 { 845 843 /* Reset watchdog: */ 846 844 m_pWatchdogDisplayChange->setProperty("tryNumber", 0); … … 853 851 for (int iScreenIndex = 0; iScreenIndex < pDesktop->screenCount(); ++iScreenIndex) 854 852 { 855 if (pDesktop->screenGeometry(iScreenIndex) != m_ screens.at(iScreenIndex))853 if (pDesktop->screenGeometry(iScreenIndex) != m_hostScreens.at(iScreenIndex)) 856 854 { 857 /* Recache display data: */858 recacheDisplayData();859 855 /* Reset watchdog: */ 860 856 m_pWatchdogDisplayChange->setProperty("tryNumber", 0); … … 885 881 LogRelFlow(("UISession: Host-screen count changed.\n")); 886 882 883 /* Recache display data: */ 884 updateHostScreenData(); 885 887 886 /* Notify current machine-logic: */ 888 887 emit sigHostScreenCountChanged(); … … 892 891 { 893 892 LogRelFlow(("UISession: Host-screen geometry changed.\n")); 893 894 /* Recache display data: */ 895 updateHostScreenData(); 894 896 895 897 /* Notify current machine-logic: */ … … 1088 1090 void UISession::prepareScreens() 1089 1091 { 1092 /* Recache display data: */ 1093 updateHostScreenData(); 1094 1090 1095 #ifdef Q_WS_MAC 1091 /* Recache display data: */1092 recacheDisplayData();1093 1096 /* Prepare display-change watchdog: */ 1094 1097 m_pWatchdogDisplayChange = new QTimer(this); … … 1621 1624 } 1622 1625 1623 #ifdef Q_WS_MAC 1624 /** MacOS X: Recaches display-configuration data. */ 1625 void UISession::recacheDisplayData() 1626 { 1627 /* Recache display data: */ 1628 m_screens.clear(); 1626 void UISession::updateHostScreenData() 1627 { 1628 m_hostScreens.clear(); 1629 1629 QDesktopWidget *pDesktop = QApplication::desktop(); 1630 1630 for (int iScreenIndex = 0; iScreenIndex < pDesktop->screenCount(); ++iScreenIndex) 1631 m_screens << pDesktop->screenGeometry(iScreenIndex); 1632 } 1633 #endif /* Q_WS_MAC */ 1631 m_hostScreens << pDesktop->screenGeometry(iScreenIndex); 1632 } 1634 1633 1635 1634 #ifdef VBOX_GUI_WITH_KEYS_RESET_HANDLER -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
r52236 r52239 117 117 /** @} */ 118 118 119 /** @name Host-screen configuration variables. 120 ** @{ */ 121 /** Returns the list of host-screen geometries we currently have. */ 122 QList<QRect> hostScreens() const { return m_hostScreens; } 123 /** @} */ 124 119 125 /** @name Application Close configuration stuff. 120 126 * @{ */ … … 315 321 int countOfVisibleWindows(); 316 322 317 #ifdef Q_WS_MAC 318 /* Helper: Display reconfiguration stuff: */ 319 void recacheDisplayData(); 320 #endif /* Q_WS_MAC */ 323 /** Update host-screen data. */ 324 void updateHostScreenData(); 321 325 322 326 /* Private variables: */ … … 373 377 #endif 374 378 379 /** @name Host-screen configuration variables. 380 * @{ */ 381 /** Holds the list of host-screen geometries we currently have. */ 382 QList<QRect> m_hostScreens; 375 383 #ifdef Q_WS_MAC 376 /** @name MacOS X: Display reconfiguration variables. 377 * @{ */ 378 /** MacOS X: Watchdog timer looking for display reconfiguration. */ 384 /** Mac OS X: Watchdog timer looking for display reconfiguration. */ 379 385 QTimer *m_pWatchdogDisplayChange; 380 /** MacOS X: A list of display geometries we currently have. */381 QList<QRect> m_screens;382 /** @} */383 386 #endif /* Q_WS_MAC */ 387 /** @} */ 384 388 385 389 /** @name Application Close configuration variables. -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp
r52236 r52239 47 47 /* Create multiscreen layout: */ 48 48 m_pScreenLayout = new UIMultiScreenLayout(this); 49 actionPool()->toRuntime()->setMultiScreenLayout(m_pScreenLayout); 49 50 } 50 51 … … 52 53 { 53 54 /* Delete multiscreen layout: */ 55 actionPool()->toRuntime()->setMultiScreenLayout(0); 54 56 delete m_pScreenLayout; 55 57 } … … 503 505 m_pScreenLayout->update(); 504 506 505 // TODO: Make this through action-pool.506 m_pScreenLayout->setViewMenu(actionPool()->action(UIActionIndexRT_M_View)->menu());507 508 507 /* Create machine-window(s): */ 509 508 for (uint cScreenId = 0; cScreenId < session().GetMachine().GetMonitorCount(); ++cScreenId) … … 517 516 518 517 /* Connect multi-screen layout change handler: */ 519 connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChange d()),518 connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChange()), 520 519 this, SLOT(sltScreenLayoutChanged())); 521 520 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp
r52236 r52239 46 46 /* Create multiscreen layout: */ 47 47 m_pScreenLayout = new UIMultiScreenLayout(this); 48 actionPool()->toRuntime()->setMultiScreenLayout(m_pScreenLayout); 48 49 } 49 50 … … 51 52 { 52 53 /* Delete multiscreen layout: */ 54 actionPool()->toRuntime()->setMultiScreenLayout(0); 53 55 delete m_pScreenLayout; 54 56 } … … 251 253 m_pScreenLayout->update(); 252 254 253 // TODO: Make this through action-pool.254 m_pScreenLayout->setViewMenu(actionPool()->action(UIActionIndexRT_M_View)->menu());255 256 255 /* Create machine-window(s): */ 257 256 for (uint cScreenId = 0; cScreenId < session().GetMachine().GetMonitorCount(); ++cScreenId) … … 265 264 266 265 /* Connect multi-screen layout change handler: */ 267 connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChange d()),266 connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChange()), 268 267 this, SLOT(sltScreenLayoutChanged())); 269 268
Note:
See TracChangeset
for help on using the changeset viewer.