Implement support all the new mouse modes

This commit is contained in:
Luis Ángel San Martín 2025-05-04 09:53:53 +02:00
parent d291569e5f
commit 77e3f6ffb1

View File

@ -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)