xcb: only set base size when it's valid

In rare situation, base size could be (-1,-1) or (-2,-2) for high
dpi, it will be converted into huge positive numbers.

https://tronche.com/gui/x/icccm/sec-4.html

If a base size is not provided, the minimum size is to be used
in its place and vice versa.

Pick-to: 6.5 6.2 5.15
Task-number: QTBUG-117702
Change-Id: I900ed82f2291fb454d7e34a0dee27459d0a57240
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit 25720f5a6365125d77400a26f11dbcfc950e5c5f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Liang Qi 2023-11-16 11:57:15 +01:00 committed by Qt Cherry-pick Bot
parent 91b6436de8
commit 0abe21de9d

View File

@ -1442,7 +1442,8 @@ void QXcbWindow::propagateSizeHints()
qMin(XCOORD_MAX, maximumSize.height()));
if (sizeIncrement.width() > 0 || sizeIncrement.height() > 0) {
xcb_icccm_size_hints_set_base_size(&hints, baseSize.width(), baseSize.height());
if (!baseSize.isNull() && baseSize.isValid())
xcb_icccm_size_hints_set_base_size(&hints, baseSize.width(), baseSize.height());
xcb_icccm_size_hints_set_resize_inc(&hints, sizeIncrement.width(), sizeIncrement.height());
}