diff options
author | Jan Arve Saether <jan-arve.saether@digia.com> | 2014-01-16 17:54:54 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-21 10:50:59 +0100 |
commit | 86ad5273b6fec36cd1f29287918dcbb4b6f7b1e9 (patch) | |
tree | ce16cb3c8fb8d037c865cebc8fe286c84398f53f | |
parent | 3339b974002da29f47d947e80ec951bda9da2b3e (diff) | |
download | qtquickcontrols-86ad5273b6fec36cd1f29287918dcbb4b6f7b1e9.tar.gz |
Fix a rounding error in the baseline of SpinBox
Change-Id: I24f1ecc3df05b2730a43c52727026aa98bf82acd
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
-rw-r--r-- | src/controls/Private/qquickstyleitem.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/controls/Private/qquickstyleitem.cpp b/src/controls/Private/qquickstyleitem.cpp index 476ac489..4748788f 100644 --- a/src/controls/Private/qquickstyleitem.cpp +++ b/src/controls/Private/qquickstyleitem.cpp @@ -971,6 +971,7 @@ QSize QQuickStyleItem::sizeFromContents(int width, int height) qreal QQuickStyleItem::baselineOffset() { QRect r; + bool ceilResult = true; // By default baseline offset rounding is done upwards switch (m_itemType) { case RadioButton: r = qApp->style()->subElementRect(QStyle::SE_RadioButtonContents, m_styleoption); @@ -992,16 +993,20 @@ qreal QQuickStyleItem::baselineOffset() } break; case SpinBox: - if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(m_styleoption)) + if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(m_styleoption)) { r = qApp->style()->subControlRect(QStyle::CC_SpinBox, spinbox, QStyle::SC_SpinBoxEditField); + ceilResult = false; + } break; default: break; } - if (r.isValid()) { + if (r.height() > 0) { const QFontMetrics &fm = m_styleoption->fontMetrics; - const float surplus = r.height() - fm.height(); - float result = float(r.top()) + surplus/2.0 + fm.ascent(); + int surplus = r.height() - fm.height(); + if ((surplus & 1) && ceilResult) + surplus++; + int result = r.top() + surplus/2 + fm.ascent(); #ifdef Q_OS_OSX if (style() == QStringLiteral("mac")) { switch (m_itemType) { |