UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WidgetPath.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Types/SlateEnums.h"
7#include "Layout/Visibility.h"
9#include "Widgets/SWidget.h"
10#include "Widgets/SWindow.h"
11
16{
21
26};
27
42
51{
52public:
54
56
58
65
68 {
69 return VirtualPointerPositions[Index];
70 }
71
73 SLATECORE_API bool ContainsWidget( const SWidget* WidgetToFind ) const;
74
76
78
85
92
94 SLATECORE_API bool IsValid() const;
95
99 SLATECORE_API FString ToString() const;
100
111 template<typename MatcherType>
113 {
115
117
118 for( int32 WidgetIndex=0; WidgetIndex < Extension.Num(); ++WidgetIndex )
119 {
120 this->Widgets.AddWidget( Extension[WidgetIndex] );
121 }
122
123 return Extension.Num() > 0;
124 }
125
136 template<typename MatcherType>
138 {
139 FArrangedChildren PathResult(VisibilityFilter);
140
141 if (NavigationType == EUINavigation::Next)
142 {
143 SearchForWidgetRecursively( Matcher, FromWidget, PathResult, VisibilityFilter, SearchPurpose);
144 }
145 else
146 {
147 SearchForWidgetRecursively_Reverse( Matcher, FromWidget, PathResult, VisibilityFilter, SearchPurpose);
148 }
149
150
151 // Reverse the list of widgets we found; canonical form is leafmost last.
152 PathResult.Reverse();
153
154 return PathResult;
155 }
156
168
171 {
172 check(IsValid());
173 return Widgets[Widgets.Num() - 1].Widget;
174 }
175
176public:
177
180
183
184private:
186 TArray<TOptional<FVirtualPointerPosition>> VirtualPointerPositions;
187
188private:
189
201 template<typename MatchRuleType>
203
205 template<typename MatchRuleType>
207};
208
213{
214public:
217
220 {
226 };
227
234
241
243 {
245 {
248 };
249 };
250
252 SLATECORE_API bool ContainsWidget(const SWidget* WidgetToFind) const;
253
262
269
277 SLATECORE_API FWidgetPath ToNextFocusedPath(EUINavigation NavigationType, const FNavigationReply& NavigationReply, const FArrangedWidget& RuleWidget) const;
278
281 {
282 check( IsValid() );
283 return Widgets[Widgets.Num()-1];
284 }
285
287 bool IsValid() const { return Widgets.Num() > 0; }
288
291};
292
293#include "Layout/WidgetPath.inl" // IWYU pragma: export
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EUINavigation
Definition SlateEnums.h:99
EWidgetPathSearchPurpose
Definition WidgetPath.h:16
Definition ArrangedChildren.h:15
int32 Num() const
Definition ArrangedChildren.h:138
void AddWidget(EVisibility VisibilityOverride, const FArrangedWidget &InWidgetGeometry)
Definition ArrangedChildren.h:66
const FArrangedWidget & Last() const
Definition ArrangedChildren.h:153
Definition ArrangedWidget.h:18
Definition NavigationReply.h:43
Definition WidgetPath.h:213
SLATECORE_API TSharedRef< FWidgetPath > ToWidgetPathRef(EInterruptedPathHandling::Type InterruptedPathHandling=EInterruptedPathHandling::Truncate, const FPointerEvent *PointerEvent=nullptr, const EVisibility VisibilityFilter=EVisibility::Visible) const
Definition WidgetPath.cpp:261
SLATECORE_API FWidgetPath ToWidgetPath(EInterruptedPathHandling::Type InterruptedPathHandling=EInterruptedPathHandling::Truncate, const FPointerEvent *PointerEvent=nullptr, const EVisibility VisibilityFilter=EVisibility::Visible) const
Definition WidgetPath.cpp:254
SLATECORE_API bool ContainsWidget(const SWidget *WidgetToFind) const
Definition WidgetPath.cpp:420
bool IsValid() const
Definition WidgetPath.h:287
TArray< TWeakPtr< SWidget > > Widgets
Definition WidgetPath.h:289
TWeakPtr< SWidget > GetLastWidget() const
Definition WidgetPath.h:280
TWeakPtr< SWindow > Window
Definition WidgetPath.h:290
SLATECORE_API FWidgetPath ToNextFocusedPath(EUINavigation NavigationType) const
Definition WidgetPath.cpp:436
Definition WidgetPath.h:51
TOptional< FVirtualPointerPosition > GetVirtualPointerPosition(int32 Index) const
Definition WidgetPath.h:67
SLATECORE_API bool ContainsWidget(const SWidget *WidgetToFind) const
Definition WidgetPath.cpp:59
TSharedPtr< SWindow > TopLevelWindow
Definition WidgetPath.h:182
TSharedRef< SWidget > GetLastWidget() const
Definition WidgetPath.h:170
bool ExtendPathTo(const MatcherType &Matcher, EVisibility VisibilityFilter=EVisibility::Visible, EWidgetPathSearchPurpose SearchPurpose=EWidgetPathSearchPurpose::Standard)
Definition WidgetPath.h:112
SLATECORE_API TSharedRef< SWindow > GetWindow() const
Definition WidgetPath.cpp:103
FArrangedChildren GeneratePathToWidget(const MatcherType &Matcher, const FArrangedWidget &FromWidget, EUINavigation NavigationType=EUINavigation::Next, EVisibility VisibilityFilter=EVisibility::Visible, EWidgetPathSearchPurpose SearchPurpose=EWidgetPathSearchPurpose::Standard)
Definition WidgetPath.h:137
SLATECORE_API TOptional< FWidgetAndPointer > FindArrangedWidgetAndCursor(TSharedRef< const SWidget > WidgetToFind) const
Definition WidgetPath.cpp:90
SLATECORE_API FWidgetPath()
Definition WidgetPath.cpp:10
FArrangedChildren Widgets
Definition WidgetPath.h:179
SLATECORE_API FString ToString() const
Definition WidgetPath.cpp:129
SLATECORE_API FWidgetPath GetPathDownTo(TSharedRef< const SWidget > MarkerWidget) const
Definition WidgetPath.cpp:36
SLATECORE_API bool MoveFocus(int32 PathLevel, EUINavigation NavigationType, bool bSearchFromPathWidget=true)
Definition WidgetPath.cpp:160
SLATECORE_API bool IsValid() const
Definition WidgetPath.cpp:123
SLATECORE_API TOptional< FArrangedWidget > FindArrangedWidget(TSharedRef< const SWidget > WidgetToFind) const
Definition WidgetPath.cpp:76
SLATECORE_API TSharedRef< SWindow > GetDeepestWindow() const
Definition WidgetPath.cpp:111
Definition SWidget.h:165
Definition ArrayView.h:139
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition SharedPointer.h:692
Definition SharedPointer.h:153
U16 Index
Definition radfft.cpp:71
Definition Visibility.h:12
static SLATECORE_API const EVisibility Visible
Definition Visibility.h:14
Definition Events.h:695
@ Truncate
Definition WidgetPath.h:223
@ ReturnInvalid
Definition WidgetPath.h:224
Definition WidgetPath.h:243
Result
Definition WidgetPath.h:245
@ Live
Definition WidgetPath.h:246
@ Truncated
Definition WidgetPath.h:247
Definition WidgetPath.h:30
FWidgetMatcher(const TSharedRef< const SWidget > InWidget)
Definition WidgetPath.h:31
bool IsMatch(const TSharedRef< const SWidget > &InWidget) const
Definition WidgetPath.h:35
TSharedRef< const SWidget > WidgetToFind
Definition WidgetPath.h:40
Definition Optional.h:131