| | |
| | | #include "widgetwindowagent.h" |
| | | #include "widgetwindowagent_p.h" |
| | | |
| | | #include <QtGui/QtEvents> |
| | | #include <QtGui/QPainter> |
| | | #include <QtCore/QDebug> |
| | | |
| | | #include "widgetitemdelegate_p.h" |
| | | |
| | | namespace QWK { |
| | |
| | | } |
| | | |
| | | Q_D(WidgetWindowAgent); |
| | | if (d->host) { |
| | | if (d->hostWidget) { |
| | | return false; |
| | | } |
| | | |
| | | std::ignore = w->winId(); // Make sure the window handle is created |
| | | if (!d->setup(w->windowHandle(), new WidgetItemDelegate())) { |
| | | w->setAttribute(Qt::WA_DontCreateNativeAncestors); |
| | | w->setAttribute(Qt::WA_NativeWindow); |
| | | |
| | | if (!d->setup(w, new WidgetItemDelegate())) { |
| | | return false; |
| | | } |
| | | d->host = w; |
| | | d->hostWidget = w; |
| | | |
| | | #ifdef Q_OS_WINDOWS |
| | | d->setupWindows10BorderWorkaround(); |
| | | #endif |
| | | return true; |
| | | } |
| | | |
| | | bool WidgetWindowAgent::isHitTestVisible(QWidget *w) const { |
| | | Q_D(const WidgetWindowAgent); |
| | | return d->eventHandler->isHitTestVisible(w); |
| | | } |
| | | |
| | | void WidgetWindowAgent::setHitTestVisible(QWidget *w, bool visible) { |
| | | Q_D(WidgetWindowAgent); |
| | | d->eventHandler->setHitTestVisible(w, visible); |
| | | } |
| | | |
| | | void WidgetWindowAgent::setHitTestVisible(const QRect &rect, bool visible) { |
| | | Q_D(WidgetWindowAgent); |
| | | d->eventHandler->setHitTestVisible(rect, visible); |
| | | } |
| | | |
| | | QWidget *WidgetWindowAgent::systemButton(CoreWindowAgent::SystemButton button) const { |
| | | Q_D(const WidgetWindowAgent); |
| | | return qobject_cast<QWidget *>(d->eventHandler->systemButton(button)); |
| | | } |
| | | |
| | | void WidgetWindowAgent::setSystemButton(CoreWindowAgent::SystemButton button, QWidget *w) { |
| | | Q_D(WidgetWindowAgent); |
| | | if (!d->eventHandler->setSystemButton(button, w)) { |
| | | return; |
| | | } |
| | | Q_EMIT systemButtonChanged(button, w); |
| | | } |
| | | |
| | | QWidget *WidgetWindowAgent::titleBar() const { |
| | | Q_D(const WidgetWindowAgent); |
| | | return qobject_cast<QWidget *>(d->eventHandler->titleBar()); |
| | | return static_cast<QWidget *>(d->context->titleBar()); |
| | | } |
| | | |
| | | void WidgetWindowAgent::setTitleBar(QWidget *w) { |
| | | Q_D(WidgetWindowAgent); |
| | | if (!d->eventHandler->setTitleBar(w)) { |
| | | if (!d->context->setTitleBar(w)) { |
| | | return; |
| | | } |
| | | Q_EMIT titleBarWidgetChanged(w); |
| | | } |
| | | |
| | | QWidget *WidgetWindowAgent::systemButton(SystemButton button) const { |
| | | Q_D(const WidgetWindowAgent); |
| | | return static_cast<QWidget *>(d->context->systemButton(button)); |
| | | } |
| | | |
| | | void WidgetWindowAgent::setSystemButton(SystemButton button, QWidget *w) { |
| | | Q_D(WidgetWindowAgent); |
| | | if (!d->context->setSystemButton(button, w)) { |
| | | return; |
| | | } |
| | | Q_EMIT systemButtonChanged(button, w); |
| | | } |
| | | |
| | | bool WidgetWindowAgent::isHitTestVisible(const QWidget *w) const { |
| | | Q_D(const WidgetWindowAgent); |
| | | return d->context->isHitTestVisible(w); |
| | | } |
| | | |
| | | void WidgetWindowAgent::setHitTestVisible(const QWidget *w, bool visible) { |
| | | Q_D(WidgetWindowAgent); |
| | | d->context->setHitTestVisible(w, visible); |
| | | } |
| | | |
| | | void WidgetWindowAgent::setHitTestVisible(const QRect &rect, bool visible) { |
| | | Q_D(WidgetWindowAgent); |
| | | d->context->setHitTestVisible(rect, visible); |
| | | } |
| | | |
| | | WidgetWindowAgent::WidgetWindowAgent(WidgetWindowAgentPrivate &d, QObject *parent) |
| | | : CoreWindowAgent(d, parent) { |
| | | : WindowAgentBase(d, parent) { |
| | | d.init(); |
| | | } |
| | | } |