From 6af2ba276647c53509a8c1c8a6321de6149aa3fc Mon Sep 17 00:00:00 2001 From: EmiStorrs Date: Wed, 4 Dec 2024 12:46:27 -0500 Subject: [PATCH] Prevent Unfocus if the widget is not focused by the current user --- .../StevesUEHelpers/Private/StevesUI/FocusableButton.cpp | 9 ++++++++- .../Private/StevesUI/FocusableCheckBox.cpp | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Source/StevesUEHelpers/Private/StevesUI/FocusableButton.cpp b/Source/StevesUEHelpers/Private/StevesUI/FocusableButton.cpp index 8bd3945..f327d9d 100644 --- a/Source/StevesUEHelpers/Private/StevesUI/FocusableButton.cpp +++ b/Source/StevesUEHelpers/Private/StevesUI/FocusableButton.cpp @@ -130,7 +130,14 @@ void UFocusableButton::Unfocus() const LocalPlayer->GetControllerId()); if (UserIndex.IsSet()) { - FSlateApplication::Get().ClearUserFocus(UserIndex.GetValue()); + TSharedPtr SafeWidget = GetCachedWidget(); + if (SafeWidget.IsValid()) + { + if (SafeWidget->HasUserFocus(UserIndex.GetValue())) + { + FSlateApplication::Get().ClearUserFocus(UserIndex.GetValue()); + } + } } } } diff --git a/Source/StevesUEHelpers/Private/StevesUI/FocusableCheckBox.cpp b/Source/StevesUEHelpers/Private/StevesUI/FocusableCheckBox.cpp index 1b98fff..da1f6d2 100644 --- a/Source/StevesUEHelpers/Private/StevesUI/FocusableCheckBox.cpp +++ b/Source/StevesUEHelpers/Private/StevesUI/FocusableCheckBox.cpp @@ -116,7 +116,14 @@ void UFocusableCheckBox::Unfocus() const LocalPlayer->GetControllerId()); if (UserIndex.IsSet()) { - FSlateApplication::Get().ClearUserFocus(UserIndex.GetValue()); + TSharedPtr SafeWidget = GetCachedWidget(); + if (SafeWidget.IsValid()) + { + if (SafeWidget->HasUserFocus(UserIndex.GetValue())) + { + FSlateApplication::Get().ClearUserFocus(UserIndex.GetValue()); + } + } } } }