Windows: Fix bug where windows stopped painting after a restore.
Usually, a window get un-exposed when minimized, and exposed after the first WM_Paint event when restored. With layered windows (translucent+frameless) we never receive a WM_Paint, so lets send the expose event when the window is restired. Task-number: QTBUG-17548 Change-Id: Ib56d8abd91b15f9238d223fe692b19a3d2c930b7 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This commit is contained in:
parent
bef01c87a8
commit
6800728d09
@ -1390,9 +1390,22 @@ void QWindowsWindow::handleWindowStateChange(Qt::WindowState state)
|
|||||||
setFlag(FrameDirty);
|
setFlag(FrameDirty);
|
||||||
m_windowState = state;
|
m_windowState = state;
|
||||||
QWindowSystemInterface::handleWindowStateChanged(window(), state);
|
QWindowSystemInterface::handleWindowStateChanged(window(), state);
|
||||||
if (state == Qt::WindowMinimized) {
|
switch (state) {
|
||||||
|
case Qt::WindowMinimized:
|
||||||
handleHidden();
|
handleHidden();
|
||||||
QWindowSystemInterface::flushWindowSystemEvents(); // Tell QQuickWindow to stop rendering now.
|
QWindowSystemInterface::flushWindowSystemEvents(); // Tell QQuickWindow to stop rendering now.
|
||||||
|
break;
|
||||||
|
case Qt::WindowNoState:
|
||||||
|
// QTBUG-17548: We send expose events when receiving WM_Paint, but for
|
||||||
|
// layered windows, we won't receive any WM_Paint.
|
||||||
|
if (GetWindowLongPtr(m_data.hwnd, GWL_EXSTYLE) & WS_EX_LAYERED) {
|
||||||
|
fireExpose(QRegion(0, 0, window()->width(), window()->height()));
|
||||||
|
if (!QWindowsContext::instance()->asyncExpose())
|
||||||
|
QWindowSystemInterface::flushWindowSystemEvents();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user