SineStriker
2025-05-19 ac1a62b2a76e4d15e412b9579b80da2dafbc6d6a
src/quick/quickwindowagent_win.cpp
@@ -47,7 +47,11 @@
    bool BorderItem::shouldEnableEmulatedPainter() const {
#  if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
        auto api = window()->rendererInterface()->graphicsApi();
        const QQuickWindow* win = window();
        if (!win) {
            return true;
        }
        auto api = win->rendererInterface()->graphicsApi();
        switch (api) {
            case QSGRendererInterface::OpenGL:
                // FIXME: experimental, try to find the exact fixed version.
@@ -97,21 +101,18 @@
    BorderItem::~BorderItem() = default;
    void BorderItem::updateGeometry() {
        setHeight(borderThickness());
        const QQuickWindow* win = window();
        if (!win) {
            return;
        }
        setHeight(borderThickness() / win->effectiveDevicePixelRatio());
        setVisible(isNormalWindow());
    }
    void BorderItem::paint(QPainter *painter) {
        Q_UNUSED(painter)
        if (shouldEnableEmulatedPainter()) {
            QRect rect(QPoint(0, 0), size().toSize());
            QRegion region(rect);
            void *args[] = {
                painter,
                &rect,
                &region,
            };
            ctx->virtual_hook(AbstractWindowContext::DrawWindows10BorderHook_Emulated, args);
            drawBorderEmulated(painter, QRect({0, 0}, size().toSize()));
        } else {
            needPaint = true;
        }
@@ -170,7 +171,7 @@
    void BorderItem::_q_afterSynchronizing() {
        if (needPaint) {
            needPaint = false;
            drawBorder();
            drawBorderNative();
        }
    }