QPA/Windows: Fix QPainter warnings when animations are disabled

Don't draw on a QImage with a size of 0/0.

This amends 5feefd30734cd12753956819fc7c152be07c24cd

Pick-to: 6.9.1
Fixes: QTBUG-135844
Task-number: QTBUG-127634
Change-Id: Ib57cdccfabe67454984f3229f9d7ad02dd0d9992
Reviewed-by: Błażej Szczygieł <mumei6102@gmail.com>
Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
(cherry picked from commit 46c2aa2b617ea136dbd1c9c7606316a10588ef11)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 0ebe6718a1c559c7a8573ca628b07dd97c41ed04)
This commit is contained in:
Christian Ehrlicher 2025-05-21 20:22:40 +02:00 committed by Qt Cherry-pick Bot
parent c436e8ec43
commit f79a803044

View File

@ -2414,14 +2414,16 @@ void QWindowsWindow::handleGeometryChange()
clearFlag(SynchronousGeometryChangeEvent);
qCDebug(lcQpaEvents) << __FUNCTION__ << this << window() << m_data.geometry;
bool arranged = QWindowsWindow::isWindowArranged(m_data.hwnd);
if (arranged || (m_windowWasArranged && !arranged)) {
transitionAnimatedCustomTitleBar();
}
if (m_data.hwndTitlebar) {
bool arranged = QWindowsWindow::isWindowArranged(m_data.hwnd);
if (arranged || (m_windowWasArranged && !arranged))
transitionAnimatedCustomTitleBar();
const int titleBarHeight = getTitleBarHeight_sys(savedDpi());
MoveWindow(m_data.hwndTitlebar, m_data.geometry.x(), m_data.geometry.y(), m_data.geometry.width(), titleBarHeight, true);
m_windowWasArranged = arranged;
const int titleBarHeight = getTitleBarHeight_sys(savedDpi());
MoveWindow(m_data.hwndTitlebar, m_data.geometry.x(), m_data.geometry.y(),
m_data.geometry.width(), titleBarHeight, true);
m_windowWasArranged = arranged;
}
}
void QWindowsBaseWindow::setGeometry_sys(const QRect &rect) const
@ -2700,6 +2702,8 @@ void QWindowsWindow::correctWindowPlacement(WINDOWPLACEMENT &windowPlacement)
void QWindowsWindow::transitionAnimatedCustomTitleBar()
{
if (!m_data.hwndTitlebar)
return;
const QWinRegistryKey registry(HKEY_CURRENT_USER, LR"(Control Panel\Desktop\WindowMetrics)");
if (registry.isValid() && registry.value(LR"(MinAnimate)") == 1) {
ShowWindow(m_data.hwndTitlebar, SW_HIDE);