From 3cfe15a9c3db0993d8b8fef5d148625840e5a75c Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周二, 05 12月 2023 15:43:39 +0800
Subject: [PATCH] Add host interface

---
 src/quick/quickwindowagent.cpp |   51 +++++++++++++++++++++++++++------------------------
 1 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/src/quick/quickwindowagent.cpp b/src/quick/quickwindowagent.cpp
index d7f283d..59949f2 100644
--- a/src/quick/quickwindowagent.cpp
+++ b/src/quick/quickwindowagent.cpp
@@ -23,60 +23,63 @@
     QuickWindowAgent::~QuickWindowAgent() {
     }
 
-    void QuickWindowAgent::setup(QQuickWindow *window) {
+    bool QuickWindowAgent::setup(QQuickWindow *window) {
         Q_ASSERT(window);
         if (!window) {
-            return;
+            return false;
         }
 
         Q_D(QuickWindowAgent);
-        if (d->host) {
-            return;
+        if (d->hostWindow) {
+            return false;
         }
-        d->host = window;
 
-        d->setup(window, new QuickItemDelegate());
+        if (!d->setup(window, new QuickItemDelegate())) {
+            return true;
+        }
+        d->hostWindow = window;
+        return true;
     }
 
-    bool QuickWindowAgent::isHitTestVisible(QQuickItem *item) const {
+    QQuickItem *QuickWindowAgent::titleBar() const {
         Q_D(const QuickWindowAgent);
-        return d->m_eventHandler->isHitTestVisible(item);
+        return static_cast<QQuickItem *>(d->context->titleBar());
     }
 
-    void QuickWindowAgent::setHitTestVisible(QQuickItem *item, bool visible) {
+    void QuickWindowAgent::setTitleBar(QQuickItem *item) {
         Q_D(QuickWindowAgent);
-        d->m_eventHandler->setHitTestVisible(item, visible);
-    }
-
-    void QuickWindowAgent::setHitTestVisible(const QRect &rect, bool visible) {
-        Q_D(QuickWindowAgent);
-        d->m_eventHandler->setHitTestVisible(rect, visible);
+        if (!d->context->setTitleBar(item)) {
+            return;
+        }
+        Q_EMIT titleBarWidgetChanged(item);
     }
 
     QQuickItem *QuickWindowAgent::systemButton(SystemButton button) const {
         Q_D(const QuickWindowAgent);
-        return static_cast<QQuickItem *>(d->m_eventHandler->systemButton(button));
+        return static_cast<QQuickItem *>(d->context->systemButton(button));
     }
 
     void QuickWindowAgent::setSystemButton(SystemButton button, QQuickItem *item) {
         Q_D(QuickWindowAgent);
-        if (!d->m_eventHandler->setSystemButton(button, item)) {
+        if (!d->context->setSystemButton(button, item)) {
             return;
         }
         Q_EMIT systemButtonChanged(button, item);
     }
 
-    QQuickItem *QuickWindowAgent::titleBar() const {
+    bool QuickWindowAgent::isHitTestVisible(QQuickItem *item) const {
         Q_D(const QuickWindowAgent);
-        return static_cast<QQuickItem *>(d->m_eventHandler->titleBar());
+        return d->context->isHitTestVisible(item);
     }
 
-    void QuickWindowAgent::setTitleBar(QQuickItem *item) {
+    void QuickWindowAgent::setHitTestVisible(QQuickItem *item, bool visible) {
         Q_D(QuickWindowAgent);
-        if (!d->m_eventHandler->setTitleBar(item)) {
-            return;
-        }
-        Q_EMIT titleBarWidgetChanged(item);
+        d->context->setHitTestVisible(item, visible);
+    }
+
+    void QuickWindowAgent::setHitTestVisible(const QRect &rect, bool visible) {
+        Q_D(QuickWindowAgent);
+        d->context->setHitTestVisible(rect, visible);
     }
 
     QuickWindowAgent::QuickWindowAgent(QuickWindowAgentPrivate &d, QObject *parent)

--
Gitblit v1.9.1