From c2e349f1c38b55fd12f8ae537e754fa6658ab631 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周一, 01 1月 2024 20:21:34 +0800 Subject: [PATCH] Tested 5.12.8 --- src/quick/quickwindowagent_win.cpp | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/quick/quickwindowagent_win.cpp b/src/quick/quickwindowagent_win.cpp index a1966fd..6feb63d 100644 --- a/src/quick/quickwindowagent_win.cpp +++ b/src/quick/quickwindowagent_win.cpp @@ -1,3 +1,6 @@ +// Copyright (C) 2023-2024 Stdware Collections +// SPDX-License-Identifier: Apache-2.0 + #include "quickwindowagent_p.h" #include <QtQuick/QQuickPaintedItem> @@ -7,7 +10,11 @@ namespace QWK { -#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDER) +#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) + // TODO: Find a way to draw native border + // We haven't found a way to place hooks in the Quick program and call the GDI API to draw + // the native border area so that we'll use the emulated drawn border for now. + class BorderItem : public QQuickPaintedItem, public NativeEventFilter, public SharedEventFilter { @@ -97,6 +104,7 @@ bool BorderItem::nativeEventFilter(const QByteArray &eventType, void *message, QT_NATIVE_EVENT_RESULT_TYPE *result) { Q_UNUSED(eventType) + const auto msg = static_cast<const MSG *>(message); switch (msg->message) { case WM_THEMECHANGED: @@ -107,9 +115,7 @@ } case WM_SETTINGCHANGE: { - if (!msg->wParam && msg->lParam && - std::wcscmp(reinterpret_cast<LPCWSTR>(msg->lParam), L"ImmersiveColorSet") == - 0) { + if (isImmersiveColorSetChange(msg->wParam, msg->lParam)) { update(); } break; @@ -123,6 +129,7 @@ bool BorderItem::sharedEventFilter(QObject *obj, QEvent *event) { Q_UNUSED(obj) + switch (event->type()) { case QEvent::WindowStateChange: { updateGeometry(); -- Gitblit v1.9.1