From 6f6f96909e7ded6ae3a4e59d9d4b62fa593abb23 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周日, 25 2月 2024 02:33:03 +0800 Subject: [PATCH] Fix quick initialization failure --- src/quick/quickwindowagent_win.cpp | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/quick/quickwindowagent_win.cpp b/src/quick/quickwindowagent_win.cpp index 46e72e3..a265bbb 100644 --- a/src/quick/quickwindowagent_win.cpp +++ b/src/quick/quickwindowagent_win.cpp @@ -1,3 +1,7 @@ +// Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware) +// Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao) +// SPDX-License-Identifier: Apache-2.0 + #include "quickwindowagent_p.h" #include <QtQuick/QQuickPaintedItem> @@ -7,7 +11,7 @@ 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. @@ -41,7 +45,7 @@ BorderItem::BorderItem(QQuickItem *parent, AbstractWindowContext *context) : QQuickPaintedItem(parent), context(context) { - setAntialiasing(true); // We needs anti-aliasing to give us better result. + setAntialiasing(true); // We need anti-aliasing to give us better result. setFillColor({}); // Will improve the performance a little bit. setOpaquePainting(true); // Will also improve the performance, we don't draw // semi-transparent borders of course. @@ -52,7 +56,8 @@ anchors->setLeft(parentPri->left()); anchors->setRight(parentPri->right()); - setZ(9999); // Make sure our fake border always above everything in the window. + setZ(std::numeric_limits<qreal>::max()); // Make sure our fake border always above + // everything in the window. context->installNativeEventFilter(this); context->installSharedEventFilter(this); @@ -65,7 +70,7 @@ BorderItem::~BorderItem() = default; bool BorderItem::isNormalWindow() const { - return !(context->window()->windowState() & + return !(context->window()->windowStates() & (Qt::WindowMinimized | Qt::WindowMaximized | Qt::WindowFullScreen)); } @@ -101,6 +106,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: @@ -125,7 +131,14 @@ bool BorderItem::sharedEventFilter(QObject *obj, QEvent *event) { Q_UNUSED(obj) + switch (event->type()) { + case QEvent::WinIdChange: { + if (auto winId = context->windowId()) { + updateGeometry(); + } + break; + } case QEvent::WindowStateChange: { updateGeometry(); break; -- Gitblit v1.9.1