summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Arve Saether <jan-arve.saether@digia.com>2014-01-16 17:54:54 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-21 10:50:59 +0100
commit86ad5273b6fec36cd1f29287918dcbb4b6f7b1e9 (patch)
treece16cb3c8fb8d037c865cebc8fe286c84398f53f
parent3339b974002da29f47d947e80ec951bda9da2b3e (diff)
downloadqtquickcontrols-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.cpp13
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) {