summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@gmail.com>2020-07-07 11:15:17 +1000
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-11-23 01:26:33 +0000
commit7d3aab065ac5d5e087e24d90069fa5693efce463 (patch)
treee08557ae61fd2d2d1f9bbb77bd1a0c3a2d6457e4
parentb00fc4676127cd28d3fb2a14874d363a19ba1475 (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.cpp35
-rw-r--r--src/plugins/platforms/wasm/qwasmeventtranslator.h2
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