From 7aabc22e0b6841a46eb449398e4e8910352008cc Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周六, 09 12月 2023 15:10:23 +0800 Subject: [PATCH] Fix windows custom margins key mistake --- src/core/corewindowagent.cpp | 33 ++++++++++++++++----------------- 1 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/core/corewindowagent.cpp b/src/core/corewindowagent.cpp index abcd6fb..d5dff5a 100644 --- a/src/core/corewindowagent.cpp +++ b/src/core/corewindowagent.cpp @@ -13,7 +13,7 @@ namespace QWK { - CoreWindowAgentPrivate::CoreWindowAgentPrivate() : q_ptr(nullptr), eventHandler(nullptr) { + CoreWindowAgentPrivate::CoreWindowAgentPrivate() : q_ptr(nullptr), context(nullptr) { } CoreWindowAgentPrivate::~CoreWindowAgentPrivate() = default; @@ -21,24 +21,23 @@ void CoreWindowAgentPrivate::init() { } - bool CoreWindowAgentPrivate::setup(QWindow *window, WindowItemDelegate *delegate) { - Q_ASSERT(window); - if (!window) { - return false; - } - - auto handler = + AbstractWindowContext *CoreWindowAgentPrivate::createContext() const { + return #ifdef Q_OS_WINDOWS - new Win32WindowContext(window, delegate) + new Win32WindowContext() #else - new QtWindowContext(window, delegate) + new QtWindowContext() #endif - ; - if (!handler->setup()) { - delete handler; + ; + } + + + bool CoreWindowAgentPrivate::setup(QObject *host, WindowItemDelegate *delegate) { + std::unique_ptr<AbstractWindowContext> ctx(createContext()); + if (!ctx->setup(host, delegate)) { return false; } - eventHandler.reset(handler); + context = std::move(ctx); return true; } @@ -46,12 +45,12 @@ void CoreWindowAgent::showSystemMenu(const QPoint &pos) { Q_D(CoreWindowAgent); - d->eventHandler->showSystemMenu(pos); + d->context->showSystemMenu(pos); } void CoreWindowAgent::startSystemMove(const QPoint &pos) { Q_D(CoreWindowAgent); - auto win = d->eventHandler->window(); + auto win = d->context->window(); if (!win) { return; } @@ -62,7 +61,7 @@ void CoreWindowAgent::startSystemResize(Qt::Edges edges, const QPoint &pos) { Q_D(CoreWindowAgent); - auto win = d->eventHandler->window(); + auto win = d->context->window(); if (!win) { return; } -- Gitblit v1.9.1