From 1fab480dc53e910a614d5d836993adb743d59352 Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周六, 16 12月 2023 20:52:30 +0800
Subject: [PATCH] Remove redundant API

---
 src/core/windowagentbase.cpp |   28 +++++++++++++++++++---------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/src/core/windowagentbase.cpp b/src/core/windowagentbase.cpp
index 94d1fca..f38fb5d 100644
--- a/src/core/windowagentbase.cpp
+++ b/src/core/windowagentbase.cpp
@@ -1,10 +1,14 @@
 #include "windowagentbase.h"
 #include "windowagentbase_p.h"
 
+#include <QWKCore/qwkconfig.h>
+
 #include "qwkglobal_p.h"
 
-#ifdef Q_OS_WINDOWS
+#if defined(Q_OS_WINDOWS) && !QWINDOWKIT_CONFIG(FORCE_QT_WINDOW_CONTEXT)
 #  include "win32windowcontext_p.h"
+#elif defined(Q_OS_MAC) && !QWINDOWKIT_CONFIG(FORCE_QT_WINDOW_CONTEXT)
+#  include "cocoawindowcontext_p.h"
 #else
 #  include "qtwindowcontext_p.h"
 #endif
@@ -12,6 +16,9 @@
 Q_LOGGING_CATEGORY(qWindowKitLog, "qwindowkit")
 
 namespace QWK {
+
+    WindowAgentBasePrivate::WindowContextFactoryMethod
+        WindowAgentBasePrivate::windowContextFactoryMethod = nullptr;
 
     WindowAgentBasePrivate::WindowAgentBasePrivate() : q_ptr(nullptr), context(nullptr) {
     }
@@ -22,15 +29,18 @@
     }
 
     AbstractWindowContext *WindowAgentBasePrivate::createContext() const {
-        return
-#ifdef Q_OS_WINDOWS
-            new Win32WindowContext()
-#else
-            new QtWindowContext()
-#endif
-                ;
-    }
+        if (windowContextFactoryMethod) {
+            return windowContextFactoryMethod();
+        }
 
+#if defined(Q_OS_WINDOWS) && !QWINDOWKIT_CONFIG(FORCE_QT_WINDOW_CONTEXT)
+        return new Win32WindowContext();
+#elif defined(Q_OS_MAC) && !QWINDOWKIT_CONFIG(FORCE_QT_WINDOW_CONTEXT)
+        return new CocoaWindowContext();
+#else
+        return new QtWindowContext();
+#endif
+    }
 
     bool WindowAgentBasePrivate::setup(QObject *host, WindowItemDelegate *delegate) {
         std::unique_ptr<AbstractWindowContext> ctx(createContext());

--
Gitblit v1.9.1