diff options
author | Morten Johan Sørvig <morten.sorvig@qt.io> | 2018-03-27 16:06:18 +0200 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@qt.io> | 2018-04-03 06:03:40 +0000 |
commit | 306df144b40f81a81ac0119e02cc465792e961d2 (patch) | |
tree | ff3c80bb2abd1ca5ade94cbcb1ab4d882f669c8c /src/plugins/platforms | |
parent | dbdd5f0ffbce52c8b789ed09f1aa3f1da6c02e23 (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.mm | 8 |
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 ®ion, 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 |