From f8975a7d449bac21a2fdbc1a8ca85d1f5b99b362 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周二, 05 12月 2023 02:17:12 +0800 Subject: [PATCH] Implement mainwindow example --- src/core/contexts/abstractwindowcontext_p.h | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/core/contexts/abstractwindowcontext_p.h b/src/core/contexts/abstractwindowcontext_p.h index fd3a445..a92d91d 100644 --- a/src/core/contexts/abstractwindowcontext_p.h +++ b/src/core/contexts/abstractwindowcontext_p.h @@ -1,6 +1,9 @@ #ifndef ABSTRACTWINDOWCONTEXT_P_H #define ABSTRACTWINDOWCONTEXT_P_H +#include <array> +#include <memory> + #include <QtCore/QSet> #include <QtGui/QWindow> #include <QtGui/QPolygon> @@ -13,10 +16,8 @@ class QWK_CORE_EXPORT AbstractWindowContext : public QObject { Q_OBJECT public: - inline AbstractWindowContext(QWindow *window, WindowItemDelegate *delegate) - : m_windowHandle(window), m_delegate(delegate) { - } - ~AbstractWindowContext(); + AbstractWindowContext(QWindow *window, WindowItemDelegate *delegate); + ~AbstractWindowContext() override; public: virtual bool setup() = 0; @@ -36,18 +37,23 @@ void showSystemMenu(const QPoint &pos); + QRegion hitTestShape() const; + bool isInSystemButtons(const QPoint &pos, CoreWindowAgent::SystemButton *button) const; + bool isInTitleBarDraggableArea(const QPoint &pos) const; + protected: QWindow *m_windowHandle; - WindowItemDelegate *m_delegate; + std::unique_ptr<WindowItemDelegate> m_delegate; QSet<QObject *> m_hitTestVisibleItems; QList<QRect> m_hitTestVisibleRects; QObject *m_titleBar{}; - QObject *m_systemButtons[CoreWindowAgent::NumSystemButton]{}; + std::array<QObject *, CoreWindowAgent::NumSystemButton> m_systemButtons{}; + // Cached shape mutable bool hitTestVisibleShapeDirty{}; - mutable QPolygon hitTestVisibleShape; + mutable QRegion hitTestVisibleShape; }; inline QWindow *AbstractWindowContext::window() const { -- Gitblit v1.9.1