From 59814f0ef77528995e2655247aecf2dfdf2f67d9 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周一, 18 12月 2023 21:56:48 +0800 Subject: [PATCH] Update README --- src/core/windowagentbase.cpp | 35 +++++++++++++++++++++-------------- 1 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/core/windowagentbase.cpp b/src/core/windowagentbase.cpp index 94d1fca..d2b9e1e 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,23 +29,23 @@ } AbstractWindowContext *WindowAgentBasePrivate::createContext() const { - return -#ifdef Q_OS_WINDOWS - new Win32WindowContext() + 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 - new QtWindowContext() + return new QtWindowContext(); #endif - ; } - - bool WindowAgentBasePrivate::setup(QObject *host, WindowItemDelegate *delegate) { - std::unique_ptr<AbstractWindowContext> ctx(createContext()); - if (!ctx->setup(host, delegate)) { - return false; - } - context = std::move(ctx); - return true; + void WindowAgentBasePrivate::setup(QObject *host, WindowItemDelegate *delegate) { + auto ctx = createContext(); + ctx->setup(host, delegate); + context.reset(ctx); } WindowAgentBase::~WindowAgentBase() = default; -- Gitblit v1.9.1