xcb: Propagate size hints when window changes its scaling factor
Properly scale size hints to the new scaling factor. Fixes: QTBUG-80476 Change-Id: I1081c9b01560f7e434f0f1de0199ef3d3cae787c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This commit is contained in:
parent
f3b3c971cf
commit
f2a61f2ce2
@ -1398,6 +1398,8 @@ void QXcbWindow::propagateSizeHints()
|
||||
}
|
||||
|
||||
xcb_icccm_set_wm_normal_hints(xcb_connection(), m_window, &hints);
|
||||
|
||||
m_sizeHintsScaleFactor = QHighDpiScaling::scaleAndOrigin(screen()).factor;
|
||||
}
|
||||
|
||||
void QXcbWindow::requestActivateWindow()
|
||||
@ -1789,6 +1791,9 @@ void QXcbWindow::handleConfigureNotifyEvent(const xcb_configure_notify_event_t *
|
||||
// will make the comparison later.
|
||||
QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->screen());
|
||||
|
||||
if (!qFuzzyCompare(QHighDpiScaling::scaleAndOrigin(newScreen).factor, m_sizeHintsScaleFactor))
|
||||
propagateSizeHints();
|
||||
|
||||
// Send the synthetic expose event on resize only when the window is shrinked,
|
||||
// because the "XCB_GRAVITY_NORTH_WEST" flag doesn't send it automatically.
|
||||
if (!m_oldWindowSize.isEmpty()
|
||||
|
@ -280,6 +280,8 @@ protected:
|
||||
|
||||
QXcbSyncWindowRequest *m_pendingSyncRequest = nullptr;
|
||||
int m_swapInterval = -1;
|
||||
|
||||
qreal m_sizeHintsScaleFactor = 1.0;
|
||||
};
|
||||
|
||||
class QXcbForeignWindow : public QXcbWindow
|
||||
|
Loading…
Reference in New Issue
Block a user