all repos — mgba @ 50ddcda8f053b1b07249dcf3135ff2d41eaa846c

mGBA Game Boy Advance Emulator

Qt: Fix mouse cursor handling
Vicki Pfau vi@endrift.com
Wed, 05 Apr 2017 00:22:32 -0700
commit

50ddcda8f053b1b07249dcf3135ff2d41eaa846c

parent

adaf8d6224ba52d6dbb8210601c52daef7b0b469

1 files changed, 6 insertions(+), 14 deletions(-)

jump to
M src/platform/qt/Window.cppsrc/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); }