From fa6ebaa2e9734af461db153a11d08082779de1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 12 Feb 2014 19:33:18 +0100 Subject: Draw more inactive style elements in retina res. Update drawColorLessButton() and qt_mac_cg_context() to handle paint devices with a devicePixelRatio greater than one. Task-number: QTBUG-36792 Change-Id: I9d642846b299fc7048bb8e08765b9e1d7ee631fc Reviewed-by: Denis Dzyubenko Reviewed-by: Gabriel de Dietrich --- src/widgets/styles/qmacstyle_mac.mm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/widgets/styles/qmacstyle_mac.mm') diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index fa49bcb884..79a52c00cb 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -1719,8 +1719,9 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD } } - int width = int(macRect.size.width) + extraWidth; - int height = int(macRect.size.height) + extraHeight; + int devicePixelRatio = p->device()->devicePixelRatio(); + int width = devicePixelRatio * (int(macRect.size.width) + extraWidth); + int height = devicePixelRatio * (int(macRect.size.height) + extraHeight); if (width <= 0 || height <= 0) return; // nothing to draw @@ -1732,6 +1733,7 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD QPixmap pm; if (!QPixmapCache::find(key, pm)) { QPixmap activePixmap(width, height); + activePixmap.setDevicePixelRatio(devicePixelRatio); activePixmap.fill(Qt::transparent); { if (combo){ @@ -1782,6 +1784,7 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD QImage colorlessImage; { QPixmap colorlessPixmap(width, height); + colorlessPixmap.setDevicePixelRatio(devicePixelRatio); colorlessPixmap.fill(Qt::transparent); QMacCGContext cg(&colorlessPixmap); @@ -1815,7 +1818,7 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD } QPixmapCache::insert(key, pm); } - p->drawPixmap(int(macRect.origin.x) - xoff, int(macRect.origin.y) + finalyoff, width, height, pm); + p->drawPixmap(int(macRect.origin.x) - xoff, int(macRect.origin.y) + finalyoff, width / devicePixelRatio, height / devicePixelRatio , pm); } QMacStyle::QMacStyle() @@ -6719,6 +6722,8 @@ CGContextRef qt_mac_cg_context(const QPaintDevice *pdev) } CGContextTranslateCTM(ret, 0, pm->height()); + int devicePixelRatio = pdev->devicePixelRatio(); + CGContextScaleCTM(ret, devicePixelRatio, devicePixelRatio); CGContextScaleCTM(ret, 1, -1); return ret; } else if (pdev->devType() == QInternal::Widget) { -- cgit v1.2.3