Sine Striker
2024-11-21 c3ef42dad254f6d04cab521c9ae619a46bb84f7a
src/core/contexts/win32windowcontext.cpp
@@ -343,7 +343,6 @@
            case HTBORDER:
                return Win32WindowContext::FixedBorder;
            default:
                Q_UNREACHABLE();
                break;
        }
        return Win32WindowContext::Outside;
@@ -828,6 +827,10 @@
            return isSystemBorderEnabled() && !isWin11OrGreater();
        }
        if (key == QStringLiteral("windows-system-border-enabled")) {
            return isSystemBorderEnabled();
        }
        if (key == QStringLiteral("border-thickness")) {
            return m_windowId
                       ? int(getWindowFrameBorderThickness(reinterpret_cast<HWND>(m_windowId)))
@@ -835,9 +838,7 @@
        }
        if (key == QStringLiteral("title-bar-height")) {
            return m_windowId
                       ? int(getTitleBarHeight(reinterpret_cast<HWND>(m_windowId)))
                       : 0;
            return m_windowId ? int(getTitleBarHeight(reinterpret_cast<HWND>(m_windowId))) : 0;
        }
        return AbstractWindowContext::windowAttribute(key);
    }
@@ -848,16 +849,10 @@
        lastHitTestResult = WindowPart::Outside;
        lastHitTestResultRaw = HTNOWHERE;
        if (!isSystemBorderEnabled()) {
            m_delegate->setWindowFlags(m_host, m_delegate->getWindowFlags(m_host) |
                                                   Qt::FramelessWindowHint);
        }
        // If the original window id is valid, remove all resources related
        if (oldWinId) {
            removeManagedWindow(reinterpret_cast<HWND>(oldWinId));
        }
        if (!winId) {
            return;
        }
@@ -1696,7 +1691,8 @@
                        // outside the window, that is, the three transparent window resize area.
                        // Returning HTCLIENT will confuse Windows, we can't put our controls there
                        // anyway.
                        *result = HTNOWHERE; // Make sure we can know we don't set any value explicitly later.
                        *result = HTNOWHERE; // Make sure we can know we don't set any value
                                             // explicitly later.
                        if (originalHitTestResult == HTCAPTION) {
                        } else if (isFixedSize || dontOverrideCursor) {
                            *result = HTBORDER;
@@ -1725,11 +1721,13 @@
                                } else {
                                    *result = HTLEFT;
                                }
                            } else if (originalHitTestResult == HTLEFT || originalHitTestResult == HTRIGHT) {
                            } else if (originalHitTestResult == HTLEFT ||
                                       originalHitTestResult == HTRIGHT) {
                                if (isFixedWidth) {
                                    *result = HTBORDER;
                                }
                            } else if (originalHitTestResult == HTTOP || originalHitTestResult == HTBOTTOM) {
                            } else if (originalHitTestResult == HTTOP ||
                                       originalHitTestResult == HTBOTTOM) {
                                if (isFixedHeight) {
                                    *result = HTBORDER;
                                }
@@ -1758,7 +1756,8 @@
                        // inside our homemade title bar now, return HTCLIENT to let our
                        // title bar can still capture mouse events.
                        *result = [&]() {
                            if (isFixedSize || isFixedHeight || dontOverrideCursor || (isFixedWidth && (isInLeftBorder || isInRightBorder))) {
                            if (isFixedSize || isFixedHeight || dontOverrideCursor ||
                                (isFixedWidth && (isInLeftBorder || isInRightBorder))) {
                                if (isInTitleBar) {
                                    return HTCAPTION;
                                } else {
@@ -2174,7 +2173,10 @@
        // of the upper-left non-client area. It's confirmed that this issue exists
        // from Windows 7 to Windows 10. Not tested on Windows 11 yet. Don't know
        // whether it exists on Windows XP to Windows Vista or not.
        *result = wParam ? WVR_REDRAW : FALSE;
        // https://github.com/chromium/chromium/blob/5d297da3cf2a642e9ace2b23fed097370bc70814/ui/views/win/hwnd_message_handler.cc#L2330
        // Do not return WVR_REDRAW otherwise child HWNDs will be mispositioned.
        *result = FALSE;
        return true;
    }