VirtualBox

Ignore:
Timestamp:
Apr 24, 2024 11:12:47 AM (12 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
162911
Message:

FE/Qt. bugref:9510. Updating tooltip label when chart is redrawn.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.cpp

    r103943 r104413  
    145145    int maxDataSize() const;
    146146    QString toolTipText() const;
     147    bool isUnderMouse() const;
     148    void updateIndexUnderCursor(const QPoint &point);
     149    void updateToolTip();
    147150
    148151    UIMetric *m_pMetric;
     
    378381    }
    379382    else if (pEvent->type() == QEvent::ToolTip)
    380     {
    381         QHelpEvent *pToolTipEvent = static_cast<QHelpEvent *>(pEvent);
    382         if (m_pMouseOverLabel)
    383         {
    384             if (m_iDataIndexUnderCursor < 0)
    385                 m_pMouseOverLabel->setVisible(false);
    386             else
    387             {
    388                 QString strToolTip = toolTipText();
    389                 if (!strToolTip.isEmpty())
    390                 {
    391                     m_pMouseOverLabel->setText(strToolTip);
    392                     m_pMouseOverLabel->move(QPoint(pToolTipEvent->pos().x(), pToolTipEvent->pos().y() - m_pMouseOverLabel->height()));
    393                     m_pMouseOverLabel->setVisible(true);
    394                 }
    395                 else
    396                     m_pMouseOverLabel->setVisible(false);
    397             }
    398         }
    399 
    400 
    401     }
     383        updateToolTip();
     384
    402385    return QWidget::event(pEvent);
    403386}
     
    411394}
    412395
    413 void UIChart::mouseMoveEvent(QMouseEvent *pEvent)
    414 {
    415     const int iX = width() - pEvent->position().x() - m_iMarginRight;
    416     QPoint eventPosition(pEvent->position().x(), pEvent->position().y());
     396void UIChart::updateIndexUnderCursor(const QPoint &point)
     397{
     398    if (!isUnderMouse())
     399    {
     400        m_iDataIndexUnderCursor = -1;
     401        return;
     402    }
     403    const int iX = width() - point.x() - m_iMarginRight;
     404
    417405    int iDataSize = maxDataSize();
    418406    m_iDataIndexUnderCursor = -1;
    419407
    420     if (iDataSize > 0 && m_lineChartRect.contains(eventPosition))
     408    if (iDataSize > 0 && m_lineChartRect.contains(point))
    421409    {
    422410        m_iDataIndexUnderCursor = m_iMaximumQueueSize  - (int)((iX) / m_fPixelPerDataPoint) - 1;
    423411        m_iDataIndexUnderCursor = m_iDataIndexUnderCursor - (m_iMaximumQueueSize - iDataSize);
    424412    }
    425 
     413}
     414
     415void UIChart::updateToolTip()
     416{
     417    updateIndexUnderCursor(mapFromGlobal(QCursor::pos()));
     418    if (m_pMouseOverLabel)
     419    {
     420        if (m_iDataIndexUnderCursor < 0)
     421            m_pMouseOverLabel->setVisible(false);
     422        else
     423        {
     424            QString strToolTip = toolTipText();
     425            QPoint pos = mapFromGlobal(QCursor::pos());
     426
     427            if (!strToolTip.isEmpty())
     428            {
     429                m_pMouseOverLabel->setText(strToolTip);
     430                m_pMouseOverLabel->move(QPoint(pos.x(), pos.y() - m_pMouseOverLabel->height()));
     431                m_pMouseOverLabel->setVisible(true);
     432            }
     433            else
     434                m_pMouseOverLabel->setVisible(false);
     435        }
     436    }
     437}
     438void UIChart::mouseMoveEvent(QMouseEvent *pEvent)
     439{
     440    QPoint eventPosition(pEvent->position().x(), pEvent->position().y());
     441    updateIndexUnderCursor(eventPosition);
    426442    update();
    427443    QWidget::mouseMoveEvent(pEvent);
     
    430446void UIChart::paintEvent(QPaintEvent *pEvent)
    431447{
     448    if (isUnderMouse())
     449        updateToolTip();
     450
    432451    Q_UNUSED(pEvent);
    433452    if (!m_pMetric || m_iMaximumQueueSize <= 1)
     
    731750}
    732751
     752bool UIChart::isUnderMouse() const
     753{
     754    return rect().contains(mapFromGlobal(QCursor::pos()));
     755}
     756
    733757void UIChart::drawCombinedPieCharts(QPainter &painter, quint64 iMaximum)
    734758{
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