summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm5
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm19
3 files changed, 18 insertions, 7 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index 60f448044e..91eaea21b6 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -118,6 +118,7 @@ public:
bool setKeyboardGrabEnabled(bool grab);
bool setMouseGrabEnabled(bool grab);
QMargins frameMargins() const;
+ QSurfaceFormat format() const;
void requestActivateWindow();
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index c8ef967f20..0dec048a9d 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -253,6 +253,11 @@ QCocoaWindow::~QCocoaWindow()
[m_nsWindowDelegate release];
}
+QSurfaceFormat QCocoaWindow::format() const
+{
+ return window()->requestedFormat();
+}
+
void QCocoaWindow::setGeometry(const QRect &rect)
{
if (geometry() == rect)
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index 0916a1faa8..ee6a9616a6 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -340,15 +340,20 @@ static QTouchDevice *touchDevice = 0;
}
const QRect &rect = region->boundingRect();
- QImage maskImage(rect.size(), QImage::Format_RGB888);
- maskImage.fill(Qt::white);
- QPainter p(&maskImage);
- p.setRenderHint(QPainter::Antialiasing);
+ QImage tmp(rect.size(), QImage::Format_RGB32);
+ tmp.fill(Qt::white);
+ QPainter p(&tmp);
p.setClipRegion(*region);
- p.fillRect(rect, QBrush(Qt::black));
+ p.fillRect(rect, Qt::black);
p.end();
-
- maskImage = maskImage.convertToFormat(QImage::Format_Indexed8);
+ QImage maskImage = QImage(rect.size(), QImage::Format_Indexed8);
+ for (int y=0; y<rect.height(); ++y) {
+ const uint *src = (const uint *) tmp.constScanLine(y);
+ uchar *dst = maskImage.scanLine(y);
+ for (int x=0; x<rect.width(); ++x) {
+ dst[x] = src[x] & 0xff;
+ }
+ }
m_maskImage = qt_mac_toCGImage(maskImage, true, &m_maskData);
}