| | |
| | | #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 |
| | |
| | | if (windowContextFactoryMethod) { |
| | | return windowContextFactoryMethod(); |
| | | } |
| | | #ifdef Q_OS_WINDOWS |
| | | |
| | | #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 |
| | | 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; |
| | | |
| | | QVariant WindowAgentBase::windowAttribute(const QString &key) const { |
| | | Q_D(const WindowAgentBase); |
| | | return d->context->windowAttribute(key); |
| | | } |
| | | |
| | | bool WindowAgentBase::setWindowAttribute(const QString &key, const QVariant &attribute) { |
| | | Q_D(WindowAgentBase); |
| | | return d->context->setWindowAttribute(key, attribute); |
| | | } |
| | | |
| | | void WindowAgentBase::showSystemMenu(const QPoint &pos) { |
| | | Q_D(WindowAgentBase); |
| | | d->context->showSystemMenu(pos); |
| | | } |
| | | |
| | | void WindowAgentBase::startSystemMove(const QPoint &pos) { |
| | | Q_D(WindowAgentBase); |
| | | auto win = d->context->window(); |
| | | if (!win) { |
| | | return; |
| | | } |
| | | |
| | | Q_UNUSED(pos) |
| | | win->startSystemMove(); |
| | | } |
| | | |
| | | void WindowAgentBase::startSystemResize(Qt::Edges edges, const QPoint &pos) { |
| | | Q_D(WindowAgentBase); |
| | | auto win = d->context->window(); |
| | | if (!win) { |
| | | return; |
| | | } |
| | | |
| | | Q_UNUSED(pos) |
| | | win->startSystemResize(edges); |
| | | } |
| | | |
| | | void WindowAgentBase::centralize() { |
| | | Q_D(WindowAgentBase); |
| | | d->context->virtual_hook(AbstractWindowContext::CentralizeHook, nullptr); |
| | | } |
| | | |
| | | void WindowAgentBase::raise() { |
| | | Q_D(WindowAgentBase); |
| | | d->context->virtual_hook(AbstractWindowContext::RaiseWindowHook, nullptr); |
| | | } |
| | | |
| | | WindowAgentBase::WindowAgentBase(WindowAgentBasePrivate &d, QObject *parent) |