From 7a54badb4a5782c551deb2919f3c489fdb4fbc02 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周日, 03 12月 2023 17:17:40 +0800 Subject: [PATCH] Add snap layout handling --- src/core/corewindowagent.cpp | 41 ++++++++++++++++++++++++++++------------- 1 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/core/corewindowagent.cpp b/src/core/corewindowagent.cpp index a4e4ac4..abcd6fb 100644 --- a/src/core/corewindowagent.cpp +++ b/src/core/corewindowagent.cpp @@ -1,42 +1,57 @@ #include "corewindowagent.h" #include "corewindowagent_p.h" +#include "qwkcoreglobal_p.h" + #ifdef Q_OS_WINDOWS -# include "handler/win32windowcontext_p.h" +# include "win32windowcontext_p.h" #else -# include "handler/qtwindowcontext_p.h" +# include "qtwindowcontext_p.h" #endif + +Q_LOGGING_CATEGORY(qWindowKitLog, "qwindowkit") namespace QWK { - CoreWindowAgentPrivate::CoreWindowAgentPrivate() { + CoreWindowAgentPrivate::CoreWindowAgentPrivate() : q_ptr(nullptr), eventHandler(nullptr) { } - CoreWindowAgentPrivate::~CoreWindowAgentPrivate() { - } + CoreWindowAgentPrivate::~CoreWindowAgentPrivate() = default; void CoreWindowAgentPrivate::init() { } - void CoreWindowAgentPrivate::setup(QWindow *window, WindowItemDelegate *delegate) { + bool CoreWindowAgentPrivate::setup(QWindow *window, WindowItemDelegate *delegate) { + Q_ASSERT(window); + if (!window) { + return false; + } + + auto handler = #ifdef Q_OS_WINDOWS - m_eventHandler = new Win32WindowContext(window, delegate); + new Win32WindowContext(window, delegate) #else - m_eventHandler = new QtWindowContext(window, delegate); + new QtWindowContext(window, delegate) #endif + ; + if (!handler->setup()) { + delete handler; + return false; + } + eventHandler.reset(handler); + return true; } - CoreWindowAgent::~CoreWindowAgent() { - } + CoreWindowAgent::~CoreWindowAgent() = default; void CoreWindowAgent::showSystemMenu(const QPoint &pos) { Q_D(CoreWindowAgent); - d->m_eventHandler->showSystemMenu(pos); + d->eventHandler->showSystemMenu(pos); } void CoreWindowAgent::startSystemMove(const QPoint &pos) { Q_D(CoreWindowAgent); - auto win = d->m_eventHandler->window(); + auto win = d->eventHandler->window(); if (!win) { return; } @@ -47,7 +62,7 @@ void CoreWindowAgent::startSystemResize(Qt::Edges edges, const QPoint &pos) { Q_D(CoreWindowAgent); - auto win = d->m_eventHandler->window(); + auto win = d->eventHandler->window(); if (!win) { return; } -- Gitblit v1.9.1