Changeset 108687 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Mar 21, 2025 12:35:45 PM (4 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168103
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp
r108571 r108687 5 5 6 6 /* 7 * Copyright (C) 2012-202 4Oracle and/or its affiliates.7 * Copyright (C) 2012-2025 Oracle and/or its affiliates. 8 8 * 9 9 * This file is part of VirtualBox base platform packages, as … … 210 210 AssertPtrReturnVoid(model()); 211 211 model()->setCurrentMachineItem(uId); 212 }213 214 void UIChooser::sltToolMenuRequested(const QPoint &position, UIVirtualMachineItem *pItem)215 {216 /* Translate scene coordinates to global one: */217 AssertPtrReturnVoid(view());218 emit sigToolMenuRequested(mapToGlobal(view()->mapFromScene(position)), pItem);219 212 } 220 213 … … 277 270 278 271 /* Chooser-model connections: */ 279 connect(model(), &UIChooserModel::sigToolMenuRequested,280 this, &UIChooser::sltToolMenuRequested);281 272 connect(model(), &UIChooserModel::sigSelectionChanged, 282 273 this, &UIChooser::sigSelectionChanged); … … 327 318 328 319 /* Chooser-model connections: */ 329 disconnect(model(), &UIChooserModel::sigToolMenuRequested,330 this, &UIChooser::sltToolMenuRequested);331 320 disconnect(model(), &UIChooserModel::sigSelectionChanged, 332 321 this, &UIChooser::sigSelectionChanged); -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.h
r108571 r108687 5 5 6 6 /* 7 * Copyright (C) 2012-202 4Oracle and/or its affiliates.7 * Copyright (C) 2012-2025 Oracle and/or its affiliates. 8 8 * 9 9 * This file is part of VirtualBox base platform packages, as … … 71 71 /** Notifies listeners about cloud update state change. */ 72 72 void sigCloudUpdateStateChanged(); 73 /** @} */74 75 /** @name Tool stuff.76 * @{ */77 /** Notifies listeners about tool popup-menu request for certain @a position and optionally machine @a pItem. */78 void sigToolMenuRequested(const QPoint &position, UIVirtualMachineItem *pItem);79 73 /** @} */ 80 74 … … 198 192 /** @} */ 199 193 200 private slots:201 202 /** @name General stuff.203 * @{ */204 /** Handles signal about tool popup-menu request for certain @a position and optionally machine @a pItem. */205 void sltToolMenuRequested(const QPoint &position, UIVirtualMachineItem *pItem);206 /** @} */207 208 194 private: 209 195 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserHandlerMouse.cpp
r108157 r108687 5 5 6 6 /* 7 * Copyright (C) 2012-202 4Oracle and/or its affiliates.7 * Copyright (C) 2012-2025 Oracle and/or its affiliates. 8 8 * 9 9 * This file is part of VirtualBox base platform packages, as … … 79 79 /* Or a machine one? */ 80 80 else if (UIChooserItemMachine *pMachineItem = qgraphicsitem_cast<UIChooserItemMachine*>(pItemUnderMouse)) 81 { 82 const QPoint itemCursorPos = pMachineItem->mapFromScene(scenePos).toPoint(); 83 if ( pMachineItem->isToolButtonArea(itemCursorPos) 84 && ( model()->firstSelectedItem() == pMachineItem 85 || pMachineItem->isHovered())) 86 { 87 model()->handleToolButtonClick(pMachineItem); 88 if (model()->firstSelectedItem() != pMachineItem) 89 pClickedItem = pMachineItem; 90 } 91 else 92 pClickedItem = pMachineItem; 93 } 81 pClickedItem = pMachineItem; 94 82 /* If we had clicked one of required item types: */ 95 83 if (pClickedItem && !pClickedItem->isRoot()) -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp
r108664 r108687 5 5 6 6 /* 7 * Copyright (C) 2012-202 4Oracle and/or its affiliates.7 * Copyright (C) 2012-2025 Oracle and/or its affiliates. 8 8 * 9 9 * This file is part of VirtualBox base platform packages, as … … 115 115 && enmState != KMachineState_Aborted 116 116 && enmState != KMachineState_AbortedSaved; 117 }118 119 bool UIChooserItemMachine::isToolButtonArea(const QPoint &position, int iMarginMultiplier /* = 1 */) const120 {121 const int iFullWidth = geometry().width();122 const int iFullHeight = geometry().height();123 const int iMarginHR = data(MachineItemData_MarginHR).toInt();124 const int iButtonMargin = data(MachineItemData_ButtonMargin).toInt();125 const int iToolPixmapX = iFullWidth - iMarginHR - 1 - m_toolPixmap.width() / m_toolPixmap.devicePixelRatio();126 const int iToolPixmapY = (iFullHeight - m_toolPixmap.height() / m_toolPixmap.devicePixelRatio()) / 2;127 QRect rect = QRect(iToolPixmapX,128 iToolPixmapY,129 m_toolPixmap.width() / m_toolPixmap.devicePixelRatio(),130 m_toolPixmap.height() / m_toolPixmap.devicePixelRatio());131 rect.adjust(-iMarginMultiplier * iButtonMargin, -iMarginMultiplier * iButtonMargin,132 iMarginMultiplier * iButtonMargin, iMarginMultiplier * iButtonMargin);133 return rect.contains(position);134 117 } 135 118 … … 343 326 const int iMajorSpacing = data(MachineItemData_MajorSpacing).toInt(); 344 327 const int iMinorSpacing = data(MachineItemData_MinorSpacing).toInt(); 345 const int iButtonMargin = data(MachineItemData_ButtonMargin).toInt();346 328 347 329 /* Calculating proposed width: */ … … 363 345 int iMachineItemWidth = m_pixmapSize.width() + 364 346 iMajorSpacing + 365 iMiddleColumnWidth + 366 iMajorSpacing + 367 m_toolPixmapSize.width() + 2 * iButtonMargin; 347 iMiddleColumnWidth; 368 348 iProposedWidth += iMachineItemWidth; 369 349 … … 377 357 const int iMarginV = data(MachineItemData_MarginV).toInt(); 378 358 const int iMachineItemTextSpacing = data(MachineItemData_TextSpacing).toInt(); 379 const int iButtonMargin = data(MachineItemData_ButtonMargin).toInt();380 359 381 360 /* Calculating proposed height: */ … … 391 370 iBottomLineHeight; 392 371 QList<int> heights; 393 heights << m_pixmapSize.height() << iMiddleColumnHeight << m_toolPixmapSize.height() + 2 * iButtonMargin;372 heights << m_pixmapSize.height() << iMiddleColumnHeight; 394 373 int iMaxHeight = 0; 395 374 foreach (int iHeight, heights) … … 656 635 case MachineItemData_MinorSpacing: return QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 4; 657 636 case MachineItemData_TextSpacing: return 0; 658 case MachineItemData_ButtonMargin: return QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 4;659 637 660 638 /* Default: */ … … 747 725 const int iMarginHR = data(MachineItemData_MarginHR).toInt(); 748 726 const int iMajorSpacing = data(MachineItemData_MajorSpacing).toInt(); 749 const int iButtonMargin = data(MachineItemData_ButtonMargin).toInt();750 727 751 728 /* Calculate new maximum width for the first row: */ … … 754 731 iFirstRowMaximumWidth -= m_pixmapSize.width(); /* left pixmap width */ 755 732 iFirstRowMaximumWidth -= iMajorSpacing; /* spacing between left pixmap and name(s) */ 756 if ( model()->firstSelectedItem() == this757 || isHovered())758 {759 iFirstRowMaximumWidth -= iMajorSpacing; /* spacing between name(s) and right pixmap */760 iFirstRowMaximumWidth -= m_toolPixmapSize.width() + 2 * iButtonMargin; /* right pixmap width */761 }762 733 iFirstRowMaximumWidth -= iMarginHR; /* right margin */ 763 734 … … 1097 1068 { 1098 1069 /* Prepare variables: */ 1099 // const int iFullWidth = rectangle.width();1100 1070 const int iFullHeight = rectangle.height(); 1101 1071 const int iMarginHL = data(MachineItemData_MarginHL).toInt(); 1102 // const int iMarginHR = data(MachineItemData_MarginHR).toInt();1103 1072 const int iMajorSpacing = data(MachineItemData_MajorSpacing).toInt(); 1104 1073 const int iMinorSpacing = data(MachineItemData_MinorSpacing).toInt(); 1105 1074 const int iMachineItemTextSpacing = data(MachineItemData_TextSpacing).toInt(); 1106 // const int iButtonMargin = data(MachineItemData_ButtonMargin).toInt();1107 1075 1108 1076 /* Selected or hovered item foreground: */ … … 1243 1211 } 1244 1212 } 1245 1246 #if 01247 /* Calculate indents: */1248 QGraphicsView *pView = model()->scene()->views().first();1249 const QPointF sceneCursorPosition = pView->mapToScene(pView->mapFromGlobal(QCursor::pos()));1250 const QPoint itemCursorPosition = mapFromScene(sceneCursorPosition).toPoint();1251 int iRightColumnIndent = iFullWidth - iMarginHR - 1 - m_toolPixmap.width() / m_toolPixmap.devicePixelRatio();1252 1253 /* Paint right column: */1254 if ( model()->firstSelectedItem() == this1255 || isHovered())1256 {1257 /* Prepare variables: */1258 const int iToolPixmapX = iRightColumnIndent;1259 const int iToolPixmapY = (iFullHeight - m_toolPixmap.height() / m_toolPixmap.devicePixelRatio()) / 2;1260 QRect toolButtonRectangle = QRect(iToolPixmapX,1261 iToolPixmapY,1262 m_toolPixmap.width() / m_toolPixmap.devicePixelRatio(),1263 m_toolPixmap.height() / m_toolPixmap.devicePixelRatio());1264 toolButtonRectangle.adjust(- iButtonMargin, -iButtonMargin, iButtonMargin, iButtonMargin);1265 1266 /* Paint tool button: */1267 if ( isHovered()1268 && isToolButtonArea(itemCursorPosition, 4))1269 paintFlatButton(/* Painter: */1270 pPainter,1271 /* Button rectangle: */1272 toolButtonRectangle,1273 /* Cursor position: */1274 itemCursorPosition);1275 1276 /* Paint pixmap: */1277 paintPixmap(/* Painter: */1278 pPainter,1279 /* Point to paint in: */1280 QPoint(iToolPixmapX, iToolPixmapY),1281 /* Pixmap to paint: */1282 m_toolPixmap);1283 }1284 #endif1285 1213 } 1286 1214 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.h
r108147 r108687 5 5 6 6 /* 7 * Copyright (C) 2012-202 4Oracle and/or its affiliates.7 * Copyright (C) 2012-2025 Oracle and/or its affiliates. 8 8 * 9 9 * This file is part of VirtualBox base platform packages, as … … 75 75 /** Returns whether VM is locked. */ 76 76 bool isLockedMachine() const; 77 78 /** Returns whether passed @a position belongs to tool button area. */79 bool isToolButtonArea(const QPoint &position, int iMarginMultiplier = 1) const;80 77 /** @} */ 81 78 … … 208 205 MachineItemData_MinorSpacing, 209 206 MachineItemData_TextSpacing, 210 MachineItemData_ButtonMargin,211 207 }; 212 208 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
r108572 r108687 5 5 6 6 /* 7 * Copyright (C) 2012-202 4Oracle and/or its affiliates.7 * Copyright (C) 2012-2025 Oracle and/or its affiliates. 8 8 * 9 9 * This file is part of VirtualBox base platform packages, as … … 117 117 { 118 118 return scene() ? scene()->itemAt(position, deviceTransform) : 0; 119 }120 121 void UIChooserModel::handleToolButtonClick(UIChooserItem *pItem)122 {123 emit sigToolMenuRequested(pItem->mapToScene(QPointF(pItem->size().width(), 0)).toPoint(),124 pItem->type() == UIChooserNodeType_Machine ? pItem->toMachineItem()->cache() : 0);125 119 } 126 120 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h
r108572 r108687 5 5 6 6 /* 7 * Copyright (C) 2012-202 4Oracle and/or its affiliates.7 * Copyright (C) 2012-2025 Oracle and/or its affiliates. 8 8 * 9 9 * This file is part of VirtualBox base platform packages, as … … 64 64 signals: 65 65 66 /** @name Tool stuff.67 * @{ */68 /** Notifies listeners about tool popup-menu request for certain @a position and optionally machine @a pItem. */69 void sigToolMenuRequested(const QPoint &position, UIVirtualMachineItem *pItem);70 /** @} */71 72 66 /** @name Selection stuff. 73 67 * @{ */ … … 118 112 /** Returns item at @a position, taking into account possible @a deviceTransform. */ 119 113 QGraphicsItem *itemAt(const QPointF &position, const QTransform &deviceTransform = QTransform()) const; 120 121 /** Handles tool button click for certain @a pItem. */122 void handleToolButtonClick(UIChooserItem *pItem);123 114 /** @} */ 124 115
Note:
See TracChangeset
for help on using the changeset viewer.