win: adapt to latest qtbase changes

This commit is contained in:
Zhao Yuhang 2023-10-21 11:07:34 +08:00
parent 78fc5057ab
commit 415fb55222
3 changed files with 6 additions and 4 deletions

View File

@ -245,11 +245,13 @@ void FramelessHelperWin::addWindow(const QObject *window)
#if 0 #if 0
data->callbacks->setWindowFlags(data->callbacks->getWindowFlags() | Qt::FramelessWindowHint); data->callbacks->setWindowFlags(data->callbacks->getWindowFlags() | Qt::FramelessWindowHint);
#else #else
# if (QT_VERSION < QT_VERSION_CHECK(6, 5, 3))
// Qt maintains a frame margin internally, we need to update it accordingly // Qt maintains a frame margin internally, we need to update it accordingly
// otherwise we'll get lots of warning messages when we change the window // otherwise we'll get lots of warning messages when we change the window
// geometry, it will also affect the final window geometry because QPA will // geometry, it will also affect the final window geometry because QPA will
// always take it into account when setting window size and position. // always take it into account when setting window size and position.
std::ignore = Utils::updateInternalWindowFrameMargins(qWindow, true); std::ignore = Utils::updateInternalWindowFrameMargins(qWindow, true);
# endif
#endif #endif
// Tell DWM our preferred frame margin. // Tell DWM our preferred frame margin.
std::ignore = Utils::updateWindowFrameMargins(data->windowId, false); std::ignore = Utils::updateWindowFrameMargins(data->windowId, false);

View File

@ -416,12 +416,12 @@ void FramelessQuickHelperPrivate::doRepaintAllChildren()
if (!window) { if (!window) {
return; return;
} }
#ifdef Q_OS_WINDOWS #if (defined(Q_OS_WINDOWS) && (QT_VERSION < QT_VERSION_CHECK(6, 5, 3)))
// Sync the internal window frame margins with the latest DPI, otherwise // Sync the internal window frame margins with the latest DPI, otherwise
// we will get wrong window sizes after the DPI change. // we will get wrong window sizes after the DPI change.
std::ignore = Utils::updateInternalWindowFrameMargins(window, true); std::ignore = Utils::updateInternalWindowFrameMargins(window, true);
#endif // Q_OS_WINDOWS \ #endif // Q_OS_WINDOWS
// No need to repaint the window when it's hidden. // No need to repaint the window when it's hidden.
if (!window->isVisible()) { if (!window->isVisible()) {
return; return;
} }

View File

@ -161,7 +161,7 @@ static inline void forceWidgetRepaint(QWidget *widget)
if (!widget) { if (!widget) {
return; return;
} }
#ifdef Q_OS_WINDOWS #if (defined(Q_OS_WINDOWS) && (QT_VERSION < QT_VERSION_CHECK(6, 5, 3)))
// There's some additional things to do for top level windows on Windows. // There's some additional things to do for top level windows on Windows.
if (widget->isWindow()) { if (widget->isWindow()) {
// Don't crash if the QWindow instance has not been created yet. // Don't crash if the QWindow instance has not been created yet.