From 3e942c3dc8955be577079fbc028ce216e1c594b2 Mon Sep 17 00:00:00 2001 From: SineStriker <55847490+SineStriker@users.noreply.github.com> Date: 周二, 11 2月 2025 19:07:53 +0800 Subject: [PATCH] Fix numerous bugs (#162) --- src/core/shared/windows10borderhandler_p.h | 29 ++++++++++++++++++++++++++++- 1 files changed, 28 insertions(+), 1 deletions(-) diff --git a/src/core/shared/windows10borderhandler_p.h b/src/core/shared/windows10borderhandler_p.h index 7fc9760..8099fe0 100644 --- a/src/core/shared/windows10borderhandler_p.h +++ b/src/core/shared/windows10borderhandler_p.h @@ -1,5 +1,18 @@ +// Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware) +// Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao) +// SPDX-License-Identifier: Apache-2.0 + #ifndef WINDOWS10BORDERHANDLER_P_H #define WINDOWS10BORDERHANDLER_P_H + +// +// W A R N I N G !!! +// ----------------- +// +// This file is not part of the QWindowKit API. It is used purely as an +// implementation detail. This header file may change from version to +// version without notice, or may even be removed. +// #include <QtGui/QWindow> #include <QtGui/QMouseEvent> @@ -33,7 +46,7 @@ } inline void drawBorder() { - ctx->virtual_hook(AbstractWindowContext::DrawWindows10BorderHook2, nullptr); + ctx->virtual_hook(AbstractWindowContext::DrawWindows10BorderHook_Native, nullptr); } inline int borderThickness() const { @@ -81,6 +94,20 @@ break; } + case WM_THEMECHANGED: + case WM_SYSCOLORCHANGE: + case WM_DWMCOLORIZATIONCOLORCHANGED: { + // If we do not refresh this property, the native border will turn white + // permanently (like the dark mode is turned off) after the user changes + // the accent color in system personalization settings. + // So we need this ugly hack to re-apply dark mode to get rid of this + // strange Windows bug. + if (ctx->windowAttribute(QStringLiteral("dark-mode")).toBool()) { + ctx->setWindowAttribute(QStringLiteral("dark-mode"), true); + } + break; + } + default: break; } -- Gitblit v1.9.1