From ac1a62b2a76e4d15e412b9579b80da2dafbc6d6a Mon Sep 17 00:00:00 2001 From: SineStriker <55847490+SineStriker@users.noreply.github.com> Date: 周一, 19 5月 2025 15:38:12 +0800 Subject: [PATCH] Update qmsetup --- src/core/shared/windows10borderhandler_p.h | 27 ++++++++++++++++++++++----- 1 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/core/shared/windows10borderhandler_p.h b/src/core/shared/windows10borderhandler_p.h index 8099fe0..8f728f4 100644 --- a/src/core/shared/windows10borderhandler_p.h +++ b/src/core/shared/windows10borderhandler_p.h @@ -31,10 +31,12 @@ } inline void setupNecessaryAttributes() { - // https://github.com/microsoft/terminal/blob/71a6f26e6ece656084e87de1a528c4a8072eeabd/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp#L940 - // Must extend top frame to client area - static QVariant defaultMargins = QVariant::fromValue(QMargins(0, 1, 0, 0)); - ctx->setWindowAttribute(QStringLiteral("extra-margins"), defaultMargins); + if (!isWin11OrGreater()) { + // https://github.com/microsoft/terminal/blob/71a6f26e6ece656084e87de1a528c4a8072eeabd/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp#L940 + // Must extend top frame to client area + static QVariant defaultMargins = QVariant::fromValue(QMargins(0, 1, 0, 0)); + ctx->setWindowAttribute(QStringLiteral("extra-margins"), defaultMargins); + } // Enable dark mode by default, otherwise the system borders are white ctx->setWindowAttribute(QStringLiteral("dark-mode"), true); @@ -45,7 +47,17 @@ (Qt::WindowMinimized | Qt::WindowMaximized | Qt::WindowFullScreen)); } - inline void drawBorder() { + inline void drawBorderEmulated(QPainter *painter, const QRect &rect) { + QRegion region(rect); + void *args[] = { + painter, + const_cast<QRect *>(&rect), + ®ion, + }; + ctx->virtual_hook(AbstractWindowContext::DrawWindows10BorderHook_Emulated, args); + } + + inline void drawBorderNative() { ctx->virtual_hook(AbstractWindowContext::DrawWindows10BorderHook_Native, nullptr); } @@ -54,6 +66,11 @@ } inline void updateExtraMargins(bool windowActive) { + if (isWin11OrGreater()) { + return; + } + + // ### FIXME: transparent seam if (windowActive) { // Restore margins when the window is active static QVariant defaultMargins = QVariant::fromValue(QMargins(0, 1, 0, 0)); -- Gitblit v1.9.1