From 2cb8ec0aeb982b5b3ebc8b7e7a0d72a199e129dc Mon Sep 17 00:00:00 2001 From: Zhao Yuhang <2546789017@qq.com> Date: Thu, 19 Oct 2023 20:13:34 +0800 Subject: [PATCH] win: minor fix --- .../Quick/private/framelessquickhelper_p.h | 1 + .../Widgets/private/framelesswidgetshelper_p.h | 1 + src/quick/framelessquickhelper.cpp | 11 +++++------ src/widgets/framelesswidgetshelper.cpp | 13 ++++++------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/FramelessHelper/Quick/private/framelessquickhelper_p.h b/include/FramelessHelper/Quick/private/framelessquickhelper_p.h index 03cce3c3..037b28d1 100644 --- a/include/FramelessHelper/Quick/private/framelessquickhelper_p.h +++ b/include/FramelessHelper/Quick/private/framelessquickhelper_p.h @@ -87,6 +87,7 @@ class FRAMELESSHELPER_QUICK_API FramelessQuickHelperPrivate : public QObject bool qpaReady = false; quint32 qpaWaitTime = 0; QTimer repaintTimer{}; + bool repaintedOnce = false; }; FRAMELESSHELPER_END_NAMESPACE diff --git a/include/FramelessHelper/Widgets/private/framelesswidgetshelper_p.h b/include/FramelessHelper/Widgets/private/framelesswidgetshelper_p.h index bd4e7f1b..f08063ed 100644 --- a/include/FramelessHelper/Widgets/private/framelesswidgetshelper_p.h +++ b/include/FramelessHelper/Widgets/private/framelesswidgetshelper_p.h @@ -87,6 +87,7 @@ class FRAMELESSHELPER_WIDGETS_API FramelessWidgetsHelperPrivate : public QObject QSizePolicy savedSizePolicy = {}; quint32 qpaWaitTime = 0; QTimer repaintTimer{}; + bool repaintedOnce = false; }; FRAMELESSHELPER_END_NAMESPACE diff --git a/src/quick/framelessquickhelper.cpp b/src/quick/framelessquickhelper.cpp index 89f24daf..c91a3aa3 100644 --- a/src/quick/framelessquickhelper.cpp +++ b/src/quick/framelessquickhelper.cpp @@ -410,10 +410,7 @@ void FramelessQuickHelperPrivate::repaintAllChildren() void FramelessQuickHelperPrivate::doRepaintAllChildren() { repaintTimer.stop(); - static bool firstTime = true; - if (firstTime) { - firstTime = false; - } else { + if (repaintedOnce) { Q_Q(const FramelessQuickHelper); QQuickWindow *window = q->window(); if (!window) { @@ -423,8 +420,8 @@ void FramelessQuickHelperPrivate::doRepaintAllChildren() // Sync the internal window frame margins with the latest DPI, otherwise // we will get wrong window sizes after the DPI change. std::ignore = Utils::updateInternalWindowFrameMargins(window, true); -#endif // Q_OS_WINDOWS - // No need to repaint the window when it's hidden. +#endif // Q_OS_WINDOWS \ + // No need to repaint the window when it's hidden. if (!window->isVisible()) { return; } @@ -446,6 +443,8 @@ void FramelessQuickHelperPrivate::doRepaintAllChildren() } } #endif + } else { + repaintedOnce = true; } } diff --git a/src/widgets/framelesswidgetshelper.cpp b/src/widgets/framelesswidgetshelper.cpp index 344055a0..6362b4a4 100644 --- a/src/widgets/framelesswidgetshelper.cpp +++ b/src/widgets/framelesswidgetshelper.cpp @@ -375,18 +375,17 @@ void FramelessWidgetsHelperPrivate::repaintAllChildren() void FramelessWidgetsHelperPrivate::doRepaintAllChildren() { repaintTimer.stop(); - if (!window) { - return; - } - static bool firstTime = true; - if (firstTime) { - firstTime = false; - } else { + if (repaintedOnce) { + if (!window) { + return; + } forceWidgetRepaint(window); const QList widgets = window->findChildren(); for (auto &&widget : std::as_const(widgets)) { forceWidgetRepaint(widget); } + } else { + repaintedOnce = true; } }