diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index a43cf73d3484675f7633c0aa9c3956134a8c4269..b232c7a4d340f0e6fdba5eb042e3e51bfbb28049 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -268,6 +268,7 @@ public: // for QNSView
 
     bool m_inConstructor;
     bool m_inSetVisible;
+    bool m_inSetGeometry;
 #ifndef QT_NO_OPENGL
     QCocoaGLContext *m_glContext;
 #endif
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 56c356711e5ebfc332075aaebd1c69e945206780..6656212457c7224fdd257da0f99225c399344176 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -381,6 +381,7 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw)
     , m_windowUnderMouse(false)
     , m_inConstructor(true)
     , m_inSetVisible(false)
+    , m_inSetGeometry(false)
 #ifndef QT_NO_OPENGL
     , m_glContext(0)
 #endif
@@ -470,6 +471,8 @@ QSurfaceFormat QCocoaWindow::format() const
 
 void QCocoaWindow::setGeometry(const QRect &rectIn)
 {
+    QBoolBlocker inSetGeometry(m_inSetGeometry, true);
+
     QRect rect = rectIn;
     // This means it is a call from QWindow::setFramePosition() and
     // the coordinates include the frame (size is still the contents rectangle).
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index 052a7cc98f1e3505adbf406f7375bb26d355561d..de30972393c3bbf427534a98df4c5c341b09d074 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -362,7 +362,10 @@ static NSString *_q_NSWindowDidChangeOcclusionStateNotification = nil;
     if (!m_platformWindow->m_inConstructor) {
         QWindowSystemInterface::handleGeometryChange(m_window, geometry);
         m_platformWindow->updateExposedGeometry();
-        QWindowSystemInterface::flushWindowSystemEvents();
+        // Guard against processing window system events during QWindow::setGeometry
+        // calles, which Qt and Qt applications do not excpect.
+        if (!m_platformWindow->m_inSetGeometry)
+            QWindowSystemInterface::flushWindowSystemEvents();
     }
 }