From 7fb56434ec4e99d558d95d3db6d2eab60b7dc447 Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Thu, 27 Jun 2024 11:46:08 +0100 Subject: [PATCH] Add the option to flush keys on changing input mode on menu stack --- Source/StevesUEHelpers/Private/StevesUI/MenuStack.cpp | 5 +++++ Source/StevesUEHelpers/Public/StevesUI/MenuStack.h | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/Source/StevesUEHelpers/Private/StevesUI/MenuStack.cpp b/Source/StevesUEHelpers/Private/StevesUI/MenuStack.cpp index 3ddec8f..082361f 100644 --- a/Source/StevesUEHelpers/Private/StevesUI/MenuStack.cpp +++ b/Source/StevesUEHelpers/Private/StevesUI/MenuStack.cpp @@ -95,6 +95,11 @@ void UMenuStack::ApplyInputModeChange(EInputModeChange Change) const ApplyInputModeChange(PreviousInputMode); break; } + + if (Change != EInputModeChange::DoNotChange && bFlushOnInputModeChange) + { + PC->FlushPressedKeys(); + } } void UMenuStack::ApplyMousePointerVisibility(EMousePointerVisibilityChange Change) const diff --git a/Source/StevesUEHelpers/Public/StevesUI/MenuStack.h b/Source/StevesUEHelpers/Public/StevesUI/MenuStack.h index a5b5bcf..b9921bc 100644 --- a/Source/StevesUEHelpers/Public/StevesUI/MenuStack.h +++ b/Source/StevesUEHelpers/Public/StevesUI/MenuStack.h @@ -80,6 +80,10 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Behavior") EInputModeChange InputModeSettingOnOpen = EInputModeChange::DoNotChange; + /// When changing input mode, whether to flush pressed keys so we start fresh + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Behavior") + bool bFlushOnInputModeChange = false; + /// How this stack should set the mouse pointer visibility when it opens (default no change) UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Behavior") EMousePointerVisibilityChange MousePointerVisibilityOnOpen = EMousePointerVisibilityChange::DoNotChange;