Changeset 77228 in vbox
- Timestamp:
- Feb 8, 2019 6:05:46 PM (6 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp
r77224 r77228 167 167 connect(m_pChooserModel, &UIChooserModel::sigRootItemMinimumWidthHintChanged, 168 168 m_pChooserView, &UIChooserView::sltMinimumWidthHintChanged); 169 connect(m_pChooserModel, &UIChooserModel::sigFocusChanged,170 m_pChooserView, &UIChooserView::sltFocusChanged);171 169 connect(m_pChooserModel, &UIChooserModel::sigToolMenuRequested, 172 170 this, &UIChooser::sltToolMenuRequested); -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.h
r77224 r77228 212 212 /** Makes sure item is visible. */ 213 213 virtual void makeSureItsVisible(); 214 /** Makes sure passed child @a pItem is visible. */ 215 virtual void makeSureItemIsVisible(UIChooserItem *pItem) { Q_UNUSED(pItem); } 214 216 215 217 /** Returns pixmap item representation. */ -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp
r77224 r77228 289 289 { 290 290 return "UIChooserItemGroup"; 291 } 292 293 void UIChooserItemGroup::makeSureItemIsVisible(UIChooserItem *pItem) 294 { 295 /* Make sure item exists: */ 296 AssertPtrReturnVoid(pItem); 297 298 /* Convert child rectangle to local coordinates for this group. This also 299 * works for a child at any sub-level, doesn't necessary of this group. */ 300 const QPointF positionInScene = pItem->mapToScene(QPointF(0, 0)); 301 const QPointF positionInGroup = mapFromScene(positionInScene); 302 const QRectF itemRectInGroup = QRectF(positionInGroup, pItem->size()); 303 m_pScrollArea->makeSureRectIsVisible(itemRectInGroup); 291 304 } 292 305 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h
r77224 r77228 99 99 /** Class-name used for drag&drop mime-data format. */ 100 100 static QString className(); 101 102 /** Makes sure passed child @a pItem is visible. */ 103 virtual void makeSureItemIsVisible(UIChooserItem *pItem) /* override */; 101 104 /** @} */ 102 105 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
r77224 r77228 421 421 connect(m_pFocusItem, SIGNAL(destroyed(QObject*)), this, SLOT(sltFocusItemDestroyed())); 422 422 423 /* Notify listeners about focus change: */ 424 emit sigFocusChanged(); 423 /* If dialog is visible and item exists => make it visible as well: */ 424 if (scene()->views()[0]->window()->isVisible() && pItem) 425 root()->makeSureItemIsVisible(pItem); 425 426 } 426 427 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h
r77224 r77228 79 79 /** Notifies about selection changed. */ 80 80 void sigSelectionChanged(); 81 /** Notifies about focus changed. */82 void sigFocusChanged();83 81 84 82 /** Notifies about root sliding started. */ -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserView.cpp
r77224 r77228 100 100 } 101 101 102 void UIChooserView::sltFocusChanged()103 {104 /* Make sure focus-item set: */105 const UIChooserItem *pFocusItem = chooser() && chooser()->model()106 ? chooser()->model()->focusItem()107 : 0;108 if (!pFocusItem)109 return;110 111 const QSize viewSize = viewport()->size();112 QRectF geo = pFocusItem->geometry();113 geo &= QRectF(geo.topLeft(), viewSize);114 ensureVisible(geo, 0, 0);115 }116 117 102 void UIChooserView::sltMinimumWidthHintChanged(int iHint) 118 103 { -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserView.h
r77224 r77228 53 53 public slots: 54 54 55 /** @name General stuff.56 * @{ */57 /** Handles focus change to @a pFocusItem. */58 void sltFocusChanged();59 /** @} */60 61 55 /** @name Layout stuff. 62 56 * @{ */ -
trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.cpp
r77203 r77228 98 98 } 99 99 100 void UIGraphicsScrollArea::makeSureRectIsVisible(const QRectF &rect) 101 { 102 /* Make sure rect size is bound by the scroll-area size: */ 103 QRectF actualRect = rect; 104 QSizeF actualRectSize = actualRect.size(); 105 actualRectSize = actualRectSize.boundedTo(size()); 106 actualRect.setSize(actualRectSize); 107 108 switch (m_enmOrientation) 109 { 110 /* Scroll viewport horizontally: */ 111 case Qt::Horizontal: 112 { 113 /* If rectangle is at least partially right of visible area: */ 114 if (actualRect.x() + actualRect.width() > size().width()) 115 m_pScrollBar->setValue(m_pScrollBar->value() + actualRect.x() + actualRect.width() - size().width()); 116 /* If rectangle is at least partially left of visible area: */ 117 else if (actualRect.x() < 0) 118 m_pScrollBar->setValue(m_pScrollBar->value() + actualRect.x()); 119 break; 120 } 121 /* Scroll viewport vertically: */ 122 case Qt::Vertical: 123 { 124 /* If rectangle is at least partially under visible area: */ 125 if (actualRect.y() + actualRect.height() > size().height()) 126 m_pScrollBar->setValue(m_pScrollBar->value() + actualRect.y() + actualRect.height() - size().height()); 127 /* If rectangle is at least partially above visible area: */ 128 else if (actualRect.y() < 0) 129 m_pScrollBar->setValue(m_pScrollBar->value() + actualRect.y()); 130 break; 131 } 132 } 133 } 134 100 135 bool UIGraphicsScrollArea::eventFilter(QObject *pObject, QEvent *pEvent) 101 136 { -
trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.h
r77086 r77228 50 50 QIGraphicsWidget *viewport() const; 51 51 52 /** Makes sure passed @a rect is visible. */ 53 void makeSureRectIsVisible(const QRectF &rect); 54 52 55 protected: 53 56
Note:
See TracChangeset
for help on using the changeset viewer.