From 9dcea027f16c4ce5852da3dfc8aca284c582bd7d Mon Sep 17 00:00:00 2001
From: sola.lu <sola.lu.greentest.com.cn>
Date: 周五, 06 6月 2025 18:19:18 +0800
Subject: [PATCH] 1.注释掉custom margin,解决程序放大后,遮盖窗口底部内容的问题。

---
 src/widgets/widgetitemdelegate.cpp |   82 ++++++++++++++++++++++++++++-------------
 1 files changed, 56 insertions(+), 26 deletions(-)

diff --git a/src/widgets/widgetitemdelegate.cpp b/src/widgets/widgetitemdelegate.cpp
index d838a0f..b1b7f6c 100644
--- a/src/widgets/widgetitemdelegate.cpp
+++ b/src/widgets/widgetitemdelegate.cpp
@@ -1,12 +1,41 @@
+// 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 "widgetitemdelegate_p.h"
 
 #include <QtGui/QMouseEvent>
-#include <QtWidgets/QWidget>
 #include <QtWidgets/QApplication>
+#include <QtWidgets/QWidget>
 
-extern Q_WIDGETS_EXPORT QWidget *qt_button_down;
+#include <QWKCore/private/abstractwindowcontext_p.h>
+
+extern Q_DECL_IMPORT QWidget *qt_button_down;
 
 namespace QWK {
+
+    class WidgetWinIdChangeEventFilter : public WinIdChangeEventFilter {
+    public:
+        explicit WidgetWinIdChangeEventFilter(QObject *host, AbstractWindowContext *ctx)
+            : WinIdChangeEventFilter(host, ctx), widget(static_cast<QWidget *>(host)) {
+            widget->installEventFilter(this);
+        }
+
+        WId winId() const override {
+            return widget->effectiveWinId();
+        }
+
+    protected:
+        bool eventFilter(QObject *obj, QEvent *event) override {
+            Q_UNUSED(obj)
+            if (event->type() == QEvent::WinIdChange) {
+                context->notifyWinIdChange();
+            }
+            return false;
+        }
+
+        QWidget *widget;
+    };
 
     WidgetItemDelegate::WidgetItemDelegate() = default;
 
@@ -35,27 +64,6 @@
         return static_cast<const QWidget *>(host)->windowHandle();
     }
 
-    bool WidgetItemDelegate::isHostSizeFixed(const QObject *host) const {
-        const auto widget = static_cast<const QWidget *>(host);
-        // "Qt::MSWindowsFixedSizeDialogHint" is used cross-platform actually.
-        if (widget->windowFlags() & Qt::MSWindowsFixedSizeDialogHint) {
-            return true;
-        }
-        // Caused by setFixedWidth/Height/Size().
-        const QSize minSize = widget->minimumSize();
-        const QSize maxSize = widget->maximumSize();
-        if (!minSize.isEmpty() && !maxSize.isEmpty() && (minSize == maxSize)) {
-            return true;
-        }
-        // Usually set by the user.
-        const QSizePolicy sizePolicy = widget->sizePolicy();
-        if ((sizePolicy.horizontalPolicy() == QSizePolicy::Fixed) &&
-            (sizePolicy.verticalPolicy() == QSizePolicy::Fixed)) {
-            return true;
-        }
-        return false;
-    }
-
     bool WidgetItemDelegate::isWindowActive(const QObject *host) const {
         return static_cast<const QWidget *>(host)->isActiveWindow();
     }
@@ -78,11 +86,11 @@
         return static_cast<const QWidget *>(host)->windowState();
     }
 
-    void WidgetItemDelegate::setWindowState(QObject *host, const Qt::WindowStates &state) const {
+    void WidgetItemDelegate::setWindowState(QObject *host, Qt::WindowStates state) const {
         static_cast<QWidget *>(host)->setWindowState(state);
     }
 
-    void WidgetItemDelegate::setCursorShape(QObject *host, const Qt::CursorShape shape) const {
+    void WidgetItemDelegate::setCursorShape(QObject *host, Qt::CursorShape shape) const {
         static_cast<QWidget *>(host)->setCursor(QCursor(shape));
     }
 
@@ -94,8 +102,30 @@
         return static_cast<const QWidget *>(host)->windowFlags();
     }
 
-    void WidgetItemDelegate::setWindowFlags(QObject *host, const Qt::WindowFlags &flags) const {
+    QRect WidgetItemDelegate::getGeometry(const QObject *host) const {
+        return static_cast<const QWidget *>(host)->geometry();
+    }
+
+    void WidgetItemDelegate::setWindowFlags(QObject *host, Qt::WindowFlags flags) const {
         static_cast<QWidget *>(host)->setWindowFlags(flags);
     }
 
+    void WidgetItemDelegate::setWindowVisible(QObject *host, bool visible) const {
+        static_cast<QWidget *>(host)->setVisible(visible);
+    }
+
+    void WidgetItemDelegate::setGeometry(QObject *host, const QRect &rect) {
+        static_cast<QWidget *>(host)->setGeometry(rect);
+    }
+
+    void WidgetItemDelegate::bringWindowToTop(QObject *host) const {
+        static_cast<QWidget *>(host)->raise();
+    }
+
+    WinIdChangeEventFilter *
+        WidgetItemDelegate::createWinIdEventFilter(QObject *host,
+                                                   AbstractWindowContext *context) const {
+        return new WidgetWinIdChangeEventFilter(host, context);
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.1