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/CMakeLists.txt               |   18 ++++++++++++++++--
 src/core/contexts/qtwindowcontext.cpp |    2 +-
 CMakeLists.txt                        |    2 ++
 src/core/windowagentbase.cpp          |    4 ++--
 4 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b9d18d8..01f9fad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,6 +13,8 @@
 option(QWINDOWKIT_BUILD_DOCUMENTATIONS "Build documentations" OFF)
 option(QWINDOWKIT_INSTALL "Install library" ON)
 
+option(QWINDOWKIT_FORCE_QT_WINDOW_CONTEXT "Enable Qt Window Context anyway" OFF)
+
 # ----------------------------------
 # CMake Settings
 # ----------------------------------
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index c3e7cf1..71c0e72 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -20,13 +20,26 @@
     contexts/abstractwindowcontext.cpp
 )
 
+set(_defines_private)
+
 if(WIN32)
     list(APPEND _src
         qwindowkit_windows.h
         qwindowkit_windows.cpp
-        contexts/win32windowcontext_p.h
-        contexts/win32windowcontext.cpp
     )
+
+    if(QWINDOWKIT_FORCE_QT_WINDOW_CONTEXT)
+        list(APPEND _src
+            contexts/qtwindowcontext_p.h
+            contexts/qtwindowcontext.cpp
+        )
+        list(APPEND _defines_private QWINDOWKIT_FORCE_QT_WINDOW_CONTEXT)
+    else()
+        list(APPEND _src
+            contexts/win32windowcontext_p.h
+            contexts/win32windowcontext.cpp
+        )
+    endif()
 else()
     list(APPEND _src
         contexts/qtwindowcontext_p.h
@@ -44,6 +57,7 @@
 
 qwk_add_library(${PROJECT_NAME} AUTOGEN
     SOURCES ${_src}
+    DEFINES_PRIVATE ${_defines_private}
     LINKS
     QT_LINKS Core Gui
     QT_INCLUDE_PRIVATE Core Gui
diff --git a/src/core/contexts/qtwindowcontext.cpp b/src/core/contexts/qtwindowcontext.cpp
index 9baa24c..ea2bba5 100644
--- a/src/core/contexts/qtwindowcontext.cpp
+++ b/src/core/contexts/qtwindowcontext.cpp
@@ -54,7 +54,7 @@
     }
 
     bool QtWindowContext::setupHost() {
-        return false;
+        return true;
     }
 
 }
\ No newline at end of file
diff --git a/src/core/windowagentbase.cpp b/src/core/windowagentbase.cpp
index 65b7dad..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"
@@ -28,7 +28,7 @@
         if (windowContextFactoryMethod) {
             return windowContextFactoryMethod();
         }
-#ifdef Q_OS_WINDOWS
+#if defined(Q_OS_WINDOWS) && !defined(QWINDOWKIT_FORCE_QT_WINDOW_CONTEXT)
         return new Win32WindowContext();
 #else
         return new QtWindowContext();

--
Gitblit v1.9.1