From e9f790d3533ebaee1f782e91b6e13b2c6375c86a Mon Sep 17 00:00:00 2001 From: SineStriker <55847490+SineStriker@users.noreply.github.com> Date: 周二, 11 2月 2025 23:06:01 +0800 Subject: [PATCH] AWC: fix window attribute handler --- src/core/contexts/cocoawindowcontext.mm | 24 +++++++++++------------- 1 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/core/contexts/cocoawindowcontext.mm b/src/core/contexts/cocoawindowcontext.mm index a7e857e..c26152f 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() { @@ -514,7 +510,7 @@ static inline void releaseWindowProxy(const WId windowId) { if (auto proxy = g_proxyList->take(windowId)) { // TODO: Determine if the window is valid - + // The window has been destroyed // proxy->setSystemTitleBarVisible(true); delete proxy; @@ -637,10 +633,11 @@ } case QEvent::MouseButtonDblClick: { - if (me->button() == Qt::LeftButton && inTitleBar && - !delegate->isHostSizeFixed(host)) { + if (me->button() == Qt::LeftButton && inTitleBar && !m_context->isHostSizeFixed()) { + Qt::WindowFlags windowFlags = delegate->getWindowFlags(host); Qt::WindowStates windowState = delegate->getWindowState(host); - if (!(windowState & Qt::WindowFullScreen)) { + if ((windowFlags & Qt::WindowMaximizeButtonHint) && + !(windowState & Qt::WindowFullScreen)) { if (windowState & Qt::WindowMaximized) { delegate->setWindowState(host, windowState & ~Qt::WindowMaximized); } else { @@ -699,7 +696,7 @@ releaseWindowProxy(oldWinId); } - if (!m_windowHandle) { + if (!winId) { return; } @@ -710,6 +707,8 @@ bool CocoaWindowContext::windowAttributeChanged(const QString &key, const QVariant &attribute, const QVariant &oldAttribute) { Q_UNUSED(oldAttribute) + + Q_ASSERT(m_windowId); if (key == QStringLiteral("no-system-buttons")) { if (attribute.type() != QVariant::Bool) @@ -743,7 +742,6 @@ } return ensureWindowProxy(m_windowId)->setBlurEffect(mode); } - return false; } -- Gitblit v1.9.1