SineStriker
2023-12-29 58ef035603b8e3bf9299b4bddcdebcc653ea8810
src/widgets/widgetwindowagent_win.cpp
@@ -5,6 +5,7 @@
#include <QtGui/QPainter>
#include <QWKCore/qwindowkit_windows.h>
#include <QWKCore/private/qwkglobal_p.h>
namespace QWK {
@@ -68,14 +69,8 @@
        }
        inline void resumeWidgetEventAndDraw(QWidget *w, QEvent *event) {
            // Friend class helping to call `event`
            class HackedWidget : public QWidget {
            public:
                friend class QWK::WidgetBorderHandler;
            };
            // Let the widget paint first
            static_cast<HackedWidget *>(w)->event(event);
            Private::ObjectHelper::sendEvent(w, event);
            // 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
@@ -84,14 +79,8 @@
        }
        inline void resumeWindowEventAndDraw(QWindow *window, QEvent *event) {
            // Friend class helping to call `event`
            class HackedWindow : public QWindow {
            public:
                friend class QWK::WidgetBorderHandler;
            };
            // Let Qt paint first
            static_cast<HackedWindow *>(window)->event(event);
            Private::ObjectHelper::sendEvent(window, event);
            // 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.
@@ -110,8 +99,8 @@
            // When the window is inactive, there is a transparency bug in the top
            // border, and we need to extend the non-client area to the whole title
            // bar.
            QRect frame = ctx->windowAttribute(QStringLiteral("title-bar-rect")).toRect();
            QMargins margins{0, frame.top(), 0, 0};
            QRect frame = ctx->windowAttribute(QStringLiteral("window-rect")).toRect();
            QMargins margins{0, -frame.top(), 0, 0};
            ctx->setWindowAttribute(QStringLiteral("extra-margins"), QVariant::fromValue(margins));
        }
@@ -164,7 +153,7 @@
        bool eventFilter(QObject *obj, QEvent *event) override {
            Q_UNUSED(obj)
            switch (event->type()) {
                case QEvent::UpdateRequest: {
                    if (!isNormalWindow())