summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2017-07-11 18:19:08 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2017-07-26 21:07:44 +0000
commit1828caad33d78eb501aeda28534c6fe0a3162037 (patch)
tree11c53f59e4e36ded541be124518e1467bd4b6359 /src/plugins
parent73176d2922baae1ccaa702e4900b0473071d0a96 (diff)
macOS: Send expose event with individual rects instead of bounding rect
Change-Id: I914521e1dfecb0157a8b9e1c9d9a86ca45e0826e Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index 2efbb85c88..73d308213d 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -428,11 +428,19 @@ static QTouchDevice *touchDevice = 0;
- (void)drawRect:(NSRect)dirtyRect
{
+ Q_UNUSED(dirtyRect);
+
if (!m_platformWindow)
return;
- qCDebug(lcQpaCocoaWindow) << "[QNSView drawRect:]" << m_platformWindow->window()
- << QRectF::fromCGRect(NSRectToCGRect(dirtyRect));
+ QRegion exposedRegion;
+ const NSRect *dirtyRects;
+ NSInteger numDirtyRects;
+ [self getRectsBeingDrawn:&dirtyRects count:&numDirtyRects];
+ for (int i = 0; i < numDirtyRects; ++i)
+ exposedRegion += QRectF::fromCGRect(dirtyRects[i]).toRect();
+
+ qCDebug(lcQpaCocoaWindow) << "[QNSView drawRect:]" << m_platformWindow->window() << exposedRegion;
#ifndef QT_NO_OPENGL
if (m_glContext && m_shouldSetGLContextinDrawRect) {
@@ -441,7 +449,7 @@ static QTouchDevice *touchDevice = 0;
}
#endif
- m_platformWindow->handleExposeEvent(QRectF::fromCGRect(dirtyRect).toRect());
+ m_platformWindow->handleExposeEvent(exposedRegion);
}
// Draws the backing store content to the QNSView using Core Graphics.