src/core/contexts/abstractwindowcontext_p.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/core/contexts/cocoawindowcontext.mm | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/core/contexts/qtwindowcontext.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/core/contexts/win32windowcontext.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/core/windowitemdelegate_p.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/quick/quickitemdelegate.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/quick/quickitemdelegate_p.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/widgets/widgetitemdelegate.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/widgets/widgetitemdelegate_p.h | ●●●●● 补丁 | 查看 | 原始文档 | 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;