Qt: Fix mouse cursor handling
Vicki Pfau vi@endrift.com
Wed, 05 Apr 2017 00:22:32 -0700
1 files changed,
6 insertions(+),
14 deletions(-)
jump to
M
src/platform/qt/Window.cpp
→
src/platform/qt/Window.cpp
@@ -680,11 +680,13 @@ m_controller->loadGame(url.toLocalFile());
} void Window::mouseMoveEvent(QMouseEvent* event) { + QPoint pos = event->pos(); + pos = m_screenWidget->mapFrom(this, pos); QSize dimensions = m_controller->screenDimensions(); QSize viewportDimensions = m_display->viewportSize(); QSize screenDimensions = m_screenWidget->size(); - int x = dimensions.width() * (event->x() - (screenDimensions.width() - viewportDimensions.width()) / 2) / viewportDimensions.width(); - int y = dimensions.height() * (event->y() - (screenDimensions.height() - viewportDimensions.height()) / 2) / viewportDimensions.height(); + int x = dimensions.width() * (pos.x() - (screenDimensions.width() - viewportDimensions.width()) / 2) / viewportDimensions.width(); + int y = dimensions.height() * (pos.y() - (screenDimensions.height() - viewportDimensions.height()) / 2) / viewportDimensions.height(); m_controller->cursorLocation(x, y); event->accept(); }@@ -693,12 +695,7 @@ void Window::mousePressEvent(QMouseEvent* event) {
if (event->button() != Qt::LeftButton) { return; } - QSize dimensions = m_controller->screenDimensions(); - QSize viewportDimensions = m_display->viewportSize(); - QSize screenDimensions = m_screenWidget->size(); - int x = dimensions.width() * (event->x() - (screenDimensions.width() - viewportDimensions.width()) / 2) / viewportDimensions.width(); - int y = dimensions.height() * (event->y() - (screenDimensions.height() - viewportDimensions.height()) / 2) / viewportDimensions.height(); - m_controller->cursorLocation(x, y); + mouseMoveEvent(event); m_controller->cursorDown(true); }@@ -706,12 +703,7 @@ void Window::mouseReleaseEvent(QMouseEvent* event) {
if (event->button() != Qt::LeftButton) { return; } - QSize dimensions = m_controller->screenDimensions(); - QSize viewportDimensions = m_display->viewportSize(); - QSize screenDimensions = m_screenWidget->size(); - int x = dimensions.width() * (event->x() - (screenDimensions.width() - viewportDimensions.width()) / 2) / viewportDimensions.width(); - int y = dimensions.height() * (event->y() - (screenDimensions.height() - viewportDimensions.height()) / 2) / viewportDimensions.height(); - m_controller->cursorLocation(x, y); + mouseMoveEvent(event); m_controller->cursorDown(false); }