From 9778b61162077298042f277631d67f831eac97a4 Mon Sep 17 00:00:00 2001 From: Mark Elrod Date: Fri, 27 Jun 2014 21:02:24 -0500 Subject: [PATCH 3/3] Fixed combobox vertical scaling Change-Id: Ie64b963d4d674ee218f6c61b6238d2da63a9337c --- src/widgets/styles/qmacstyle_mac.mm | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index c3f815f..34cc2d3 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -1479,19 +1479,21 @@ QRect QMacStylePrivate::comboboxEditBounds(const QRect &outerBounds, const HIThe */ void QMacStylePrivate::drawCombobox(const HIRect &outerBounds, const HIThemeButtonDrawInfo &bdi, QPainter *p) { - if (!(bdi.kind == kThemeComboBox && outerBounds.size.height > 28)){ + if (0) //if (!(bdi.kind == kThemeComboBox && outerBounds.size.height > 28)){ + { // We have an unscaled combobox, or popup-button; use Carbon directly. HIRect innerBounds = QMacStylePrivate::comboboxInnerBounds(outerBounds, bdi.kind); HIThemeDrawButton(&innerBounds, &bdi, QMacCGContext(p), kHIThemeOrientationNormal, 0); } else { QPixmap buffer; QString key = QString(QLatin1String("$qt_cbox%1-%2")).arg(int(bdi.state)).arg(int(bdi.adornment)); - if (!QPixmapCache::find(key, buffer)) { - HIRect innerBoundsSmallCombo = {{3, 3}, {29, 25}}; - buffer = QPixmap(35, 28); + if (1) //!QPixmapCache::find(key, buffer)) + { + HIRect innerBounds = QMacStylePrivate::comboboxInnerBounds(outerBounds, bdi.kind); + buffer = QPixmap(outerBounds.size.width, outerBounds.size.height); buffer.fill(Qt::transparent); QPainter buffPainter(&buffer); - HIThemeDrawButton(&innerBoundsSmallCombo, &bdi, QMacCGContext(&buffPainter), kHIThemeOrientationNormal, 0); + HIThemeDrawButton(&innerBounds, &bdi, QMacCGContext(&buffPainter), kHIThemeOrientationNormal, 0); buffPainter.end(); QPixmapCache::insert(key, buffer); } @@ -1514,8 +1516,10 @@ void QMacStylePrivate::drawCombobox(const HIRect &outerBounds, const HIThemeButt p->drawPixmap(0, fheight, fwidth, sheight, buffer, 0, fheight, fwidth, 1); p->drawPixmap(bstart, fheight, bwidth, center - fheight, buffer, buffer.width() - bwidth, fheight - 1, bwidth, 1); p->drawPixmap(bstart, center, bwidth, sheight / 2, buffer, buffer.width() - bwidth, fheight + 6, bwidth, 1); + // Draw middle + p->drawPixmap(fwidth, fheight, bstart - fwidth, sheight, buffer, fwidth, fheight, 1,1); // Draw arrow - p->drawPixmap(bstart, center - 4, bwidth - 3, 6, buffer, buffer.width() - bwidth, fheight, bwidth - 3, 6); + p->drawPixmap(bstart, fheight, bwidth - 3, sheight, buffer, bstart, fheight, bwidth - 3, sheight); // Draw corners p->drawPixmap(0, 0, fwidth, fheight, buffer, 0, 0, fwidth, fheight); p->drawPixmap(bstart, 0, bwidth, fheight, buffer, buffer.width() - bwidth, 0, bwidth, fheight); @@ -1742,6 +1746,7 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD } int devicePixelRatio = p->device()->devicePixelRatio(); + int width = devicePixelRatio * (int(macRect.size.width) + extraWidth); int height = devicePixelRatio * (int(macRect.size.height) + extraHeight); @@ -1753,7 +1758,8 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD + (button ? QString::number(bdi->state) + QLatin1Char('_') : QString()) + QLatin1Char('_') + QString::number(width) + QLatin1Char('_') + QString::number(height); QPixmap pm; - if (!QPixmapCache::find(key, pm)) { + if (1) //!QPixmapCache::find(key, pm)) + { QPixmap activePixmap(width, height); activePixmap.setDevicePixelRatio(devicePixelRatio); activePixmap.fill(Qt::transparent); -- 1.8.5.2 (Apple Git-48)