From 3f5770f4df9d1ab998b30f529441a07284660f85 Mon Sep 17 00:00:00 2001 From: Sebastian Pape <pape@vr.rwth-aachen.de> Date: Fri, 17 Nov 2023 17:47:27 +0100 Subject: [PATCH] Fixing some input handling --- Source/DasherVR/Private/SDasherWidget.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Source/DasherVR/Private/SDasherWidget.cpp b/Source/DasherVR/Private/SDasherWidget.cpp index cdf2cbe..0aff028 100644 --- a/Source/DasherVR/Private/SDasherWidget.cpp +++ b/Source/DasherVR/Private/SDasherWidget.cpp @@ -38,13 +38,13 @@ FReply SDasherWidget::OnMouseButtonDown(const FGeometry& MyGeometry, const FPoin FMouseState& MouseState = GetMouseState(MouseEvent.GetPointerIndex()); - if(MouseEvent.GetEffectingButton() == EKeys::LeftMouseButton) + if(MouseEvent.GetEffectingButton() == EKeys::LeftMouseButton && !MouseState.PrimaryButtonPressed) { DasherMainInterface->KeyDown(FDateTime::Now().GetSecond() + FDateTime::Now().GetMillisecond(), Dasher::Keys::Primary_Input); MouseState.PrimaryButtonPressed = true; MouseListeners.ExecuteIfBound(MouseEvent.GetPointerIndex(), MouseState.PrimaryButtonPressed); } - else if(MouseEvent.GetEffectingButton() == EKeys::RightMouseButton) + else if(MouseEvent.GetEffectingButton() == EKeys::RightMouseButton && !MouseState.SecondaryButtonPressed) { DasherMainInterface->KeyDown(FDateTime::Now().GetSecond() + FDateTime::Now().GetMillisecond(), Dasher::Keys::Secondary_Input); MouseState.SecondaryButtonPressed = true; @@ -127,9 +127,10 @@ void SDasherWidget::OnMouseLeave(const FPointerEvent& MouseEvent) { SWidget::OnMouseLeave(MouseEvent); - if (InputPaused) return; - FMouseState& MouseState = GetMouseState(MouseEvent.GetPointerIndex()); + MouseState.CurrentlyHovering = false; + + if (InputPaused) return; if(MouseState.PrimaryButtonPressed) { @@ -144,8 +145,6 @@ void SDasherWidget::OnMouseLeave(const FPointerEvent& MouseEvent) BoostListeners.ExecuteIfBound(MouseEvent.GetPointerIndex(), false); MouseState.DisabledDueToMouseLeave = true; } - - MouseState.CurrentlyHovering = false; } FReply SDasherWidget::OnMouseButtonDoubleClick(const FGeometry& InMyGeometry, const FPointerEvent& InMouseEvent) @@ -157,13 +156,13 @@ FReply SDasherWidget::OnMouseButtonUp(const FGeometry& MyGeometry, const FPointe { FMouseState& MouseState = GetMouseState(MouseEvent.GetPointerIndex()); - if(MouseEvent.GetEffectingButton() == EKeys::LeftMouseButton) + if(MouseEvent.GetEffectingButton() == EKeys::LeftMouseButton && MouseState.PrimaryButtonPressed) { DasherMainInterface->KeyUp(FDateTime::Now().GetSecond() + FDateTime::Now().GetMillisecond(), Dasher::Keys::Primary_Input); MouseState.PrimaryButtonPressed = false; MouseListeners.ExecuteIfBound(MouseEvent.GetPointerIndex(), MouseState.PrimaryButtonPressed); } - else if(MouseEvent.GetEffectingButton() == EKeys::RightMouseButton) + else if(MouseEvent.GetEffectingButton() == EKeys::RightMouseButton && MouseState.SecondaryButtonPressed) { DasherMainInterface->KeyUp(FDateTime::Now().GetSecond() + FDateTime::Now().GetMillisecond(), Dasher::Keys::Secondary_Input); MouseState.SecondaryButtonPressed = false; -- GitLab