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;