From d02f3b0bc32f711bf33a7fd288185963e9e96189 Mon Sep 17 00:00:00 2001
From: Yuhang Zhao <zhaoyuhang@rankyee.com>
Date: 周二, 05 12月 2023 16:21:28 +0800
Subject: [PATCH] add isFixedSize implementation

---
 src/widgets/widgetitemdelegate.cpp |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/src/widgets/widgetitemdelegate.cpp b/src/widgets/widgetitemdelegate.cpp
index 9d338c1..bfa730c 100644
--- a/src/widgets/widgetitemdelegate.cpp
+++ b/src/widgets/widgetitemdelegate.cpp
@@ -36,6 +36,23 @@
     }
 
     bool WidgetItemDelegate::isHostSizeFixed(QObject *host) const {
+        const auto widget = static_cast<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;
     }
 

--
Gitblit v1.9.1