summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/vnc
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2019-10-11 16:16:29 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2019-10-11 16:23:19 +0200
commitf4b4c4f79b629498f3cddbbc10df8c1b4d6020d9 (patch)
tree4119707660438ff58bd51f9cbe0f9e2a33f4b806 /src/plugins/platforms/vnc
parent9bd6cec74dbbc5aece55dc0c8808494db29b9963 (diff)
parent93f2f33a49f6c96a4f94f344edf03164ed944d02 (diff)
Merge remote-tracking branch 'origin/wip/qt6' into wip/cmake
Diffstat (limited to 'src/plugins/platforms/vnc')
-rw-r--r--src/plugins/platforms/vnc/qvncclient.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/plugins/platforms/vnc/qvncclient.cpp b/src/plugins/platforms/vnc/qvncclient.cpp
index 9dfe873927..3a373a5e4b 100644
--- a/src/plugins/platforms/vnc/qvncclient.cpp
+++ b/src/plugins/platforms/vnc/qvncclient.cpp
@@ -587,9 +587,18 @@ void QVncClient::frameBufferUpdateRequest()
void QVncClient::pointerEvent()
{
QRfbPointerEvent ev;
+ static int buttonState = Qt::NoButton;
if (ev.read(m_clientSocket)) {
- const QPoint pos = m_server->screen()->geometry().topLeft() + QPoint(ev.x, ev.y);
- QWindowSystemInterface::handleMouseEvent(0, pos, pos, ev.buttons, QGuiApplication::keyboardModifiers());
+ const QPointF pos = m_server->screen()->geometry().topLeft() + QPoint(ev.x, ev.y);
+ int buttonStateChange = buttonState ^ int(ev.buttons);
+ QEvent::Type type = QEvent::MouseMove;
+ if (int(ev.buttons) > buttonState)
+ type = QEvent::MouseButtonPress;
+ else if (int(ev.buttons) < buttonState)
+ type = QEvent::MouseButtonRelease;
+ QWindowSystemInterface::handleMouseEvent(nullptr, pos, pos, ev.buttons, Qt::MouseButton(buttonStateChange),
+ type, QGuiApplication::keyboardModifiers());
+ buttonState = int(ev.buttons);
m_handleMsg = false;
}
}