VirtualBox

Changeset 44051 in vbox


Ignore:
Timestamp:
Dec 6, 2012 2:04:04 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
82522
Message:

FE/Qt: VM group UI: Chooser-view: Precise scene rectangle calculation.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.cpp

    r43957 r44051  
    135135{
    136136    /* Setup chooser-model connections: */
    137     connect(m_pChooserModel, SIGNAL(sigRootItemResized(const QSizeF&)),
    138             m_pChooserView, SLOT(sltHandleRootItemResized(const QSizeF&)));
    139137    connect(m_pChooserModel, SIGNAL(sigRootItemMinimumWidthHintChanged(int)),
    140             m_pChooserView, SLOT(sltHandleRootItemMinimumWidthHintChanged(int)));
     138            m_pChooserView, SLOT(sltMinimumWidthHintChanged(int)));
     139    connect(m_pChooserModel, SIGNAL(sigRootItemMinimumHeightHintChanged(int)),
     140            m_pChooserView, SLOT(sltMinimumHeightHintChanged(int)));
    141141    connect(m_pChooserModel, SIGNAL(sigFocusChanged(UIGChooserItem*)),
    142142            m_pChooserView, SLOT(sltFocusChanged(UIGChooserItem*)));
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.cpp

    r43957 r44051  
    4040    , m_pParent(pParent)
    4141    , m_iPreviousMinimumWidthHint(0)
     42    , m_iPreviousMinimumHeightHint(0)
    4243    , m_dragTokenPlace(DragToken_Off)
    4344    , m_fHovered(false)
     
    176177            emit sigMinimumWidthHintChanged(m_iPreviousMinimumWidthHint);
    177178        }
     179        /* Root-item should notify chooser-view if minimum-height-hint was changed: */
     180        int iMinimumHeightHint = minimumHeightHint();
     181        if (m_iPreviousMinimumHeightHint != iMinimumHeightHint)
     182        {
     183            /* Save new minimum-height-hint, notify listener: */
     184            m_iPreviousMinimumHeightHint = iMinimumHeightHint;
     185            emit sigMinimumHeightHintChanged(m_iPreviousMinimumHeightHint);
     186        }
    178187    }
    179188}
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h

    r43957 r44051  
    6868signals:
    6969
    70     /* Notifier: Layout stuff: */
     70    /* Notifiers: Size-hint stuff: */
    7171    void sigMinimumWidthHintChanged(int iMinimumWidthHint);
     72    void sigMinimumHeightHintChanged(int iMinimumHeightHint);
    7273
    7374    /* Notifiers: Hover stuff: */
     
    193194    QRectF m_previousGeometry;
    194195    int m_iPreviousMinimumWidthHint;
     196    int m_iPreviousMinimumHeightHint;
    195197    DragToken m_dragTokenPlace;
    196198
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp

    r43957 r44051  
    5454    retranslateUi();
    5555
    56     /* Prepare connections: */
     56    /* Prepare main-root-item connections: */
    5757    connect(this, SIGNAL(sigMinimumWidthHintChanged(int)),
    5858            model(), SIGNAL(sigRootItemMinimumWidthHintChanged(int)));
     59    connect(this, SIGNAL(sigMinimumHeightHintChanged(int)),
     60            model(), SIGNAL(sigRootItemMinimumHeightHintChanged(int)));
    5961
    6062    /* Init: */
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp

    r43957 r44051  
    176176    /* Make sure root-item is shown: */
    177177    root()->show();
    178     /* Notify listener about root-item relayouted: */
    179     emit sigRootItemResized(root()->geometry().size());
    180178}
    181179
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h

    r43957 r44051  
    7474
    7575    /* Notifiers: Root-item stuff: */
    76     void sigRootItemResized(const QSizeF &size);
    7776    void sigRootItemMinimumWidthHintChanged(int iRootItemMinimumWidthHint);
     77    void sigRootItemMinimumHeightHintChanged(int iRootItemMinimumHeightHint);
    7878    void sigSlidingStarted();
    7979
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserView.cpp

    r43957 r44051  
    2727UIGChooserView::UIGChooserView(QWidget *pParent)
    2828    : QGraphicsView(pParent)
     29    , m_iMinimumWidthHint(0)
     30    , m_iMinimumHeightHint(0)
    2931{
    3032    /* Setup frame: */
    3133    setFrameShape(QFrame::NoFrame);
    3234    setFrameShadow(QFrame::Plain);
     35    setAlignment(Qt::AlignLeft | Qt::AlignTop);
    3336
    3437    /* Setup scroll-bars policy: */
     
    3942}
    4043
    41 void UIGChooserView::sltHandleRootItemResized(const QSizeF &size)
     44void UIGChooserView::sltMinimumWidthHintChanged(int iMinimumWidthHint)
    4245{
     46    /* Is there something changed? */
     47    if (m_iMinimumWidthHint == iMinimumWidthHint)
     48        return;
     49
     50    /* Remember new value: */
     51    m_iMinimumWidthHint = iMinimumWidthHint;
     52
     53    /* Set minimum view width according passed width-hint: */
     54    setMinimumWidth(2 * frameWidth() + iMinimumWidthHint + verticalScrollBar()->sizeHint().width());
     55
    4356    /* Update scene-rect: */
    44     updateSceneRect(size);
     57    updateSceneRect();
    4558}
    4659
    47 void UIGChooserView::sltHandleRootItemMinimumWidthHintChanged(int iRootItemMinimumWidthHint)
     60void UIGChooserView::sltMinimumHeightHintChanged(int iMinimumHeightHint)
    4861{
    49     /* Set minimum view width according to root-item minimum-width-hint: */
    50     setMinimumWidth(2 * frameWidth() + iRootItemMinimumWidthHint + verticalScrollBar()->sizeHint().width());
     62    /* Is there something changed? */
     63    if (m_iMinimumHeightHint == iMinimumHeightHint)
     64        return;
     65
     66    /* Remember new value: */
     67    m_iMinimumHeightHint = iMinimumHeightHint;
     68
     69    /* Update scene-rect: */
     70    updateSceneRect();
    5171}
    5272
     
    7191}
    7292
    73 void UIGChooserView::updateSceneRect(const QSizeF &sizeHint /* = QSizeF() */)
     93void UIGChooserView::updateSceneRect()
    7494{
    75     QPointF topLeft = QPointF(0, 0);
    76     QSizeF rectSize = viewport()->size();
    77     if (!sizeHint.isNull())
    78         rectSize = rectSize.expandedTo(sizeHint);
    79     setSceneRect(QRectF(topLeft, rectSize));
     95    setSceneRect(0, 0, m_iMinimumWidthHint, m_iMinimumHeightHint);
    8096}
    8197
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserView.h

    r43957 r44051  
    4343private slots:
    4444
    45     /* Handlers: Root-item stuff: */
    46     void sltHandleRootItemResized(const QSizeF &size);
    47     void sltHandleRootItemMinimumWidthHintChanged(int iRootItemMinimumWidthHint);
     45    /* Handlers: Size-hint stuff: */
     46    void sltMinimumWidthHintChanged(int iMinimumWidthHint);
     47    void sltMinimumHeightHintChanged(int iMinimumHeightHint);
    4848
    4949    /* Handler: Focus-item stuff: */
     
    5656
    5757    /* Helper: Update stuff: */
    58     void updateSceneRect(const QSizeF &sizeHint = QSizeF());
     58    void updateSceneRect();
     59
     60    /* Variables: */
     61    int m_iMinimumWidthHint;
     62    int m_iMinimumHeightHint;
    5963};
    6064
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette