Sine Striker
2023-12-16 1fab480dc53e910a614d5d836993adb743d59352
src/widgets/widgetwindowagent_cocoa.cpp
@@ -1,10 +1,10 @@
#include "widgetwindowagent_p.h"
#include <QtCore/QDebug>
namespace QWK {
    class TitleBarEventFilter : public QObject {
        Q_OBJECT
    public:
        explicit TitleBarEventFilter(AbstractWindowContext *context, QObject *parent = nullptr);
        ~TitleBarEventFilter() override;
@@ -15,9 +15,12 @@
    private:
        AbstractWindowContext *m_context;
        bool m_leftButtonPressed;
    }
        bool m_moving;
    };
    TitleBarEventFilter::TitleBarEventFilter(QObject *parent) : QObject(parent), m_context(context), m_leftButtonPressed(false) {}
    TitleBarEventFilter::TitleBarEventFilter(AbstractWindowContext *context, QObject *parent)
        : QObject(parent), m_context(context), m_leftButtonPressed(false), m_moving(false) {
    }
    TitleBarEventFilter::~TitleBarEventFilter() = default;
@@ -31,8 +34,8 @@
        const QPoint scenePos = mouseEvent->scenePosition().toPoint();
        const QPoint globalPos = mouseEvent->globalPosition().toPoint();
#else
        const QPoint scenePos = mouseEvent->windowPos().toPoint();
        const QPoint globalPos = mouseEvent->screenPos().toPoint();
        const QPoint scenePos = me->windowPos().toPoint();
        const QPoint globalPos = me->screenPos().toPoint();
#endif
        if (!m_context->isInTitleBarDraggableArea(scenePos)) {
            return false;
@@ -41,6 +44,7 @@
            case QEvent::MouseButtonPress: {
                if (me->button() == Qt::LeftButton) {
                    m_leftButtonPressed = true;
                    m_moving = false;
                    event->accept();
                    return true;
                }
@@ -49,6 +53,7 @@
            case QEvent::MouseButtonRelease: {
                if (me->button() == Qt::LeftButton) {
                    m_leftButtonPressed = false;
                    m_moving = false;
                    event->accept();
                    return true;
                }
@@ -56,8 +61,10 @@
            }
            case QEvent::MouseMove: {
                if (m_leftButtonPressed) {
                    const auto widget = static_cast<QWidget *>(object);
                    widget->windowHandle()->startSystemMove();
                    if (!m_moving) {
                        m_moving = true;
                        m_context->window()->startSystemMove();
                    }
                    event->accept();
                    return true;
                }
@@ -65,11 +72,12 @@
            }
            case QEvent::MouseButtonDblClick: {
                if (me->button() == Qt::LeftButton) {
                    if (!widget->isFullScreen()) {
                        if (widget->isMaximized()) {
                            widget->showNormal();
                    auto window = static_cast<QWidget *>(object)->window();
                    if (!window->isFullScreen()) {
                        if (window->isMaximized()) {
                            window->showNormal();
                        } else {
                            widget->showMaximized();
                            window->showMaximized();
                        }
                        event->accept();
                        return true;
@@ -77,8 +85,10 @@
                }
                break;
            }
            default:
                break;
            default: {
                Q_UNREACHABLE();
                return false;
            }
        }
        return false;
    }
@@ -88,5 +98,3 @@
    }
}
#include "widgetwindowagent_cocoa.moc"