diff options
author | Lorn Potter <lorn.potter@gmail.com> | 2020-07-07 11:15:17 +1000 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-11-23 01:26:33 +0000 |
commit | 7d3aab065ac5d5e087e24d90069fa5693efce463 (patch) | |
tree | e08557ae61fd2d2d1f9bbb77bd1a0c3a2d6457e4 | |
parent | b00fc4676127cd28d3fb2a14874d363a19ba1475 (diff) |
wasm: fix resizing of qwidget windows
This also fixes the cursor changing during resize mode
Fixes: QTBUG-85361
Change-Id: Ic85a5c31a8a2dc4265a84f16fd5fcdc231062c6d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
(cherry picked from commit 0de0a6a54c496b5c3c8d79647924476837a02354)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/platforms/wasm/qwasmeventtranslator.cpp | 35 | ||||
-rw-r--r-- | src/plugins/platforms/wasm/qwasmeventtranslator.h | 2 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp index c7bae4ba7f..12bee015e7 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp @@ -43,6 +43,7 @@ #include <QtCore/qdeadlinetimer.h> #include <private/qmakearray_p.h> #include <QtCore/qnamespace.h> +#include <QCursor> #include <emscripten/bind.h> @@ -574,8 +575,13 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven Qt::MouseButton button = translateMouseButton(mouseEvent->button); Qt::KeyboardModifiers modifiers = translateMouseEventModifier(mouseEvent); - QWindow *window2 = screen()->compositor()->windowAt(globalPoint, 5); + QWindow *window2 = nullptr; + if (resizeMode == QWasmWindow::ResizeNone) + window2 = screen()->compositor()->windowAt(globalPoint, 5); + if (lastWindow && lastWindow->cursor() != Qt::ArrowCursor) { + lastWindow->setCursor(Qt::ArrowCursor); + } if (window2 == nullptr) { window2 = lastWindow; } else { @@ -635,6 +641,10 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven case EMSCRIPTEN_EVENT_MOUSEMOVE: // drag event { buttonEventType = QEvent::MouseMove; + + if (htmlWindow && htmlWindow->isPointOnResizeRegion(globalPoint)) + window2->setCursor(cursorForMode(htmlWindow->resizeModeAtPoint(globalPoint))); + if (!(htmlWindow->m_windowState & Qt::WindowFullScreen) && !(htmlWindow->m_windowState & Qt::WindowMaximized)) { if (resizeMode == QWasmWindow::ResizeNone && draggedWindow) { draggedWindow->setX(draggedWindow->x() + mouseEvent->movementX); @@ -989,4 +999,27 @@ bool QWasmEventTranslator::processKeyboard(int eventType, const EmscriptenKeyboa return accepted; } +QCursor QWasmEventTranslator::cursorForMode(QWasmWindow::ResizeMode m) +{ + switch (m) { + case QWasmWindow::ResizeTopLeft: + case QWasmWindow::ResizeBottomRight: + return Qt::SizeFDiagCursor; + break; + case QWasmWindow::ResizeBottomLeft: + case QWasmWindow::ResizeTopRight: + return Qt::SizeBDiagCursor; + break; + case QWasmWindow::ResizeTop: + case QWasmWindow::ResizeBottom: + return Qt::SizeVerCursor; + break; + case QWasmWindow::ResizeLeft: + case QWasmWindow::ResizeRight: + return Qt::SizeHorCursor; + break; + } + return Qt::ArrowCursor; +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.h b/src/plugins/platforms/wasm/qwasmeventtranslator.h index 84e300b7ea..0be5612ef1 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.h +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.h @@ -37,6 +37,7 @@ #include "qwasmwindow.h" #include <QtGui/qtouchdevice.h> #include <QHash> +#include <QCursor> QT_BEGIN_NAMESPACE @@ -94,6 +95,7 @@ private: Qt::Key m_emDeadKey = Qt::Key_unknown; bool m_emStickyDeadKey = false; + QCursor cursorForMode(QWasmWindow::ResizeMode mode); }; QT_END_NAMESPACE |