VirtualBox

Changeset 108061 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Feb 4, 2025 2:07:59 PM (3 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167341
Message:

FE/Qt: bugref:10814: VBox Manager / Tools pane: Proper handling for extra-button click; Taking into account button type and exact geometry.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/manager/tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsItem.cpp

    r108042 r108061  
    899899
    900900    /* Prepare button sub-rect: */
    901     QRect subRect;
    902     subRect.setWidth(iButtonWidth);
    903     subRect.setHeight(rectangle.height() / 2);
    904     subRect.moveTopLeft(QPoint(rectangle.right() - subRect.width() - 2,
    905                                rectangle.bottom() - 3 * rectangle.height() / 4 + 1));
     901    m_extraButtonRect.setWidth(iButtonWidth);
     902    m_extraButtonRect.setHeight(rectangle.height() / 2);
     903    m_extraButtonRect.moveTopLeft(QPoint(rectangle.right() - m_extraButtonRect.width() - 2,
     904                                         rectangle.bottom() - 3 * rectangle.height() / 4 + 1));
    906905
    907906    /* Paint button frame: */
    908907    QPainterPath painterPath;
    909     painterPath.addRoundedRect(subRect, iPadding, iPadding);
     908    painterPath.addRoundedRect(m_extraButtonRect, iPadding, iPadding);
    910909    QColor backgroundColor1 = uiCommon().isInDarkMode()
    911910                            ? backgroundColor.lighter(110)
     
    919918                            ? backgroundColor.lighter(180)
    920919                            : backgroundColor.darker(140);
    921     pPainter->fillRect(subRect, backgroundColor2);
     920    pPainter->fillRect(m_extraButtonRect, backgroundColor2);
    922921
    923922    /* Paint arrow: */
    924923    if (!model()->showItemNames())
    925924    {
    926         pPainter->drawLine(subRect.topLeft() + QPoint(3, 3), QPoint(subRect.right() - 2, subRect.center().y()));
    927         pPainter->drawLine(subRect.bottomLeft() + QPoint(3, -3), QPoint(subRect.right() - 2, subRect.center().y()));
     925        pPainter->drawLine(m_extraButtonRect.topLeft() + QPoint(3, 3),
     926                           QPoint(m_extraButtonRect.right() - 2, m_extraButtonRect.center().y()));
     927        pPainter->drawLine(m_extraButtonRect.bottomLeft() + QPoint(3, -3),
     928                           QPoint(m_extraButtonRect.right() - 2, m_extraButtonRect.center().y()));
    928929    }
    929930    else
    930931    {
    931         pPainter->drawLine(subRect.topRight() + QPoint(-3, 3), QPoint(subRect.left() + 3, subRect.center().y()));
    932         pPainter->drawLine(subRect.bottomRight() + QPoint(-3, -3), QPoint(subRect.left() + 3, subRect.center().y()));
     932        pPainter->drawLine(m_extraButtonRect.topRight() + QPoint(-3, 3),
     933                           QPoint(m_extraButtonRect.left() + 3, m_extraButtonRect.center().y()));
     934        pPainter->drawLine(m_extraButtonRect.bottomRight() + QPoint(-3, -3),
     935                           QPoint(m_extraButtonRect.left() + 3, m_extraButtonRect.center().y()));
    933936    }
    934937
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsItem.h

    r108039 r108061  
    139139          * @param  constraint  Brings size constraint. */
    140140        virtual QSizeF sizeHint(Qt::SizeHint enmWhich, const QSizeF &constraint = QSizeF()) const RT_OVERRIDE;
     141
     142        /** Returns the extra-button rectangle. */
     143        QRect extraButtonRect() const { return m_extraButtonRect; }
    141144    /** @} */
    142145
     
    309312        /** Holds the name size. */
    310313        QSize  m_nameSize;
     314
     315        /** Holds the extra-button rectangle. */
     316        mutable QRect  m_extraButtonRect;
    311317    /** @} */
    312318};
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp

    r108037 r108061  
    442442                        if (pClickedItem)
    443443                        {
    444                             /* Toggle the button: */
     444                            /* Do we have extra-button? */
    445445                            if (pClickedItem->hasExtraButton())
    446446                            {
    447                                 m_fShowItemNames = !m_fShowItemNames;
    448                                 foreach (UIToolsItem *pItem, m_items)
    449                                     pItem->updateGeometry();
    450                                 updateLayout();
     447                                /* Check if clicked place is within extra-button geometry: */
     448                                const QPointF itemPos = pClickedItem->mapFromParent(scenePos);
     449                                if (pClickedItem->extraButtonRect().contains(itemPos.toPoint()))
     450                                {
     451                                    /* Handle known button types: */
     452                                    switch (pClickedItem->itemType())
     453                                    {
     454                                        case UIToolType_Welcome:
     455                                        {
     456                                            /* Toggle the button: */
     457                                            m_fShowItemNames = !m_fShowItemNames;
     458                                            /* Update geometry for all the items: */
     459                                            foreach (UIToolsItem *pItem, m_items)
     460                                                pItem->updateGeometry();
     461                                            /* Recalculate layout: */
     462                                            updateLayout();
     463                                            break;
     464                                        }
     465                                        default:
     466                                            break;
     467                                    }
     468                                }
    451469                            }
    452470
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