Changeset 81358 in vbox
- Timestamp:
- Oct 18, 2019 2:50:32 PM (5 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
r81357 r81358 2649 2649 QRect UIExtraDataManager::selectorWindowGeometry(QWidget *pWidget) 2650 2650 { 2651 /* Get corresponding extra-data: */ 2652 const QStringList data = extraDataStringList(GUI_LastSelectorWindowPosition); 2653 2654 /* Parse loaded data: */ 2655 int iX = 0, iY = 0, iW = 0, iH = 0; 2656 bool fOk = data.size() >= 4; 2657 do 2658 { 2659 if (!fOk) break; 2660 iX = data[0].toInt(&fOk); 2661 if (!fOk) break; 2662 iY = data[1].toInt(&fOk); 2663 if (!fOk) break; 2664 iW = data[2].toInt(&fOk); 2665 if (!fOk) break; 2666 iH = data[3].toInt(&fOk); 2667 } 2668 while (0); 2669 2670 /* Get available-geometry [of screen with point (iX, iY) if possible]: */ 2671 const QRect availableGeometry = fOk ? gpDesktop->availableGeometry(QPoint(iX, iY)) : 2672 gpDesktop->availableGeometry(); 2673 2674 /* Use geometry (loaded or default): */ 2675 QRect geometry = fOk ? QRect(iX, iY, iW, iH) : QRect(QPoint(0, 0), availableGeometry.size() * .50 /* % */); 2676 2677 /* Take hint-widget into account: */ 2678 if (pWidget) 2679 geometry.setSize(geometry.size().expandedTo(pWidget->minimumSizeHint())); 2680 2681 /* As final fallback, move default-geometry to available-geometry' center: */ 2682 if (!fOk) 2683 geometry.moveCenter(availableGeometry.center()); 2684 2685 /* In Windows Qt fails to reposition out of screen window properly, so doing it ourselves: */ 2686 #ifdef VBOX_WS_WIN 2687 /* Make sure resulting geometry is within current bounds: */ 2688 if (!availableGeometry.contains(geometry)) 2689 geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry)); 2690 #endif /* VBOX_WS_WIN */ 2691 2692 /* Return result: */ 2693 return geometry; 2651 return dialogGeometry(GUI_LastSelectorWindowPosition, pWidget); 2694 2652 } 2695 2653 … … 4099 4057 QRect UIExtraDataManager::sessionInformationDialogGeometry(QWidget *pWidget, QWidget *pParentWidget) 4100 4058 { 4101 /* Get corresponding extra-data: */ 4102 const QStringList data = extraDataStringList(GUI_SessionInformationDialogGeometry); 4103 4104 /* Parse loaded data: */ 4105 int iX = 0, iY = 0, iW = 0, iH = 0; 4106 bool fOk = data.size() >= 4; 4107 do 4108 { 4109 if (!fOk) break; 4110 iX = data[0].toInt(&fOk); 4111 if (!fOk) break; 4112 iY = data[1].toInt(&fOk); 4113 if (!fOk) break; 4114 iW = data[2].toInt(&fOk); 4115 if (!fOk) break; 4116 iH = data[3].toInt(&fOk); 4117 } 4118 while (0); 4119 4120 /* Get available-geometry [of screen with point (iX, iY) if possible]: */ 4121 const QRect availableGeometry = fOk ? gpDesktop->availableGeometry(QPoint(iX, iY)) : 4122 gpDesktop->availableGeometry(); 4123 4124 /* Use geometry (loaded or default): */ 4125 QRect geometry = fOk ? QRect(iX, iY, iW, iH) : QRect(QPoint(0, 0), availableGeometry.size() * .50 /* % */); 4126 4127 /* Take hint-widget into account: */ 4128 if (pWidget) 4129 geometry.setSize(geometry.size().expandedTo(pWidget->minimumSizeHint())); 4130 4131 /* As a fallback, move default-geometry to pParentWidget' geometry center: */ 4132 if (!fOk && pParentWidget) 4133 geometry.moveCenter(pParentWidget->geometry().center()); 4134 /* As final fallback, move default-geometry to available-geometry' center: */ 4135 else if (!fOk) 4136 geometry.moveCenter(availableGeometry.center()); 4137 4138 /* In Windows Qt fails to reposition out of screen window properly, so doing it ourselves: */ 4139 #ifdef VBOX_WS_WIN 4140 /* Make sure resulting geometry is within current bounds: */ 4141 if (!availableGeometry.contains(geometry)) 4142 geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry)); 4143 #endif /* VBOX_WS_WIN */ 4144 4145 /* Return result: */ 4146 return geometry; 4059 return dialogGeometry(GUI_SessionInformationDialogGeometry, pWidget, pParentWidget); 4147 4060 } 4148 4061 … … 4196 4109 } 4197 4110 4198 QRect UIExtraDataManager::fileManagerDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry)4199 { 4200 return dialogGeometry(GUI_GuestControl_FileManagerDialogGeometry, pWidget, defaultGeometry);4111 QRect UIExtraDataManager::fileManagerDialogGeometry(QWidget *pWidget, QWidget *pParentWidget) 4112 { 4113 return dialogGeometry(GUI_GuestControl_FileManagerDialogGeometry, pWidget, pParentWidget); 4201 4114 } 4202 4115 … … 4225 4138 } 4226 4139 4227 QRect UIExtraDataManager::softKeyboardDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry)4228 { 4229 return dialogGeometry(GUI_SoftKeyboard_DialogGeometry, pWidget, defaultGeometry);4140 QRect UIExtraDataManager::softKeyboardDialogGeometry(QWidget *pWidget, QWidget *pParentWidget, const QRect &defaultGeometry) 4141 { 4142 return dialogGeometry(GUI_SoftKeyboard_DialogGeometry, pWidget, pParentWidget, defaultGeometry); 4230 4143 } 4231 4144 … … 4369 4282 } 4370 4283 4371 QRect UIExtraDataManager::guestProcessControlDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry)4372 { 4373 return dialogGeometry(GUI_GuestControl_ProcessControlDialogGeometry, pWidget, defaultGeometry);4284 QRect UIExtraDataManager::guestProcessControlDialogGeometry(QWidget *pWidget, QWidget *pParentWidget, const QRect &defaultGeometry) 4285 { 4286 return dialogGeometry(GUI_GuestControl_ProcessControlDialogGeometry, pWidget, pParentWidget, defaultGeometry); 4374 4287 } 4375 4288 … … 4433 4346 QRect UIExtraDataManager::extraDataManagerGeometry(QWidget *pWidget, QWidget *pParentWidget) 4434 4347 { 4435 /* Get corresponding extra-data: */ 4436 const QStringList data = extraDataStringList(GUI_ExtraDataManager_Geometry); 4437 4438 /* Parse loaded data: */ 4439 int iX = 0, iY = 0, iW = 0, iH = 0; 4440 bool fOk = data.size() >= 4; 4441 do 4442 { 4443 if (!fOk) break; 4444 iX = data[0].toInt(&fOk); 4445 if (!fOk) break; 4446 iY = data[1].toInt(&fOk); 4447 if (!fOk) break; 4448 iW = data[2].toInt(&fOk); 4449 if (!fOk) break; 4450 iH = data[3].toInt(&fOk); 4451 } 4452 while (0); 4453 4454 /* Get available-geometry [of screen with point (iX, iY) if possible]: */ 4455 const QRect availableGeometry = fOk ? gpDesktop->availableGeometry(QPoint(iX, iY)) : 4456 gpDesktop->availableGeometry(); 4457 4458 /* Use geometry (loaded or default): */ 4459 QRect geometry = fOk ? QRect(iX, iY, iW, iH) : QRect(QPoint(0, 0), availableGeometry.size() * .50 /* % */); 4460 4461 /* Take hint-widget into account: */ 4462 if (pWidget) 4463 geometry.setSize(geometry.size().expandedTo(pWidget->minimumSizeHint())); 4464 4465 /* As a fallback, move default-geometry to pParentWidget' geometry center: */ 4466 if (!fOk && pParentWidget) 4467 geometry.moveCenter(pParentWidget->geometry().center()); 4468 /* As final fallback, move default-geometry to available-geometry' center: */ 4469 else if (!fOk) 4470 geometry.moveCenter(availableGeometry.center()); 4471 4472 /* In Windows Qt fails to reposition out of screen window properly, so doing it ourselves: */ 4473 #ifdef VBOX_WS_WIN 4474 /* Make sure resulting geometry is within current bounds: */ 4475 if (!availableGeometry.contains(geometry)) 4476 geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry)); 4477 #endif /* VBOX_WS_WIN */ 4478 4479 /* Return result: */ 4480 return geometry; 4348 return dialogGeometry(GUI_ExtraDataManager_Geometry, pWidget, pParentWidget); 4481 4349 } 4482 4350 … … 4553 4421 QRect UIExtraDataManager::logWindowGeometry(QWidget *pWidget, QWidget *pParentWidget, const QRect &defaultGeometry) 4554 4422 { 4555 /* Get corresponding extra-data: */ 4556 const QStringList data = extraDataStringList(GUI_LogWindowGeometry); 4557 4558 /* Parse loaded data: */ 4559 int iX = 0, iY = 0, iW = 0, iH = 0; 4560 bool fOk = data.size() >= 4; 4561 do 4562 { 4563 if (!fOk) break; 4564 iX = data[0].toInt(&fOk); 4565 if (!fOk) break; 4566 iY = data[1].toInt(&fOk); 4567 if (!fOk) break; 4568 iW = data[2].toInt(&fOk); 4569 if (!fOk) break; 4570 iH = data[3].toInt(&fOk); 4571 } 4572 while (0); 4573 4574 /* Get available-geometry [of screen with point (iX, iY) if possible]: */ 4575 const QRect availableGeometry = fOk ? gpDesktop->availableGeometry(QPoint(iX, iY)) : 4576 gpDesktop->availableGeometry(); 4577 4578 /* Use geometry (loaded or default): */ 4579 QRect geometry = fOk ? QRect(iX, iY, iW, iH) : defaultGeometry; 4580 4581 /* Take hint-widget into account: */ 4582 if (pWidget) 4583 geometry.setSize(geometry.size().expandedTo(pWidget->minimumSizeHint())); 4584 4585 /* As a fallback, move default-geometry to pParentWidget' geometry center: */ 4586 if (!fOk && pParentWidget) 4587 geometry.moveCenter(pParentWidget->geometry().center()); 4588 /* As final fallback, move default-geometry to available-geometry' center: */ 4589 else if (!fOk) 4590 geometry.moveCenter(availableGeometry.center()); 4591 4592 /* In Windows Qt fails to reposition out of screen window properly, so doing it ourselves: */ 4593 #ifdef VBOX_WS_WIN 4594 /* Make sure resulting geometry is within current bounds: */ 4595 if (!availableGeometry.contains(geometry)) 4596 geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry)); 4597 #endif /* VBOX_WS_WIN */ 4598 4599 /* Return result: */ 4600 return geometry; 4423 return dialogGeometry(GUI_LogWindowGeometry, pWidget, pParentWidget, defaultGeometry); 4601 4424 } 4602 4425 … … 4967 4790 } 4968 4791 4969 QRect UIExtraDataManager::dialogGeometry(const QString &strKey, QWidget *pWidget, const QRect &defaultGeometry) 4970 { 4971 /* Load corresponding extra-data: */ 4792 QRect UIExtraDataManager::dialogGeometry(const QString &strKey, 4793 QWidget *pWidget, 4794 QWidget *pParentWidget /* = 0 */, 4795 const QRect &defaultGeometry /* = QRect() */) 4796 { 4797 /* Get corresponding extra-data: */ 4972 4798 const QStringList data = extraDataStringList(strKey); 4973 4799 … … 4988 4814 while (0); 4989 4815 4816 /* Get available-geometry [of screen with point (iX, iY) if possible]: */ 4817 const QRect availableGeometry = fOk ? gpDesktop->availableGeometry(QPoint(iX, iY)) : 4818 gpDesktop->availableGeometry(); 4819 4990 4820 /* Use geometry (loaded or default): */ 4991 QRect geometry = fOk ? QRect(iX, iY, iW, iH) : defaultGeometry; 4821 QRect geometry = fOk 4822 ? QRect(iX, iY, iW, iH) 4823 : !defaultGeometry.isNull() 4824 ? defaultGeometry 4825 : QRect(QPoint(0, 0), availableGeometry.size() * .50 /* % */); 4992 4826 4993 4827 /* Take hint-widget into account: */ … … 4995 4829 geometry.setSize(geometry.size().expandedTo(pWidget->minimumSizeHint())); 4996 4830 4831 /* As a fallback, move default-geometry to pParentWidget' geometry center: */ 4832 if (!fOk && pParentWidget) 4833 geometry.moveCenter(pParentWidget->geometry().center()); 4834 /* As final fallback, move default-geometry to available-geometry' center: */ 4835 else if (!fOk) 4836 geometry.moveCenter(availableGeometry.center()); 4837 4997 4838 /* In Windows Qt fails to reposition out of screen window properly, so doing it ourselves: */ 4998 4839 #ifdef VBOX_WS_WIN 4999 /* Get available-geometry [of screen with point (iX, iY) if possible]: */5000 const QRect availableGeometry = fOk ? gpDesktop->availableGeometry(QPoint(iX, iY)) :5001 gpDesktop->availableGeometry();5002 5003 4840 /* Make sure resulting geometry is within current bounds: */ 5004 4841 if (!availableGeometry.contains(geometry)) -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
r81357 r81358 25 25 #include <QMap> 26 26 #include <QObject> 27 #include <QRect> 27 28 #include <QSize> 28 29 #include <QUuid> … … 650 651 void setGuestControlProcessControlSplitterHints(const QList<int> &hints); 651 652 QList<int> guestControlProcessControlSplitterHints(); 652 QRect fileManagerDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry);653 QRect fileManagerDialogGeometry(QWidget *pWidget, QWidget *pParentWidget); 653 654 bool fileManagerDialogShouldBeMaximized(); 654 655 void setFileManagerDialogGeometry(const QRect &geometry, bool fMaximized); 655 QRect guestProcessControlDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry);656 QRect guestProcessControlDialogGeometry(QWidget *pWidget, QWidget *pParentWidget, const QRect &defaultGeometry); 656 657 bool guestProcessControlDialogShouldBeMaximized(); 657 658 void setGuestProcessControlDialogGeometry(const QRect &geometry, bool fMaximized); … … 662 663 /** @name Soft Keyboard 663 664 * @{ */ 664 QRect softKeyboardDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry);665 QRect softKeyboardDialogGeometry(QWidget *pWidget, QWidget *pParentWidget, const QRect &defaultGeometry); 665 666 void setSoftKeyboardDialogGeometry(const QRect &geometry, bool fMaximized); 666 667 bool softKeyboardDialogShouldBeMaximized(); … … 817 818 * @param strKey Brings geometry extra-data key of particular dialog. 818 819 * @param pWidget Brings the widget to limit geometry bounds according to. 820 * @param pParentWidget Brings the widget to center geometry rectangle according to. 819 821 * @param defaultGeometry Brings the default geometry which should be used to 820 822 * calculate resulting geometry if saved was not found. */ 821 QRect dialogGeometry(const QString &strKey, QWidget *pWidget, const QRect &defaultGeometry);823 QRect dialogGeometry(const QString &strKey, QWidget *pWidget, QWidget *pParentWidget = 0, const QRect &defaultGeometry = QRect()); 822 824 823 825 /** Returns string consisting of @a strBase appended with @a uScreenIndex for the *non-primary* screen-index. -
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerDialog.cpp
r81284 r81358 111 111 void UIFileManagerDialog::loadSettings() 112 112 { 113 /* Invent default window geometry: */114 const QRect availableGeo = gpDesktop->availableGeometry(this);115 const int iDefaultWidth = availableGeo.width() / 2;116 const int iDefaultHeight = availableGeo.height() * 3 / 4;117 QRect defaultGeo(0, 0, iDefaultWidth, iDefaultHeight);118 if (centerWidget())119 defaultGeo.moveCenter(centerWidget()->geometry().center());120 else121 defaultGeo.moveCenter(availableGeo.center());122 123 113 /* Load geometry from extradata: */ 124 const QRect geo = gEDataManager->fileManagerDialogGeometry(this, defaultGeo);114 const QRect geo = gEDataManager->fileManagerDialogGeometry(this, centerWidget()); 125 115 LogRel2(("GUI: UIFileManagerDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n", 126 116 geo.x(), geo.y(), geo.width(), geo.height())); -
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlDialog.cpp
r81284 r81358 111 111 const int iDefaultHeight = availableGeo.height() * 3 / 4; 112 112 QRect defaultGeo(0, 0, iDefaultWidth, iDefaultHeight); 113 if (centerWidget())114 defaultGeo.moveCenter(centerWidget()->geometry().center());115 else116 defaultGeo.moveCenter(availableGeo.center());117 113 118 114 /* Load geometry from extradata: */ 119 QRect geo = gEDataManager->guestProcessControlDialogGeometry(this, defaultGeo);115 QRect geo = gEDataManager->guestProcessControlDialogGeometry(this, centerWidget(), defaultGeo); 120 116 LogRel2(("GUI: UIGuestProcessControlDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n", 121 117 geo.x(), geo.y(), geo.width(), geo.height())); -
trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp
r81339 r81358 4129 4129 const int iDefaultHeight = iDefaultWidth * fKeyboardAspectRatio; 4130 4130 QRect defaultGeo(0, 0, iDefaultWidth, iDefaultHeight); 4131 if (m_pCenterWidget)4132 defaultGeo.moveCenter(m_pCenterWidget->geometry().center());4133 else4134 defaultGeo.moveCenter(availableGeo.center());4135 4131 4136 4132 /* Load geometry from extradata: */ 4137 const QRect geo = gEDataManager->softKeyboardDialogGeometry(this, defaultGeo);4133 const QRect geo = gEDataManager->softKeyboardDialogGeometry(this, m_pCenterWidget, defaultGeo); 4138 4134 LogRel2(("GUI: UISoftKeyboard: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n", 4139 4135 geo.x(), geo.y(), geo.width(), geo.height()));
Note:
See TracChangeset
for help on using the changeset viewer.