Yuhang Zhao
2025-05-09 e9999fa61ea0ffa602c69e10e54996b3a636a5e6
src/widgets/widgetwindowagent_win.cpp
@@ -55,8 +55,16 @@
        }
        void updateGeometry() override {
            widget->setContentsMargins(isNormalWindow() ? QMargins(0, borderThickness(), 0, 0)
                                                        : QMargins());
            // The window top border is manually painted by QWK so we want to give
            // some margins to avoid it covering real window contents, however, we
            // found that there are some rounding issues for the thin border and
            // thus this small trick doesn't work very well when the DPR is not
            // integer. So far we haven't found a perfect solution, so just don't
            // set any margins. In theory the window content will only be covered
            // by 1px or so, it should not be a serious issue in the real world.
            //
            // widget->setContentsMargins(isNormalWindow() ? QMargins(0, borderThickness(), 0, 0)
            //                                             : QMargins());
        }
        bool isWindowActive() const override {
@@ -75,7 +83,7 @@
            // Due to the timer or user action, Qt will repaint some regions spontaneously,
            // even if there is no WM_PAINT message, we must wait for it to finish painting
            // and then update the top border area.
            drawBorder();
            drawBorderNative();
        }
        inline void forwardEventToWindowAndDraw(QWindow *window, QEvent *event) {
@@ -89,7 +97,7 @@
            // Upon receiving the WM_PAINT message, Qt will repaint the entire view, and we
            // must wait for it to finish painting before drawing this top border area.
            drawBorder();
            drawBorderNative();
        }
    protected: