Fix incorrect size hint for abstract spinbox
authorJens Bache-Wiig <jens.bache-wiig@digia.com>
Thu, 15 Nov 2012 16:38:29 +0000 (17:38 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 15 Nov 2012 17:15:50 +0000 (18:15 +0100)
This size hint was based on strange logic from an alternate
universe. The size hint should only contain the text size
and let the style add what is neccessary for the frame rect etc.
Most styles have worked around this by simply ignoring it,
however some styles could still break a bit.

Note that we add 4 since that is the constant that the old
code 'usually' ended up at and should be compatible with
our existing styles.

Change-Id: Iebdbcb8949dd8b7daa7d8cb96ae5ab7351e4f79d
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
src/widgets/widgets/qabstractspinbox.cpp

index 845cb5d..c48d717 100644 (file)
@@ -825,7 +825,7 @@ QSize QAbstractSpinBox::sizeHint() const
         ensurePolished();
 
         const QFontMetrics fm(fontMetrics());
-        int h = d->edit->sizeHint().height();
+        int h = d->edit->sizeHint().height() + 4;
         int w = 0;
         QString s;
         s = d->prefix + d->textFromValue(d->minimum) + d->suffix + QLatin1Char(' ');
@@ -843,17 +843,6 @@ QSize QAbstractSpinBox::sizeHint() const
         QStyleOptionSpinBox opt;
         initStyleOption(&opt);
         QSize hint(w, h);
-        QSize extra(35, 6);
-        opt.rect.setSize(hint + extra);
-        extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,
-                                                QStyle::SC_SpinBoxEditField, this).size();
-        // get closer to final result by repeating the calculation
-        opt.rect.setSize(hint + extra);
-        extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,
-                                                QStyle::SC_SpinBoxEditField, this).size();
-        hint += extra;
-
-        opt.rect = rect();
         d->cachedSizeHint = style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint, this)
                             .expandedTo(QApplication::globalStrut());
     }