This would be a good solution apart from those cases when you still need to navigate left or right from the said slider, and you cannot set custom rules for navigation in Blueprints.
The issue is actually in the fact that for some reason the first time you press A to select the slider, it is not treated as OnKeyDown. If you have access to the engine code, and put a breakpoint at the beginning of this FReply SSlider::OnKeyDown(const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent) (line 233 of SSlider.cpp located in your \EPIC\UE_5.3\Engine\Source\Runtime\Slate\Private\Widgets\Input\SSlider.cpp), you will see it doesn’t get fired at all. It will, however, get fired if you try pressing anything on the controller while holding A.
What should ideally happen is in the code after this line:
if (FSlateApplication::Get().GetNavigationActionFromKey(InKeyEvent) == EUINavigationAction::Accept && bRequiresControllerLock)
If that results to true, you should be able to manipulate the slider. However, it will not result to true because of this : EUINavigationAction::Accept
I assume that maybe A on the controller is perceived as Accept. But unfortunately, since the OnKeyDown wasn’t triggered by it, and we’re holding it down to keep focus, any other button you press on the controller will result in exiting from that code prematurely.
That code works well with keyboard. If you try to navigate using your keyboard, press Enter once, it will enter into that part of the code, as Enter is treated as ::Accept by default (found it in NavigationConfig.cpp(\EPIC\UE_5.3\Engine\Source\Runtime\Slate\Private\Framework\Application\NavigationConfig.cpp), line 162, in the comments it says: ‘// By default, enter, space, and gamepad accept are all counted as accept’.
Then, you can manipulate the slider with your arrow keys. And after you have finished, press Enter again to exit from the manipulation mode.
Unfortunately, I have no idea how to go about this. Seems the real problem is the OnKeyDown.