From bc8868d519702c5a55f21377711cf4db54714650 Mon Sep 17 00:00:00 2001 From: SineStriker <55847490+SineStriker@users.noreply.github.com> Date: 周一, 29 1月 2024 22:03:10 +0800 Subject: [PATCH] Fix centerize issue (#34) --- src/core/contexts/abstractwindowcontext.cpp | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/core/contexts/abstractwindowcontext.cpp b/src/core/contexts/abstractwindowcontext.cpp index dc0dc38..6f2e421 100644 --- a/src/core/contexts/abstractwindowcontext.cpp +++ b/src/core/contexts/abstractwindowcontext.cpp @@ -1,3 +1,7 @@ +// Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware) +// Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao) +// SPDX-License-Identifier: Apache-2.0 + #include "abstractwindowcontext_p.h" #include <QtGui/QPen> @@ -120,8 +124,8 @@ } #ifdef Q_OS_MAC - void AbstractWindowContext::setSystemButtonArea(const QRect &rect) { - m_systemButtonArea = rect; + void AbstractWindowContext::setSystemButtonAreaCallback(const ScreenRectCallback &callback) { + m_systemButtonAreaCallback = callback; virtual_hook(SystemButtonAreaChangedHook, nullptr); } #endif @@ -201,9 +205,10 @@ if (!m_windowHandle) return; + QRect windowGeometry = m_delegate->getGeometry(m_host); QRect screenGeometry = m_windowHandle->screen()->geometry(); - int x = (screenGeometry.width() - m_windowHandle->width()) / 2; - int y = (screenGeometry.height() - m_windowHandle->height()) / 2; + int x = (screenGeometry.width() - windowGeometry.width()) / 2; + int y = (screenGeometry.height() - windowGeometry.height()) / 2; QPoint pos(x, y); pos += screenGeometry.topLeft(); m_windowHandle->setPosition(pos); @@ -211,6 +216,10 @@ } case RaiseWindowHook: { + if (!m_windowHandle) + return; + + m_delegate->setWindowVisible(m_host, true); Qt::WindowStates state = m_delegate->getWindowState(m_host); if (state & Qt::WindowMinimized) { m_delegate->setWindowState(m_host, state & ~Qt::WindowMinimized); -- Gitblit v1.9.1