diff --git a/Source/DasherVR/Private/SDasherWidget.cpp b/Source/DasherVR/Private/SDasherWidget.cpp index cdf2cbe3b20d75e20fa450e4aa25ee4b92777976..0aff028dbae59e5e774dfe875a425f4278ea5bb6 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;