-
Bug
-
Resolution: Done
-
P1: Critical
-
5.4.2, 5.5.1, 5.6.0 Beta, 5.6.0
-
OS X Yosemite 10.10.3
Overview
The fix for QTBUG-44313 introduced clearing QCocoaWindow::m_backingStore when QCocoaWindow::m_platformWindow->m_inSetGeometry is true. Leaving the backing store null causes a subsequent paint operation to abort, leaving the dialog momentarily undrawn (transparent).
Deeper Analysis
This line is causing the dialog to momentarily disappear from the screen:
[m_nsWindow setFrame:[m_nsWindow frameRectForContentRect:bounds] display:YES animate:NO];
That's happening because of this line deeper in the callstack:
if (m_backingStore.isNull() return;
Recommended Fix - DEPRECATED, SEE COMMENTS FOR REVISED FIX
I've applied this locally on top of Qt 5.4.2 with great success. Instead of clearing the backing store, do the following:
{ m_backingStore = QImage(geometry.size(), m_backingStore.format()); QEvent updateRequest(QEvent::UpdateRequest); QCoreApplication::sendEvent(m_window, &updateRequest); }
That creates a new backing store at the correct new size and then forces the widget to synchronously draw at that size to fill the new backing store with correct visuals.
- is duplicated by
-
QTBUG-49828 Big flickering on frameless Window resizing (regression on OSX)
-
- Closed
-
- replaces
-
QTBUG-49828 Big flickering on frameless Window resizing (regression on OSX)
-
- Closed
-