Sine Striker
2023-12-18 d3d7430ec9afb94abaf78fa2c9edd9d9f946881c
src/core/contexts/cocoawindowcontext.mm
@@ -7,14 +7,6 @@
namespace QWK {
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    static const struct QWK_Hook {
        QWK_Hook() {
            qputenv("QT_MAC_WANTS_LAYER", "1");
        }
    } g_hook{};
#endif
    struct NSWindowProxy {
        NSWindowProxy(NSWindow *macWindow) {
            if (instances.contains(macWindow)) {
@@ -105,7 +97,7 @@
            nswindow.showsToolbarButton = NO;
            nswindow.movableByWindowBackground = NO;
            nswindow.movable = NO; // This line causes the window in the wrong position when
            // become fullscreen.
                                   // become fullscreen.
            //  For some unknown reason, we don't need the following hack in Qt versions below or
            //  equal to 6.2.4.
#if (QT_VERSION > QT_VERSION_CHECK(6, 2, 4))
@@ -267,7 +259,8 @@
    CocoaWindowEventFilter::~CocoaWindowEventFilter() = default;
    bool CocoaWindowEventFilter::eventFilter(QObject *object, QEvent *event) {
    bool CocoaWindowEventFilter::eventFilter(QObject *obj, QEvent *event) {
        Q_UNUSED(obj)
        auto type = event->type();
        if (type < QEvent::MouseButtonPress || type > QEvent::MouseMove) {
            return false;
@@ -277,8 +270,8 @@
        WindowItemDelegate *delegate = m_context->delegate();
        auto me = static_cast<const QMouseEvent *>(event);
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
        QPoint scenePos = mouseEvent->scenePosition().toPoint();
        QPoint globalPos = mouseEvent->globalPosition().toPoint();
        QPoint scenePos = me->scenePosition().toPoint();
        QPoint globalPos = me->globalPosition().toPoint();
#else
        QPoint scenePos = me->windowPos().toPoint();
        QPoint globalPos = me->screenPos().toPoint();
@@ -384,15 +377,23 @@
    }
    void CocoaWindowContext::virtual_hook(int id, void *data) {
        switch (id) {
            case ShowSystemMenuHook:
                // TODO: mac system menu
                return;
            case SystemButtonAreaChangedHook:
                // TODO: mac system button rect updated
                return;
            default:
                break;
        }
        AbstractWindowContext::virtual_hook(id, data);
    }
    bool CocoaWindowContext::setupHost() {
    void CocoaWindowContext::winIdChanged(QWindow *oldWindow, bool destroyed) {
        windowId = m_windowHandle->winId();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
        m_windowHandle->setProperty("_q_mac_wantsLayer", 1);
#endif
        ensureWindowProxy(windowId)->setSystemTitleBarVisible(false);
        std::ignore = new CocoaWindowEventFilter(this, this);
        cocoaWindowEventFilter = std::make_unique<CocoaWindowEventFilter>(this, this);
        return true;
    }