From cd179571ef4905e01f724b2889f27c27d23533aa Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周五, 17 5月 2024 11:42:05 +0800
Subject: [PATCH] Update qmsetup

---
 src/core/contexts/cocoawindowcontext.mm |   44 ++++++++++++++++++++------------------------
 1 files changed, 20 insertions(+), 24 deletions(-)

diff --git a/src/core/contexts/cocoawindowcontext.mm b/src/core/contexts/cocoawindowcontext.mm
index 3989831..d41d308 100644
--- a/src/core/contexts/cocoawindowcontext.mm
+++ b/src/core/contexts/cocoawindowcontext.mm
@@ -330,13 +330,9 @@
             nswindow.movableByWindowBackground = NO;
             nswindow.movable = NO; // This line causes the window in the wrong position when
                                    // 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))
-            [nswindow standardWindowButton:NSWindowCloseButton].hidden = (visible ? NO : YES);
-            [nswindow standardWindowButton:NSWindowMiniaturizeButton].hidden = (visible ? NO : YES);
-            [nswindow standardWindowButton:NSWindowZoomButton].hidden = (visible ? NO : YES);
-#endif
+            [nswindow standardWindowButton:NSWindowCloseButton].hidden = NO;
+            [nswindow standardWindowButton:NSWindowMiniaturizeButton].hidden = NO;
+            [nswindow standardWindowButton:NSWindowZoomButton].hidden = NO;
         }
 
         static void replaceImplementations() {
@@ -513,7 +509,10 @@
 
     static inline void releaseWindowProxy(const WId windowId) {
         if (auto proxy = g_proxyList->take(windowId)) {
-            proxy->setSystemTitleBarVisible(true);
+            // TODO: Determine if the window is valid
+
+            // The window has been destroyed
+            // proxy->setSystemTitleBarVisible(true);
             delete proxy;
         } else {
             return;
@@ -634,8 +633,7 @@
             }
 
             case QEvent::MouseButtonDblClick: {
-                if (me->button() == Qt::LeftButton && inTitleBar &&
-                    !delegate->isHostSizeFixed(host)) {
+                if (me->button() == Qt::LeftButton && inTitleBar && !m_context->isHostSizeFixed()) {
                     Qt::WindowStates windowState = delegate->getWindowState(host);
                     if (!(windowState & Qt::WindowFullScreen)) {
                         if (windowState & Qt::WindowMaximized) {
@@ -661,7 +659,7 @@
     }
 
     CocoaWindowContext::~CocoaWindowContext() {
-        releaseWindowProxy(windowId);
+        releaseWindowProxy(m_windowId);
     }
 
     QString CocoaWindowContext::key() const {
@@ -671,7 +669,7 @@
     void CocoaWindowContext::virtual_hook(int id, void *data) {
         switch (id) {
             case SystemButtonAreaChangedHook: {
-                ensureWindowProxy(windowId)->setScreenRectCallback(m_systemButtonAreaCallback);
+                ensureWindowProxy(m_windowId)->setScreenRectCallback(m_systemButtonAreaCallback);
                 return;
             }
 
@@ -683,27 +681,25 @@
 
     QVariant CocoaWindowContext::windowAttribute(const QString &key) const {
         if (key == QStringLiteral("title-bar-height")) {
-            if (!m_windowHandle)
-                return 0;
-            return ensureWindowProxy(windowId)->titleBarHeight();
+            if (!m_windowId)
+                return {};
+            return ensureWindowProxy(m_windowId)->titleBarHeight();
         }
         return AbstractWindowContext::windowAttribute(key);
     }
 
-    void CocoaWindowContext::winIdChanged() {
+    void CocoaWindowContext::winIdChanged(WId winId, WId oldWinId) {
         // If the original window id is valid, remove all resources related
-        if (windowId) {
-            releaseWindowProxy(windowId);
-            windowId = 0;
+        if (oldWinId) {
+            releaseWindowProxy(oldWinId);
         }
 
-        if (!m_windowHandle) {
+        if (!winId) {
             return;
         }
 
         // Allocate new resources
-        windowId = m_windowHandle->winId();
-        ensureWindowProxy(windowId)->setSystemTitleBarVisible(false);
+        ensureWindowProxy(winId)->setSystemTitleBarVisible(false);
     }
 
     bool CocoaWindowContext::windowAttributeChanged(const QString &key, const QVariant &attribute,
@@ -713,7 +709,7 @@
         if (key == QStringLiteral("no-system-buttons")) {
             if (attribute.type() != QVariant::Bool)
                 return false;
-            ensureWindowProxy(windowId)->setSystemButtonVisible(!attribute.toBool());
+            ensureWindowProxy(m_windowId)->setSystemButtonVisible(!attribute.toBool());
             return true;
         }
 
@@ -740,7 +736,7 @@
             } else {
                 return false;
             }
-            return ensureWindowProxy(windowId)->setBlurEffect(mode);
+            return ensureWindowProxy(m_windowId)->setBlurEffect(mode);
         }
 
         return false;

--
Gitblit v1.9.1