From 84ef238611127b9d964ecb54bea283e0141d2998 Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周三, 13 12月 2023 14:16:42 +0800
Subject: [PATCH] Add qt context option

---
 src/core/windowagentbase.cpp |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/core/windowagentbase.cpp b/src/core/windowagentbase.cpp
index 94d1fca..b179042 100644
--- a/src/core/windowagentbase.cpp
+++ b/src/core/windowagentbase.cpp
@@ -3,7 +3,7 @@
 
 #include "qwkglobal_p.h"
 
-#ifdef Q_OS_WINDOWS
+#if defined(Q_OS_WINDOWS) && !defined(QWINDOWKIT_FORCE_QT_WINDOW_CONTEXT)
 #  include "win32windowcontext_p.h"
 #else
 #  include "qtwindowcontext_p.h"
@@ -12,6 +12,9 @@
 Q_LOGGING_CATEGORY(qWindowKitLog, "qwindowkit")
 
 namespace QWK {
+
+    WindowAgentBasePrivate::WindowContextFactoryMethod
+        WindowAgentBasePrivate::windowContextFactoryMethod = nullptr;
 
     WindowAgentBasePrivate::WindowAgentBasePrivate() : q_ptr(nullptr), context(nullptr) {
     }
@@ -22,15 +25,15 @@
     }
 
     AbstractWindowContext *WindowAgentBasePrivate::createContext() const {
-        return
-#ifdef Q_OS_WINDOWS
-            new Win32WindowContext()
+        if (windowContextFactoryMethod) {
+            return windowContextFactoryMethod();
+        }
+#if defined(Q_OS_WINDOWS) && !defined(QWINDOWKIT_FORCE_QT_WINDOW_CONTEXT)
+        return new Win32WindowContext();
 #else
-            new QtWindowContext()
+        return new QtWindowContext();
 #endif
-                ;
     }
-
 
     bool WindowAgentBasePrivate::setup(QObject *host, WindowItemDelegate *delegate) {
         std::unique_ptr<AbstractWindowContext> ctx(createContext());

--
Gitblit v1.9.1