From 77e3f6ffb1b3a1aac1c5933b7a34e781ba2b815b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sun, 4 May 2025 09:53:53 +0200 Subject: [PATCH] Implement support all the new mouse modes --- YACReader/mouse_handler.cpp | 56 ++++++++++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/YACReader/mouse_handler.cpp b/YACReader/mouse_handler.cpp index e3304d30..8bbcc18e 100644 --- a/YACReader/mouse_handler.cpp +++ b/YACReader/mouse_handler.cpp @@ -34,13 +34,6 @@ void YACReader::MouseHandler::mousePressEvent(QMouseEvent *event) void YACReader::MouseHandler::mouseReleaseEvent(QMouseEvent *event) { - if (event->button() == Qt::LeftButton) { - viewer->drag = false; - viewer->setCursor(Qt::OpenHandCursor); - event->accept(); - return; - } - if (event->button() == Qt::ForwardButton) { viewer->right(); event->accept(); @@ -52,6 +45,55 @@ void YACReader::MouseHandler::mouseReleaseEvent(QMouseEvent *event) event->accept(); return; } + + auto wasDragging = viewer->drag; + + if (event->button() == Qt::LeftButton) { + viewer->drag = false; + viewer->setCursor(Qt::OpenHandCursor); + event->accept(); + } + + auto position = event->position(); + auto dragDistance = QLineF(position, dragOrigin).length(); + + auto mouseMode = Configuration::getConfiguration().getMouseMode(); + switch (mouseMode) { + case Normal: + return; + case LeftRightNavigation: + if (wasDragging && (dragDistance > 25)) { + return; + } + + if (event->button() == Qt::LeftButton) { + viewer->left(); + event->accept(); + return; + } + + if (event->button() == Qt::RightButton) { + viewer->right(); + event->accept(); + return; + } + + break; + case HotAreas: + if (wasDragging && (dragDistance > 25)) { + return; + } + + if (event->button() == Qt::LeftButton) { + if (position.x() < viewer->width() / 2) { + viewer->left(); + } else { + viewer->right(); + } + } + + break; + }; } void YACReader::MouseHandler::mouseMoveEvent(QMouseEvent *event)