summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@qt.io>2018-03-27 16:06:18 +0200
committerMorten Johan Sørvig <morten.sorvig@qt.io>2018-04-03 06:03:40 +0000
commit306df144b40f81a81ac0119e02cc465792e961d2 (patch)
treeff3c80bb2abd1ca5ade94cbcb1ab4d882f669c8c /src/plugins/platforms
parentdbdd5f0ffbce52c8b789ed09f1aa3f1da6c02e23 (diff)
Cocoa: Make QMacNativeWidget paint correctly
QWindows with transparent pixels (of which QMacNativeWidget is an example) must be composited, even if they are content views. This will display the NSWindow background instead of solid black for the areas where the Qt backingstore has transparent pixels. Change-Id: Ibee1327e11bc64975900b4c5d632dd5f103da4c8 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/cocoa/qcocoabackingstore.mm8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoabackingstore.mm b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
index 57a03905ab..091453785e 100644
--- a/src/plugins/platforms/cocoa/qcocoabackingstore.mm
+++ b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
@@ -163,9 +163,11 @@ void QCocoaBackingStore::flush(QWindow *window, const QRegion &region, const QPo
const qreal devicePixelRatio = m_image.devicePixelRatio();
// If the flushed window is a content view, and not in unified toolbar mode,
- // we can get away with copying the backingstore instead of blending.
- const NSCompositingOperation compositingOperation = static_cast<QCocoaWindow *>(
- window->handle())->isContentView() && !windowHasUnifiedToolbar() ?
+ // and is fully opaque, we can get away with copying the backingstore instead
+ // of blending.
+ QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow *>(window->handle());
+ const NSCompositingOperation compositingOperation = cocoaWindow->isContentView()
+ && cocoaWindow->isOpaque() && !windowHasUnifiedToolbar() ?
NSCompositingOperationCopy : NSCompositingOperationSourceOver;
#ifdef QT_DEBUG