VirtualBox

Changeset 44295 in vbox


Ignore:
Timestamp:
Jan 15, 2013 1:30:43 PM (12 years ago)
Author:
vboxsync
Message:

FE/Qt: VM Selector: Chooser-view: Avoid group-item excessive update.

File:
1 edited

Legend:

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

    r44054 r44295  
    5959    connect(this, SIGNAL(sigMinimumHeightHintChanged(int)),
    6060            model(), SIGNAL(sigRootItemMinimumHeightHintChanged(int)));
    61 
    62     /* Init: */
    63     updateVisibleName();
    64     updateItemCountInfo();
    65     updateToolTip();
    6661}
    6762
     
    8883
    8984    /* Init: */
     85    updateItemCountInfo();
    9086    updateVisibleName();
    91     updateItemCountInfo();
    9287    updateToolTip();
    9388}
     
    116111
    117112    /* Init: */
     113    updateItemCountInfo();
    118114    updateVisibleName();
    119     updateItemCountInfo();
    120115    updateToolTip();
    121116}
     
    146141
    147142    /* Init: */
     143    updateItemCountInfo();
    148144    updateVisibleName();
    149     updateItemCountInfo();
    150145    updateToolTip();
    151146}
     
    213208    m_strName = strName;
    214209
    215     /* Update visible name: */
     210    /* Update linked values: */
    216211    updateVisibleName();
    217     /* Update minimum header size: */
    218212    updateMinimumHeaderSize();
    219213}
     
    458452void UIGChooserItemGroup::handleRootStatusChange()
    459453{
    460     /* Update visible name: */
     454    /* Update linked values: */
    461455    updateVisibleName();
    462     /* Update minimum header size: */
    463456    updateMinimumHeaderSize();
    464457}
     
    513506    if (isRoot())
    514507        iMaximumWidth -= iRootIndent;
    515 
    516     /* Recache visible name: */
     508    /* Calculate new visible name and name-size: */
    517509    QPaintDevice *pPaintDevice = model()->paintDevice();
    518     m_strVisibleName = isMainRoot() ? QString() : compressText(m_nameFont, pPaintDevice, name(), iMaximumWidth);
    519     m_visibleNameSize = isMainRoot() ? QSize(0, 0) : textSize(m_nameFont, pPaintDevice, m_strVisibleName);
    520 
    521     /* Repaint item: */
    522     update();
     510    QString strVisibleName = compressText(m_nameFont, pPaintDevice, name(), iMaximumWidth);
     511    QSize visibleNameSize = textSize(m_nameFont, pPaintDevice, strVisibleName);
     512
     513    /* Update linked values: */
     514    if (m_visibleNameSize != visibleNameSize)
     515    {
     516        m_visibleNameSize = visibleNameSize;
     517        updateGeometry();
     518    }
     519    if (m_strVisibleName != strVisibleName)
     520    {
     521        m_strVisibleName = strVisibleName;
     522        update();
     523    }
    523524}
    524525
    525526void UIGChooserItemGroup::updateItemCountInfo()
    526527{
     528    /* Not for main root: */
     529    if (isMainRoot())
     530        return;
     531
    527532    /* Update item info attributes: */
    528533    QPaintDevice *pPaintDevice = model()->paintDevice();
    529     m_strInfoGroups = isMainRoot() || m_groupItems.isEmpty() ? QString() : QString::number(m_groupItems.size());
    530     m_strInfoMachines = isMainRoot() || m_machineItems.isEmpty() ? QString() : QString::number(m_machineItems.size());
    531     m_infoSizeGroups = isMainRoot() ? QSize(0, 0) : textSize(m_infoFont, pPaintDevice, m_strInfoGroups);
    532     m_infoSizeMachines = isMainRoot() ? QSize(0, 0) : textSize(m_infoFont, pPaintDevice, m_strInfoMachines);
     534    QString strInfoGroups = m_groupItems.isEmpty() ? QString() : QString::number(m_groupItems.size());
     535    QString strInfoMachines = m_machineItems.isEmpty() ? QString() : QString::number(m_machineItems.size());
     536    QSize infoSizeGroups = textSize(m_infoFont, pPaintDevice, m_strInfoGroups);
     537    QSize infoSizeMachines = textSize(m_infoFont, pPaintDevice, m_strInfoMachines);
    533538
    534539    /* Update linked values: */
    535     updateMinimumHeaderSize();
     540    bool fSomethingChanged = false;
     541    if (m_strInfoGroups != strInfoGroups)
     542    {
     543        m_strInfoGroups = strInfoGroups;
     544        fSomethingChanged = true;
     545    }
     546    if (m_strInfoMachines != strInfoMachines)
     547    {
     548        m_strInfoMachines = strInfoMachines;
     549        fSomethingChanged = true;
     550    }
     551    if (m_infoSizeGroups != infoSizeGroups)
     552    {
     553        m_infoSizeGroups = infoSizeGroups;
     554        fSomethingChanged = true;
     555    }
     556    if (m_infoSizeMachines != infoSizeMachines)
     557    {
     558        m_infoSizeMachines = infoSizeMachines;
     559        fSomethingChanged = true;
     560    }
     561    if (fSomethingChanged)
     562    {
     563        updateVisibleName();
     564        updateMinimumHeaderSize();
     565    }
    536566}
    537567
     
    577607        iHeaderWidth += (iMinorSpacing + m_enterButtonSize.width());
    578608
    579     /* Search for maximum height: */
     609    /* Calculate maximum height: */
    580610    QList<int> heights;
    581611    /* Button height: */
     
    597627        iHeaderHeight = qMax(iHeaderHeight, iHeight);
    598628
    599     /* Recache minimum header size: */
    600     m_minimumHeaderSize = QSize(iHeaderWidth, iHeaderHeight);
     629    /* Calculate new minimum header size: */
     630    QSize minimumHeaderSize = QSize(iHeaderWidth, iHeaderHeight);
     631
     632    /* Is there something changed? */
     633    if (m_minimumHeaderSize == minimumHeaderSize)
     634        return;
    601635
    602636    /* Update linked values: */
     637    m_minimumHeaderSize = minimumHeaderSize;
    603638    updateGeometry();
    604639}
     
    747782    }
    748783
    749     /* Update: */
    750     updateVisibleName();
     784    /* Update linked values: */
    751785    updateItemCountInfo();
    752786    updateToolTip();
     787    updateGeometry();
    753788}
    754789
     
    779814    }
    780815
    781     /* Update: */
    782     updateVisibleName();
     816    /* Update linked values: */
    783817    updateItemCountInfo();
    784818    updateToolTip();
     819    updateGeometry();
    785820}
    786821
     
    795830    }
    796831
    797     /* Update: */
    798     updateVisibleName();
     832    /* Update linked values: */
    799833    updateItemCountInfo();
    800834    updateToolTip();
     835    updateGeometry();
    801836}
    802837
     
    851886    }
    852887
    853     /* Update: */
    854     updateVisibleName();
     888    /* Update linked values: */
    855889    updateItemCountInfo();
    856890    updateToolTip();
     891    updateGeometry();
    857892}
    858893
     
    14601495    UIGChooserItem::hoverMoveEvent(pEvent);
    14611496
    1462     /* Update visible name: */
     1497    /* Update linked values: */
    14631498    updateVisibleName();
    14641499}
     
    14731508    UIGChooserItem::hoverLeaveEvent(pEvent);
    14741509
    1475     /* Update visible name: */
     1510    /* Update linked values: */
    14761511    updateVisibleName();
    14771512}
Note: See TracChangeset for help on using the changeset viewer.

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