VirtualBox

Ignore:
Timestamp:
Aug 5, 2015 1:57:46 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
101945
Message:

FE:Qt 7928:Fix for slider color issue.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIAdvancedSlider.cpp

    r52733 r57193  
    9595#endif /* Q_WS_MAC */
    9696
     97        /* Calculating half of tick-width as it is required to adjust the colors range geometry
     98         * for sliders which have tick-interval and single-step equal like CPU and Monitor count sliders.
     99         * It is used in below code to draw correct boundaries. */
     100        qreal dHalfTickWidth = 0;
     101        if (tickInterval() == singleStep())
     102            dHalfTickWidth = (qreal)ticks.width() / (maximum() - minimum()) / 2;
     103
    97104        if ((m_minOpt != -1 &&
    98105             m_maxOpt != -1) &&
     
    101108            int posMinOpt = QStyle::sliderPositionFromValue(opt.minimum, opt.maximum, m_minOpt, available);
    102109            int posMaxOpt = QStyle::sliderPositionFromValue(opt.minimum, opt.maximum, m_maxOpt, available);
    103             p.fillRect(ticks.x() + posMinOpt, ticks.y(), posMaxOpt - posMinOpt + 1, ticks.height(), m_optColor);
     110            p.fillRect(ticks.x() + posMinOpt, ticks.y(), posMaxOpt - posMinOpt + 1 + dHalfTickWidth, ticks.height(), m_optColor);
    104111        }
    105112        if ((m_minWrn != -1 &&
     
    109116            int posMinWrn = QStyle::sliderPositionFromValue(opt.minimum, opt.maximum, m_minWrn, available);
    110117            int posMaxWrn = QStyle::sliderPositionFromValue(opt.minimum, opt.maximum, m_maxWrn, available);
    111             p.fillRect(ticks.x() + posMinWrn, ticks.y(), posMaxWrn - posMinWrn + 1, ticks.height(), m_wrnColor);
     118            if (maximum() > m_maxWrn)
     119                p.fillRect(ticks.x() + posMinWrn + dHalfTickWidth, ticks.y(), posMaxWrn - posMinWrn + 1, ticks.height(), m_wrnColor);
     120            else
     121                p.fillRect(ticks.x() + posMinWrn + dHalfTickWidth, ticks.y(), posMaxWrn - posMinWrn + 1 - dHalfTickWidth, ticks.height(), m_wrnColor);
    112122        }
    113123        if ((m_minErr != -1 &&
     
    117127            int posMinErr = QStyle::sliderPositionFromValue(opt.minimum, opt.maximum, m_minErr, available);
    118128            int posMaxErr = QStyle::sliderPositionFromValue(opt.minimum, opt.maximum, m_maxErr, available);
    119             p.fillRect(ticks.x() + posMinErr, ticks.y(), posMaxErr - posMinErr + 1, ticks.height(), m_errColor);
     129            p.fillRect(ticks.x() + posMinErr + dHalfTickWidth, ticks.y(), posMaxErr - posMinErr + 1 - dHalfTickWidth, ticks.height(), m_errColor);
    120130        }
    121131        p.end();
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