From e9d163b1a811ee4f02e898bc7c2e6336d88e4a7f Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周日, 28 7月 2024 18:09:03 +0800
Subject: [PATCH] Make hit-test items auto-delete

---
 src/quick/quickwindowagent.h |   38 +++++++++++++++++++++++++++-----------
 1 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/src/quick/quickwindowagent.h b/src/quick/quickwindowagent.h
index 714ffcf..e4290e6 100644
--- a/src/quick/quickwindowagent.h
+++ b/src/quick/quickwindowagent.h
@@ -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
+
 #ifndef QUICKWINDOWAGENT_H
 #define QUICKWINDOWAGENT_H
 
@@ -19,21 +23,33 @@
         ~QuickWindowAgent() override;
 
     public:
-        bool setup(QQuickWindow *window);
+        Q_INVOKABLE bool setup(QQuickWindow *window);
 
-        const QQuickItem *titleBar() const;
-        void setTitleBar(const QQuickItem *item);
+        Q_INVOKABLE QQuickItem *titleBar() const;
+        Q_INVOKABLE void setTitleBar(QQuickItem *item);
 
-        const QQuickItem *systemButton(SystemButton button) const;
-        void setSystemButton(SystemButton button, const QQuickItem *item);
+        Q_INVOKABLE QQuickItem *systemButton(SystemButton button) const;
+        Q_INVOKABLE void setSystemButton(SystemButton button, QQuickItem *item);
 
-        bool isHitTestVisible(const QQuickItem *item) const;
-        void setHitTestVisible(const QQuickItem *item, bool visible = true);
-        void setHitTestVisible(const QRect &rect, bool visible = true);
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
+        Q_INVOKABLE bool isHitTestVisible(QQuickItem *item) const;
+#else
+        Q_INVOKABLE bool isHitTestVisible(const QQuickItem *item) const;
+#endif
+        Q_INVOKABLE void setHitTestVisible(QQuickItem *item, bool visible = true);
+
+#ifdef Q_OS_MAC
+        // The system button area APIs are experimental, very likely to change in the future.
+        Q_INVOKABLE QQuickItem *systemButtonArea() const;
+        Q_INVOKABLE void setSystemButtonArea(QQuickItem *item);
+
+        Q_INVOKABLE ScreenRectCallback systemButtonAreaCallback() const;
+        Q_INVOKABLE void setSystemButtonAreaCallback(const ScreenRectCallback &callback);
+#endif
 
     Q_SIGNALS:
-        void titleBarWidgetChanged(const QQuickItem *item);
-        void systemButtonChanged(SystemButton button, const QQuickItem *item);
+        void titleBarWidgetChanged(QQuickItem *item);
+        void systemButtonChanged(SystemButton button, QQuickItem *item);
 
     protected:
         QuickWindowAgent(QuickWindowAgentPrivate &d, QObject *parent = nullptr);
@@ -41,4 +57,4 @@
 
 }
 
-#endif // QUICKWINDOWAGENT_H
\ No newline at end of file
+#endif // QUICKWINDOWAGENT_H

--
Gitblit v1.9.1