summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoawindow.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoawindow.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 56ca2e0b14..fe6a9ad50b 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -516,20 +516,30 @@ void QCocoaWindow::propagateSizeHints()
}
}
+void QCocoaWindow::updateOpaque()
+{
+ bool translucent = window()->format().alphaBufferSize() > 0
+ || window()->opacity() < 1
+ || (m_contentView && [m_contentView hasMask]);
+ [m_nsWindow setOpaque:!translucent];
+}
+
+
void QCocoaWindow::setOpacity(qreal level)
{
- if (m_nsWindow)
+ if (m_nsWindow) {
[m_nsWindow setAlphaValue:level];
+ updateOpaque();
+ }
}
void QCocoaWindow::setMask(const QRegion &region)
{
- if (m_nsWindow) {
- [m_nsWindow setOpaque:NO];
+ if (m_nsWindow)
[m_nsWindow setBackgroundColor:[NSColor clearColor]];
- }
[m_contentView setMaskRegion:&region];
+ updateOpaque();
}
bool QCocoaWindow::setKeyboardGrabEnabled(bool grab)
@@ -726,6 +736,12 @@ NSWindow * QCocoaWindow::createNSWindow()
NSInteger level = windowLevel(flags);
[createdWindow setLevel:level];
+
+ if (window()->format().alphaBufferSize() > 0) {
+ [createdWindow setBackgroundColor:[NSColor clearColor]];
+ [createdWindow setOpaque:NO];
+ }
+
m_windowModality = window()->modality();
return createdWindow;
}