1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-22 20:17:46 +00:00

mdlpart: Don't allow mouse movements when disabled

This commit is contained in:
Joshua Goins 2024-02-04 14:54:13 -05:00
parent 6d026cf522
commit f13ead3168

View file

@ -62,7 +62,7 @@ bool VulkanWindow::event(QEvent *e)
part->setFocus(Qt::FocusReason::MouseFocusReason); part->setFocus(Qt::FocusReason::MouseFocusReason);
if (mouseEvent->button() == Qt::MouseButton::LeftButton || mouseEvent->button() == Qt::MouseButton::RightButton) { if (part->isEnabled() && (mouseEvent->button() == Qt::MouseButton::LeftButton || mouseEvent->button() == Qt::MouseButton::RightButton)) {
part->lastX = mouseEvent->position().x(); part->lastX = mouseEvent->position().x();
part->lastY = mouseEvent->position().y(); part->lastY = mouseEvent->position().y();
part->cameraMode = mouseEvent->button() == Qt::MouseButton::LeftButton ? MDLPart::CameraMode::Orbit : MDLPart::CameraMode::Move; part->cameraMode = mouseEvent->button() == Qt::MouseButton::LeftButton ? MDLPart::CameraMode::Orbit : MDLPart::CameraMode::Move;
@ -72,14 +72,16 @@ bool VulkanWindow::event(QEvent *e)
} }
} break; } break;
case QEvent::MouseButtonRelease: { case QEvent::MouseButtonRelease: {
part->cameraMode = MDLPart::CameraMode::None; if (part->isEnabled()) {
part->cameraMode = MDLPart::CameraMode::None;
setKeyboardGrabEnabled(false); setKeyboardGrabEnabled(false);
setCursor({}); setCursor({});
}
} break; } break;
case QEvent::MouseMove: { case QEvent::MouseMove: {
auto mouseEvent = dynamic_cast<QMouseEvent *>(e); auto mouseEvent = dynamic_cast<QMouseEvent *>(e);
if (part->cameraMode != MDLPart::CameraMode::None) { if (part->isEnabled() && part->cameraMode != MDLPart::CameraMode::None) {
const int deltaX = mouseEvent->position().x() - part->lastX; const int deltaX = mouseEvent->position().x() - part->lastX;
const int deltaY = mouseEvent->position().y() - part->lastY; const int deltaY = mouseEvent->position().y() - part->lastY;
@ -104,43 +106,49 @@ bool VulkanWindow::event(QEvent *e)
case QEvent::Wheel: { case QEvent::Wheel: {
auto scrollEvent = dynamic_cast<QWheelEvent *>(e); auto scrollEvent = dynamic_cast<QWheelEvent *>(e);
part->cameraDistance -= (scrollEvent->angleDelta().y() / 120.0f) * 0.1f; // FIXME: why 120? if (part->isEnabled()) {
part->cameraDistance = std::clamp(part->cameraDistance, 1.0f, 4.0f); part->cameraDistance -= (scrollEvent->angleDelta().y() / 120.0f) * 0.1f; // FIXME: why 120?
part->cameraDistance = std::clamp(part->cameraDistance, 1.0f, 4.0f);
}
} break; } break;
case QEvent::KeyPress: { case QEvent::KeyPress: {
auto keyEvent = dynamic_cast<QKeyEvent *>(e); auto keyEvent = dynamic_cast<QKeyEvent *>(e);
switch (keyEvent->key()) { if (part->isEnabled()) {
case Qt::Key_W: switch (keyEvent->key()) {
pressed_keys[0] = true; case Qt::Key_W:
break; pressed_keys[0] = true;
case Qt::Key_A: break;
pressed_keys[1] = true; case Qt::Key_A:
break; pressed_keys[1] = true;
case Qt::Key_S: break;
pressed_keys[2] = true; case Qt::Key_S:
break; pressed_keys[2] = true;
case Qt::Key_D: break;
pressed_keys[3] = true; case Qt::Key_D:
break; pressed_keys[3] = true;
break;
}
} }
} break; } break;
case QEvent::KeyRelease: { case QEvent::KeyRelease: {
auto keyEvent = dynamic_cast<QKeyEvent *>(e); auto keyEvent = dynamic_cast<QKeyEvent *>(e);
switch (keyEvent->key()) { if (part->isEnabled()) {
case Qt::Key_W: switch (keyEvent->key()) {
pressed_keys[0] = false; case Qt::Key_W:
break; pressed_keys[0] = false;
case Qt::Key_A: break;
pressed_keys[1] = false; case Qt::Key_A:
break; pressed_keys[1] = false;
case Qt::Key_S: break;
pressed_keys[2] = false; case Qt::Key_S:
break; pressed_keys[2] = false;
case Qt::Key_D: break;
pressed_keys[3] = false; case Qt::Key_D:
break; pressed_keys[3] = false;
break;
}
} }
} break; } break;
default: default: