Sine Striker
2024-05-09 3fbcf1aa8f91a804af50fad4e2b122f698259c94
Remove `isHostSizeFixed` in delegate
9个文件已修改
57 ■■■■■ 已修改文件
src/core/contexts/abstractwindowcontext_p.h 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/contexts/cocoawindowcontext.mm 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/contexts/qtwindowcontext.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/contexts/win32windowcontext.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/windowitemdelegate_p.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/quickitemdelegate.cpp 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/quickitemdelegate_p.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/widgets/widgetitemdelegate.cpp 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/widgets/widgetitemdelegate_p.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/contexts/abstractwindowcontext_p.h
@@ -63,6 +63,24 @@
        bool isInSystemButtons(const QPoint &pos, WindowAgentBase::SystemButton *button) const;
        bool isInTitleBarDraggableArea(const QPoint &pos) const;
        inline bool isHostWidthFixed() const {
            return m_windowHandle
                       ? ((m_windowHandle->flags() & Qt::MSWindowsFixedSizeDialogHint) ||
                          m_windowHandle->minimumWidth() == m_windowHandle->maximumWidth())
                       : false;
        }
        inline bool isHostHeightFixed() const {
            return m_windowHandle
                       ? ((m_windowHandle->flags() & Qt::MSWindowsFixedSizeDialogHint) ||
                          m_windowHandle->minimumHeight() == m_windowHandle->maximumHeight())
                       : false;
        }
        inline bool isHostSizeFixed() const {
            return m_windowHandle ? ((m_windowHandle->flags() & Qt::MSWindowsFixedSizeDialogHint) ||
                                     m_windowHandle->minimumSize() == m_windowHandle->maximumSize())
                                  : false;
        }
        virtual QString key() const;
        enum WindowContextHook {
src/core/contexts/cocoawindowcontext.mm
@@ -633,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) {
src/core/contexts/qtwindowcontext.cpp
@@ -121,7 +121,7 @@
        auto window = m_context->window();
        auto delegate = m_context->delegate();
        auto me = static_cast<const QMouseEvent *>(event);
        bool fixedSize = delegate->isHostSizeFixed(host);
        bool fixedSize = m_context->isHostSizeFixed();
        QPoint scenePos = getMouseEventScenePos(me);
        QPoint globalPos = getMouseEventGlobalPos(me);
src/core/contexts/win32windowcontext.cpp
@@ -625,6 +625,7 @@
        // Try hooked procedure and save result
        LRESULT result;
        if (ctx->windowProc(hWnd, message, wParam, lParam, &result)) {
            // https://github.com/stdware/qwindowkit/issues/45
            // Forward the event to user-defined native event filters, there may be some messages
            // that need to be processed by the user.
            std::ignore =
@@ -704,7 +705,7 @@
                const QPoint nativeGlobalPos = QHighDpi::toNativePixels(pos, m_windowHandle.data());
#endif
                std::ignore = showSystemMenu_sys(hWnd, qpoint2point(nativeGlobalPos), false,
                                                 m_delegate->isHostSizeFixed(m_host));
                                                 isHostSizeFixed());
                return;
            }
@@ -1566,7 +1567,7 @@
                QPoint qtScenePos = QHighDpi::fromNativeLocalPosition(point2qpoint(nativeLocalPos),
                                                                      m_windowHandle.data());
                bool isFixedSize = m_delegate->isHostSizeFixed(m_host);
                bool isFixedSize = isHostSizeFixed();
                bool isTitleBar = isInTitleBarDraggableArea(qtScenePos);
                bool dontOverrideCursor = false; // ### TODO
@@ -2205,8 +2206,8 @@
                }
            }
            bool res = showSystemMenu_sys(hWnd, nativeGlobalPos, broughtByKeyboard,
                                          m_delegate->isHostSizeFixed(m_host));
            bool res =
                showSystemMenu_sys(hWnd, nativeGlobalPos, broughtByKeyboard, isHostSizeFixed());
            // Uninstall mouse hook and check if it's a double-click
            if (mouseHookedLocal) {
src/core/windowitemdelegate_p.h
@@ -37,7 +37,6 @@
        // Host property query
        virtual QWindow *hostWindow(const QObject *host) const = 0;
        virtual bool isHostSizeFixed(const QObject *host) const = 0;
        virtual bool isWindowActive(const QObject *host) const = 0;
        virtual Qt::WindowStates getWindowState(const QObject *host) const = 0;
        virtual Qt::WindowFlags getWindowFlags(const QObject *host) const = 0;
src/quick/quickitemdelegate.cpp
@@ -37,13 +37,6 @@
        return static_cast<QQuickWindow *>(const_cast<QObject *>(host));
    }
    bool QuickItemDelegate::isHostSizeFixed(const QObject *host) const {
        const auto window = static_cast<const QQuickWindow *>(host);
        const auto minSize = window->minimumSize();
        const auto maxSize = window->maximumSize();
        return !minSize.isEmpty() && !maxSize.isEmpty() && minSize == maxSize;
    }
    bool QuickItemDelegate::isWindowActive(const QObject *host) const {
        return static_cast<const QQuickWindow *>(host)->isActive();
    }
src/quick/quickitemdelegate_p.h
@@ -34,7 +34,6 @@
        QRect mapGeometryToScene(const QObject *obj) const override;
        QWindow *hostWindow(const QObject *host) const override;
        bool isHostSizeFixed(const QObject *host) const override;
        bool isWindowActive(const QObject *host) const override;
        Qt::WindowStates getWindowState(const QObject *host) const override;
        Qt::WindowFlags getWindowFlags(const QObject *host) const override;
src/widgets/widgetitemdelegate.cpp
@@ -64,21 +64,6 @@
        return static_cast<const QWidget *>(host)->windowHandle();
    }
    bool WidgetItemDelegate::isHostSizeFixed(const QObject *host) const {
        const auto widget = static_cast<const QWidget *>(host);
        // "Qt::MSWindowsFixedSizeDialogHint" is used cross-platform actually.
        if (widget->windowFlags() & Qt::MSWindowsFixedSizeDialogHint) {
            return true;
        }
        // Caused by setFixedWidth/Height/Size().
        const QSize minSize = widget->minimumSize();
        const QSize maxSize = widget->maximumSize();
        if (!minSize.isEmpty() && !maxSize.isEmpty() && (minSize == maxSize)) {
            return true;
        }
        return false;
    }
    bool WidgetItemDelegate::isWindowActive(const QObject *host) const {
        return static_cast<const QWidget *>(host)->isActiveWindow();
    }
src/widgets/widgetitemdelegate_p.h
@@ -34,7 +34,6 @@
        QRect mapGeometryToScene(const QObject *obj) const override;
        QWindow *hostWindow(const QObject *host) const override;
        bool isHostSizeFixed(const QObject *host) const override;
        bool isWindowActive(const QObject *host) const override;
        Qt::WindowStates getWindowState(const QObject *host) const override;
        Qt::WindowFlags getWindowFlags(const QObject *host) const override;