diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2017-07-11 18:19:08 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2017-07-26 21:07:44 +0000 |
commit | 1828caad33d78eb501aeda28534c6fe0a3162037 (patch) | |
tree | 11c53f59e4e36ded541be124518e1467bd4b6359 /src/plugins | |
parent | 73176d2922baae1ccaa702e4900b0473071d0a96 (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.mm | 14 |
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. |