summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGareth Stockwell <ext-gareth.stockwell@nokia.com>2010-02-19 14:34:04 (GMT)
committerGareth Stockwell <ext-gareth.stockwell@nokia.com>2010-02-19 14:34:04 (GMT)
commit3131c8cf9a2641cb62eef8c05acf727282b8f11d (patch)
tree2577b5277379fa8beb90d66f523b257f6f65fa9b
parent4cabe964bc02e07fe96dd8fda5f8c73a6e1d6a12 (diff)
parent145f46347bdcdf0efe2821b8ae2c34f53c543d1c (diff)
downloadQt-3131c8cf9a2641cb62eef8c05acf727282b8f11d.zip
Qt-3131c8cf9a2641cb62eef8c05acf727282b8f11d.tar.gz
Qt-3131c8cf9a2641cb62eef8c05acf727282b8f11d.tar.bz2
Merge branch '4.6' of S:\dynamic\git\qt\trolltech\qt-s60-public.git\ into 4.6
-rw-r--r--mkspecs/features/symbian/stl.prf19
-rw-r--r--src/gui/styles/qs60style.cpp14
2 files changed, 25 insertions, 8 deletions
diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf
index e21ee5c..85c758a 100644
--- a/mkspecs/features/symbian/stl.prf
+++ b/mkspecs/features/symbian/stl.prf
@@ -15,11 +15,18 @@ INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE
INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off
# libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new
-exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcppv5.dll)|exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcppv5.dll) {
- LIBS *= -llibstdcppv5.dll
+STL_LIB = -llibstdcppv5.dll
- # STDCPP turns on standard C++ new behaviour (ie. throwing new)
- MMP_RULES += "STDCPP"
-} else {
- LIBS *= -llibstdcpp.dll
+# STDCPP turns on standard C++ new behaviour (ie. throwing new)
+STL_MMP_RULE = "STDCPP"
+
+# Fall back to old implementation if that is the only one that is found
+exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcpp.dll)|exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcpp.dll) {
+ !exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcppv5.dll):!exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcppv5.dll) {
+ STL_LIB = -llibstdcpp.dll
+ STL_MMP_RULE =
+ }
}
+
+LIBS *= $$STL_LIB
+MMP_RULES *= $$STL_MMP_RULE
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 74707af..565cc2c 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -2396,10 +2396,20 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt,
case CT_PushButton:
sz = QCommonStyle::sizeFromContents( ct, opt, csz, widget);
//FIXME properly - style should calculate the location of border frame-part
- sz += QSize(2 * pixelMetric(PM_ButtonMargin), 2 * pixelMetric(PM_ButtonMargin));
- if (const QAbstractButton *buttonWidget = (qobject_cast<const QAbstractButton *>(widget)))
+ if (const QAbstractButton *buttonWidget = (qobject_cast<const QAbstractButton *>(widget))) {
if (buttonWidget->isCheckable())
sz += QSize(pixelMetric(PM_IndicatorWidth) + pixelMetric(PM_CheckBoxLabelSpacing), 0);
+ const int iconHeight = (!buttonWidget->icon().isNull()) ? buttonWidget->iconSize().height() : 0;
+ const int textHeight = (buttonWidget->text().length() > 0) ?
+ buttonWidget->fontMetrics().size(Qt::TextSingleLine, buttonWidget->text()).height() : 0;
+ const int decoratorHeight = (buttonWidget->isCheckable()) ? pixelMetric(PM_IndicatorHeight) : 0;
+
+ const int contentHeight =
+ qMax(qMax(iconHeight, decoratorHeight) + pixelMetric(PM_ButtonMargin),
+ textHeight + 2*pixelMetric(PM_ButtonMargin));
+ sz.setHeight(contentHeight);
+ sz += QSize(2 * pixelMetric(PM_ButtonMargin), 0);
+ }
break;
case CT_LineEdit:
if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt))