- Timestamp:
- Jul 21, 2015 4:59:24 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 101768
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
r57046 r57047 309 309 const QRect workingArea = QApplication::desktop()->screenGeometry(iHostScreen); 310 310 311 #if ndef Q_WS_MAC311 #if defined(Q_WS_WIN) || defined(Q_WS_X11) 312 312 /* Set appropriate geometry for window: */ 313 313 move(workingArea.topLeft()); 314 314 resize(workingArea.size()); 315 #else /* Q_WS_MAC */ 315 316 /* If there is a mini-toolbar: */ 317 if (m_pMiniToolBar) 318 { 319 /* Set appropriate geometry for mini-toolbar: */ 320 m_pMiniToolBar->move(workingArea.topLeft()); 321 m_pMiniToolBar->resize(workingArea.size()); 322 } 323 #elif defined(Q_WS_MAC) 316 324 /* Make sure this window has fullscreen logic: */ 317 325 UIMachineLogicFullscreen *pFullscreenLogic = qobject_cast<UIMachineLogicFullscreen*>(machineLogic()); … … 390 398 #endif /* !Q_WS_X11 */ 391 399 392 #if def Q_WS_MAC400 #if defined(Q_WS_MAC) 393 401 /* ML and next using native stuff, so we can call for simple show(), 394 402 * Lion and previous using Qt stuff, so we should call for showFullScreen(): */ … … 404 412 showFullScreen(); 405 413 } 406 #el se /* !Q_WS_MAC */414 #elif defined(Q_WS_WIN) || defined(Q_WS_X11) 407 415 /* Show window in fullscreen mode: */ 408 416 showFullScreen(); 409 #endif /* !Q_WS_MAC */ 417 418 /* If there is a mini-toolbar: */ 419 if (m_pMiniToolBar) 420 { 421 /* Show mini-toolbar in full-screen mode: */ 422 m_pMiniToolBar->showFullScreen(); 423 } 424 #endif /* Q_WS_WIN || Q_WS_X11 */ 410 425 411 426 #ifdef Q_WS_X11 … … 415 430 /* Tell recent window managers which host-screen this window should be mapped to: */ 416 431 VBoxGlobal::setFullScreenMonitorX11(this, pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId)); 417 } 418 #endif /* Q_WS_X11 */ 419 420 /* Adjust machine-view size if necessary: */ 421 adjustMachineViewSize(); 422 423 #if defined(Q_WS_WIN) || defined(Q_WS_X11) 424 /* If there is a mini-toolbar: */ 425 if (m_pMiniToolBar) 426 { 427 # if defined(Q_WS_WIN) 428 /* Show mini-toolbar: */ 429 m_pMiniToolBar->show(); 430 # elif defined(Q_WS_X11) 431 /* Allow mini-toolbar to be located on full-screen area: */ 432 m_pMiniToolBar->showFullScreen(); 433 /* On modern window managers: */ 434 if (fSupportsNativeFullScreen) 432 433 /* If there is a mini-toolbar: */ 434 if (m_pMiniToolBar) 435 435 { 436 /* We also can map mini-toolbar directly on corresponding machine-window: */436 /* Tell recent window managers which host-screen this mini-toolbar should be mapped to: */ 437 437 VBoxGlobal::setFullScreenMonitorX11(m_pMiniToolBar, pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId)); 438 438 } 439 # endif /* Q_WS_X11 */ 440 } 441 #endif /* Q_WS_WIN || Q_WS_X11 */ 439 } 440 #endif /* Q_WS_X11 */ 442 441 443 442 /* Make sure machine-view have focus: */ 444 443 m_pMachineView->setFocus(); 445 444 } 446 }447 448 void UIMachineWindowFullscreen::adjustMachineViewSize()449 {450 /* Call to base-class: */451 UIMachineWindow::adjustMachineViewSize();452 453 #if defined(Q_WS_WIN) || defined(Q_WS_X11)454 /* If mini-toolbar present: */455 if (m_pMiniToolBar)456 {457 /* Make sure this window has fullscreen logic: */458 const UIMachineLogicFullscreen *pFullscreenLogic = qobject_cast<UIMachineLogicFullscreen*>(machineLogic());459 AssertPtrReturnVoid(pFullscreenLogic);460 461 /* Which host-screen should that machine-window located on? */462 const int iHostScreen = pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId);463 464 # ifndef Q_WS_X11465 /* Move mini-toolbar into appropriate place: */466 m_pMiniToolBar->adjustGeometry(iHostScreen);467 # else /* Q_WS_X11 */468 /* On modern WMs we are mapping mini-toolbar to corresponding host-screen directly. */469 const bool fSupportsNativeFullScreen = VBoxGlobal::supportsFullScreenMonitorsProtocolX11() &&470 !gEDataManager->legacyFullscreenModeRequested();471 /* Adjust mini-toolbar and move into appropriate place if necessary: */472 m_pMiniToolBar->adjustGeometry(fSupportsNativeFullScreen ? -1 : iHostScreen);473 # endif /* Q_WS_X11 */474 }475 #endif /* Q_WS_WIN || Q_WS_X11 */476 445 } 477 446 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h
r57027 r57047 97 97 void showInNecessaryMode(); 98 98 99 /** Adjusts machine-view size to correspond current machine-window size. */100 virtual void adjustMachineViewSize();101 102 99 #if defined(Q_WS_WIN) || defined(Q_WS_X11) 103 100 /** Common update routine. */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp
r57046 r57047 181 181 move(workingArea.topLeft()); 182 182 resize(workingArea.size()); 183 184 #if defined(Q_WS_WIN) || defined(Q_WS_X11) 185 /* If there is a mini-toolbar: */ 186 if (m_pMiniToolBar) 187 { 188 /* Set appropriate geometry for mini-toolbar: */ 189 m_pMiniToolBar->move(workingArea.topLeft()); 190 m_pMiniToolBar->resize(workingArea.size()); 191 } 192 #endif /* Q_WS_WIN || Q_WS_X11 */ 183 193 } 184 194 … … 217 227 show(); 218 228 219 /* Adjust machine-view size if necessary: */220 adjustMachineViewSize();221 222 229 #if defined(Q_WS_WIN) || defined(Q_WS_X11) 223 230 /* If there is a mini-toolbar: */ 224 231 if (m_pMiniToolBar) 225 232 { 226 # if defined(Q_WS_WIN)227 233 /* Show mini-toolbar in normal mode: */ 228 234 m_pMiniToolBar->show(); 229 # elif defined(Q_WS_X11)230 /* Show mini-toolbar in maximized mode: */231 m_pMiniToolBar->showMaximized();232 # endif /* Q_WS_X11 */233 235 } 234 236 #endif /* Q_WS_WIN || Q_WS_X11 */ … … 237 239 m_pMachineView->setFocus(); 238 240 } 239 }240 241 void UIMachineWindowSeamless::adjustMachineViewSize()242 {243 /* Call to base-class: */244 UIMachineWindow::adjustMachineViewSize();245 246 #if defined(Q_WS_WIN) || defined(Q_WS_X11)247 /* If mini-toolbar present: */248 if (m_pMiniToolBar)249 {250 /* Make sure this window has seamless logic: */251 const UIMachineLogicSeamless *pSeamlessLogic = qobject_cast<UIMachineLogicSeamless*>(machineLogic());252 AssertPtrReturnVoid(pSeamlessLogic);253 254 /* Which host-screen should that machine-window located on? */255 const int iHostScreen = pSeamlessLogic->hostScreenForGuestScreen(m_uScreenId);256 257 /* Move mini-toolbar into appropriate place: */258 m_pMiniToolBar->adjustGeometry(iHostScreen);259 }260 #endif /* Q_WS_WIN || Q_WS_X11 */261 241 } 262 242 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h
r57027 r57047 69 69 void showInNecessaryMode(); 70 70 71 /** Adjusts machine-view size to correspond current machine-window size. */72 virtual void adjustMachineViewSize();73 74 71 #if defined(Q_WS_WIN) || defined(Q_WS_X11) 75 72 /** Common update routine. */ -
trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp
r57026 r57047 470 470 } 471 471 472 void UIMiniToolBar::adjustGeometry(int iHostScreen /* = -1 */) 473 { 474 #ifndef Q_WS_X11 475 /* This method could be called before parent-widget 476 * become visible, we should skip everything in that case: */ 477 if (QApplication::desktop()->screenNumber(parentWidget()) == -1) 478 return; 479 480 /* Determine host-screen number if necessary: */ 481 if (iHostScreen == -1) 482 iHostScreen = QApplication::desktop()->screenNumber(parentWidget()); 483 484 /* Reset toolbar geometry: */ 485 m_pEmbeddedToolbar->move(0, 0); 472 void UIMiniToolBar::adjustGeometry() 473 { 474 /* Resize embedded-toolbar to minimum size: */ 486 475 m_pEmbeddedToolbar->resize(m_pEmbeddedToolbar->sizeHint()); 487 476 488 /* Adjust window geometry: */ 489 resize(m_pEmbeddedToolbar->size()); 490 QRect screenRect; 477 /* Calculate embedded-toolbar position: */ 491 478 int iX = 0, iY = 0; 492 switch (m_geometryType) 493 { 494 case GeometryType_Available: screenRect = QApplication::desktop()->availableGeometry(iHostScreen); break; 495 case GeometryType_Full: screenRect = QApplication::desktop()->screenGeometry(iHostScreen); break; 479 iX = width() / 2 - m_pEmbeddedToolbar->width() / 2; 480 switch (m_alignment) 481 { 482 case Qt::AlignTop: iY = 0; break; 483 case Qt::AlignBottom: iY = height() - m_pEmbeddedToolbar->height(); break; 496 484 default: break; 497 485 } 498 iX = screenRect.x() + screenRect.width() / 2 - width() / 2; 486 487 /* Update auto-hide animation: */ 488 m_shownToolbarPosition = QPoint(iX, iY); 499 489 switch (m_alignment) 500 490 { 501 case Qt::AlignTop: iY = screenRect.y(); break; 502 case Qt::AlignBottom: iY = screenRect.y() + screenRect.height() - height(); break; 503 default: break; 504 } 505 move(iX, iY); 506 507 /* Recalculate auto-hide animation: */ 508 m_shownToolbarPosition = m_pEmbeddedToolbar->pos(); 509 switch (m_alignment) 510 { 511 case Qt::AlignTop: 512 m_hiddenToolbarPosition = m_shownToolbarPosition - QPoint(0, m_pEmbeddedToolbar->height() - 3); 513 break; 514 case Qt::AlignBottom: 515 m_hiddenToolbarPosition = m_shownToolbarPosition + QPoint(0, m_pEmbeddedToolbar->height() - 3); 516 break; 491 case Qt::AlignTop: m_hiddenToolbarPosition = m_shownToolbarPosition - QPoint(0, m_pEmbeddedToolbar->height() - 3); break; 492 case Qt::AlignBottom: m_hiddenToolbarPosition = m_shownToolbarPosition + QPoint(0, m_pEmbeddedToolbar->height() - 3); break; 517 493 } 518 494 m_pAnimation->update(); … … 524 500 m_pEmbeddedToolbar->move(m_hiddenToolbarPosition); 525 501 502 #ifdef Q_WS_X11 503 /* Adjust window mask: */ 504 setMask(m_pEmbeddedToolbar->geometry()); 505 #endif /* Q_WS_X11 */ 506 526 507 /* Simulate toolbar auto-hiding: */ 527 508 simulateToolbarAutoHiding(); 528 529 #else /* Q_WS_X11 */530 531 /* This method could be called before parent-widget532 * become visible, we should skip everything in that case: */533 if (QApplication::desktop()->screenNumber(parentWidget()) == -1)534 return;535 536 /* Determine host-screen number if necessary: */537 bool fMoveToHostScreen = true;538 if (iHostScreen == -1)539 {540 fMoveToHostScreen = false;541 iHostScreen = QApplication::desktop()->screenNumber(this);542 }543 544 /* Choose window geometry: */545 QRect screenRect;546 switch (m_geometryType)547 {548 case GeometryType_Available: screenRect = QApplication::desktop()->availableGeometry(iHostScreen); break;549 case GeometryType_Full: screenRect = QApplication::desktop()->screenGeometry(iHostScreen); break;550 default: break;551 }552 553 /* Move to corresponding host-screen: */554 if (fMoveToHostScreen)555 move(screenRect.topLeft());556 557 /* Resize embedded-toolbar to minimum size: */558 m_pEmbeddedToolbar->resize(m_pEmbeddedToolbar->sizeHint());559 560 /* Calculate embedded-toolbar position: */561 int iX = 0, iY = 0;562 iX = screenRect.width() / 2 - m_pEmbeddedToolbar->width() / 2;563 switch (m_alignment)564 {565 case Qt::AlignTop: iY = 0; break;566 case Qt::AlignBottom: iY = screenRect.height() - m_pEmbeddedToolbar->height(); break;567 default: break;568 }569 570 /* Update auto-hide animation: */571 m_shownToolbarPosition = QPoint(iX, iY);572 switch (m_alignment)573 {574 case Qt::AlignTop: m_hiddenToolbarPosition = m_shownToolbarPosition - QPoint(0, m_pEmbeddedToolbar->height() - 3); break;575 case Qt::AlignBottom: m_hiddenToolbarPosition = m_shownToolbarPosition + QPoint(0, m_pEmbeddedToolbar->height() - 3); break;576 }577 m_pAnimation->update();578 579 /* Update embedded-toolbar geometry if known: */580 if (property("AnimationState").toString() == "Final")581 m_pEmbeddedToolbar->move(m_shownToolbarPosition);582 else583 m_pEmbeddedToolbar->move(m_hiddenToolbarPosition);584 585 /* Adjust window mask: */586 setMask(m_pEmbeddedToolbar->geometry());587 588 /* Simulate toolbar auto-hiding: */589 simulateToolbarAutoHiding();590 #endif /* Q_WS_X11 */591 509 } 592 510 … … 757 675 } 758 676 759 #ifdef Q_WS_X11760 677 void UIMiniToolBar::resizeEvent(QResizeEvent*) 761 678 { … … 763 680 adjustGeometry(); 764 681 } 765 #endif /* Q_WS_X11 */766 682 767 683 bool UIMiniToolBar::eventFilter(QObject *pWatched, QEvent *pEvent) -
trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.h
r57023 r57047 93 93 void addMenus(const QList<QMenu*> &menus); 94 94 95 /** Adjusts geometry according to @a iHostScreen. */96 void adjustGeometry( int iHostScreen = -1);95 /** Adjusts geometry. */ 96 void adjustGeometry(); 97 97 98 98 private slots: … … 124 124 void leaveEvent(QEvent *pEvent); 125 125 126 #ifdef Q_WS_X11 127 /** X11: Resize @a pEvent handler. */ 126 /** Resize @a pEvent handler. */ 128 127 void resizeEvent(QResizeEvent *pEvent); 129 #endif /* Q_WS_X11 */130 128 131 129 /** Filters @a pEvent if <i>this</i> object has been
Note:
See TracChangeset
for help on using the changeset viewer.