UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SlateInvalidationWidgetList.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
12#include "Widgets/SNullWidget.h"
13#include "Widgets/SWidget.h"
14
15#define UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK UE_BUILD_DEBUG
16#define UE_SLATE_WITH_INVALIDATIONWIDGETLIST_CHILDORDERCHECK UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
17
18
20{
22public:
24private:
25 using IndexType = FSlateInvalidationWidgetIndex::IndexType;
28
29
30public:
33 {
34 private:
39
40 public:
41 FIndexRange() = default;
43 : InclusiveMin(InFrom), InclusiveMax(InEnd)
44 , OrderMin(Self, InFrom), OrderMax(Self, InEnd)
45 {
46#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK
47 check(OrderMin <= OrderMax);
48#endif
49 }
51 {
52 return OrderMin <= Other && Other <= OrderMax;
53 }
54 [[nodiscard]] bool IsValid() const { return InclusiveMin != FSlateInvalidationWidgetIndex::Invalid; }
55
60
61 [[nodiscard]] bool operator==(const FIndexRange& Other) const { return Other.InclusiveMin == InclusiveMin && Other.InclusiveMax == InclusiveMax; }
62 };
63
64public:
67 {
75
81
87#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_DEBUGGING
89 bool bAssignedWidgetIndex = true;
90#endif
91 };
93
95 void BuildWidgetList(const TSharedRef<SWidget>& Root);
96
98 TWeakPtr<SWidget> GetRoot() { return Root; };
100 const TWeakPtr<SWidget> GetRoot() const { return Root; };
101
104 {
115 {
116 FReSortOperation(const FIndexRange& InRange) : Range(InRange) {}
117 [[nodiscard]] const FIndexRange& GetRange() const { return Range; }
118 private:
119 const FIndexRange& Range;
120 };
121
123 virtual void PreChildRemove(const FIndexRange& Range) {}
125 virtual void ProxiesReIndexed(const FReIndexOperation& Operation) {}
127 virtual void ProxiesPreResort(const FReSortOperation& Operation) {}
129 virtual void ProxiesPostResort() {}
130#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_CHILDORDERCHECK
132 virtual void ProxiesBuilt(const FIndexRange& Range) {}
133#endif
134 };
135
141 bool ProcessChildOrderInvalidation(FSlateInvalidationWidgetIndex WidgetIndex, IProcessChildOrderInvalidationCallback& Callback);
142
143
146
149
151 template<typename Predicate>
152 void ForEachWidget(Predicate Pred)
153 {
154 int32 ArrayIndex = FirstArrayIndex;
155 while (ArrayIndex != INDEX_NONE)
156 {
157 ElementListType& ElementList = Data[ArrayIndex].ElementList;
158 const int32 ElementNum = ElementList.Num();
159 for (int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex < ElementNum; ++ElementIndex)
160 {
161 if (SWidget* Widget = ElementList[ElementIndex].GetWidget())
162 {
163 Pred(*Widget);
164 }
165 }
166
167 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
168 }
169 }
170
172 template<typename Predicate>
173 void ForEachWidget(Predicate Pred) const
174 {
175 int32 ArrayIndex = FirstArrayIndex;
176 while (ArrayIndex != INDEX_NONE)
177 {
178 const ElementListType& ElementList = Data[ArrayIndex].ElementList;
179 const int32 ElementNum = ElementList.Num();
180 for (int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex < ElementNum; ++ElementIndex)
181 {
182 if (const SWidget* Widget = ElementList[ElementIndex].GetWidget())
183 {
184 Pred(*Widget);
185 }
186 }
187
188 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
189 }
190 }
191
193 template<typename Predicate>
195 {
196 int32 ArrayIndex = FirstArrayIndex;
197 while (ArrayIndex != INDEX_NONE)
198 {
199 ElementListType& ElementList = Data[ArrayIndex].ElementList;
200 const int32 ElementNum = ElementList.Num();
201 for (int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex < ElementNum; ++ElementIndex)
202 {
203 Pred(ElementList[ElementIndex]);
204 }
205
206 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
207 }
208 }
209
211 template<typename Predicate>
212 void ForEachInvalidationWidget(Predicate Pred) const
213 {
214 int32 ArrayIndex = FirstArrayIndex;
215 while (ArrayIndex != INDEX_NONE)
216 {
217 const ElementListType& ElementList = Data[ArrayIndex].ElementList;
218 const int32 ElementNum = ElementList.Num();
219 for (int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex < ElementNum; ++ElementIndex)
220 {
221 Pred(ElementList[ElementIndex]);
222 }
223
224 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
225 }
226 }
227
229 template<typename Predicate>
231 {
236 {
237 return;
238 }
239
242 {
243 const bool bSameWidgetArrayIndex = BeginWidgetIndex.ArrayIndex == EndWidgetIndex.ArrayIndex;
244 int32 ArrayIndex = BeginWidgetIndex.ArrayIndex;
245 {
246 ElementListType& ElementList = Data[ArrayIndex].ElementList;
247 const int32 ElementNum = bSameWidgetArrayIndex ? EndWidgetIndex.ElementIndex + 1 : ElementList.Num();
248 for (int32 ElementIndex = BeginWidgetIndex.ElementIndex; ElementIndex < ElementNum; ++ElementIndex)
249 {
250 Pred(ElementList[ElementIndex]);
251 }
252
253 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
254 }
255
257 {
258 while (ArrayIndex != EndWidgetIndex.ArrayIndex)
259 {
260 ElementListType& ElementList = Data[ArrayIndex].ElementList;
261 const int32 ElementNum = ElementList.Num();
262 for (int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex < ElementNum; ++ElementIndex)
263 {
264 Pred(ElementList[ElementIndex]);
265 }
266
267 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
268 }
269
270 {
271 check(ArrayIndex == EndWidgetIndex.ArrayIndex);
272 ElementListType& ElementList = Data[ArrayIndex].ElementList;
273 const int32 ElementNum = EndWidgetIndex.ElementIndex + 1;
274 for (int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex < ElementNum; ++ElementIndex)
275 {
276 Pred(ElementList[ElementIndex]);
277 }
278 }
279 }
280 }
281 }
282
285 {
286 private:
287 const FSlateInvalidationWidgetList& WidgetList;
288 FSlateInvalidationWidgetIndex CurrentWidgetIndex;
289 FSlateInvalidationWidgetSortOrder CurrentWidgetSortOrder;
290 int32 AttributeIndex;
291
292 FSlateInvalidationWidgetIndex MoveToWidgetIndexOnNextAdvance;
294 bool bNeedsWidgetFixUp;
295
296 public:
301
302 //~ Handle operation
303 UE_DEPRECATED(5.4, "PreChildRemove is deprecated. It was unused.")
304 void PreChildRemove(const FIndexRange& Range);
305 UE_DEPRECATED(5.4, "ReIndexed is deprecated. It was unused.")
306 void ReIndexed(const IProcessChildOrderInvalidationCallback::FReIndexOperation& Operation);
307 UE_DEPRECATED(5.4, "PostResort is deprecated. It was unused.")
308 void PostResort();
309 UE_DEPRECATED(5.4, "ProxiesBuilt is deprecated. It was unused.")
310 void ProxiesBuilt(const FIndexRange& Range);
311 UE_DEPRECATED(5.4, "FixCurrentWidgetIndex is deprecated. It was unused.")
314
316 FSlateInvalidationWidgetIndex GetCurrentIndex() const { return CurrentWidgetIndex; }
317
319 FSlateInvalidationWidgetSortOrder GetCurrentSortOrder() const { return CurrentWidgetSortOrder; }
320
322 void Advance();
323
326
328 void AdvanceToNextParent();
329
331 [[nodiscard]] bool IsValid() const { return CurrentWidgetIndex != FSlateInvalidationWidgetIndex::Invalid; }
332
333 private:
334 void AdvanceArrayIndex(int32 ArrayIndex);
335 void Clear();
336 };
337
342
343public:
346 {
347 private:
348 const FSlateInvalidationWidgetList& WidgetList;
349 FSlateInvalidationWidgetIndex CurrentWidgetIndex;
350 int32 AttributeIndex;
351 bool bSkipCollapsed;
352
353 public:
355
357 FSlateInvalidationWidgetIndex GetCurrentIndex() const { return CurrentWidgetIndex; }
358
360 void Advance();
361
363 [[nodiscard]] bool IsValid() const { return CurrentWidgetIndex != FSlateInvalidationWidgetIndex::Invalid; }
364
365 private:
366 void Internal_Advance();
367 void SkipToNextExpend();
369 void AdvanceArray(int32 ArrayIndex);
370 };
371
373 {
374 return FWidgetVolatileUpdateIterator(*this, bSkipCollapsed);
375 }
376
377
378public:
381 {
382#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK
384#endif
385 return Data[Index.ArrayIndex].ElementList[Index.ElementIndex];
386 }
387
390 {
391#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK
393#endif
394 return Data[Index.ArrayIndex].ElementList[Index.ElementIndex];
395 }
396
399 {
400 if (Data.IsValidIndex(Index.ArrayIndex))
401 {
402 return Index.ElementIndex >= Data[Index.ArrayIndex].StartIndex && Index.ElementIndex < Data[Index.ArrayIndex].ElementList.Num();
403 }
404 return false;
405 }
406
408 [[nodiscard]] bool IsEmpty() const
409 {
410 return FirstArrayIndex == INDEX_NONE || Data[FirstArrayIndex].ElementList.Num() == 0;
411 }
412
415 {
416 return FirstArrayIndex == INDEX_NONE
418 : FSlateInvalidationWidgetIndex{ (IndexType)FirstArrayIndex, Data[FirstArrayIndex].StartIndex };
419 }
420
423 {
424 return LastArrayIndex == INDEX_NONE ? FSlateInvalidationWidgetIndex::Invalid : FSlateInvalidationWidgetIndex{ (IndexType)LastArrayIndex, (IndexType)(Data[LastArrayIndex].ElementList.Num() - 1) };
425 }
426
429
432
435
437 void Empty();
438
440 void Reset();
441
442public:
443#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_DEBUGGING
445 FSlateInvalidationWidgetIndex FindWidget(const SWidget& Widget) const;
446
448 void RemoveWidget(const FSlateInvalidationWidgetIndex ToRemove);
450 void RemoveWidget(const SWidget& WidgetToRemove);
451
453 [[nodiscard]] TArray<TSharedPtr<SWidget>> FindChildren(const SWidget& Widget) const;
454
462
464 void LogWidgetsList(bool bOnlyVisible) const;
465
467 bool VerifyWidgetsIndex() const;
468
470 bool VerifyProxiesWidget() const;
471
473 bool VerifySortOrder() const;
474
476 bool VerifyElementIndexList() const;
477#endif
478
479public:
481 {
482 return !Widget.Advanced_IsInvalidationRoot() || IsEmpty();
483 }
485 {
486 return ShouldDoRecursion(Widget.Get());
487 }
488 static bool ShouldBeAdded(const SWidget& Widget)
489 {
490 return &Widget != &(SNullWidget::NullWidget.Get());
491 }
493 {
495 }
497 {
498 return Widget.HasRegisteredSlateAttribute() && Widget.IsAttributesUpdatesEnabled();
499 }
516
517private:
518 template <typename... ArgsType>
519 FSlateInvalidationWidgetIndex Emplace(ArgsType&&... Args)
520 {
521 const IndexType ArrayIndex = AddArrayNodeIfNeeded(true);
522 const IndexType ElementIndex = (IndexType)Data[ArrayIndex].ElementList.Emplace(Forward<ArgsType>(Args)...);
523 return FSlateInvalidationWidgetIndex{ ArrayIndex, ElementIndex };
524 }
525 template <typename... ArgsType>
526 FSlateInvalidationWidgetIndex EmplaceInsertAfter(IndexType AfterArrayIndex, ArgsType&&... Args)
527 {
528 const IndexType ArrayIndex = InsertArrayNodeIfNeeded(AfterArrayIndex, true);
529 const IndexType ElementIndex = (IndexType)Data[ArrayIndex].ElementList.Emplace(Forward<ArgsType>(Args)...);
530 return FSlateInvalidationWidgetIndex{ ArrayIndex, ElementIndex };
531 }
532
533private:
534 struct FCutResult
535 {
536 FCutResult() = default;
537
539 int32 OldElementIndexStart = INDEX_NONE;
540 };
541private:
542 [[nodiscard]] IndexType AddArrayNodeIfNeeded(bool bReserveElementList);
543 [[nodiscard]] IndexType InsertArrayNodeIfNeeded(IndexType AfterArrayIndex, bool bReserveElementList);
544 [[nodiscard]] IndexType InsertDataNodeAfter(IndexType AfterIndex, bool bReserveElementList);
545 void RemoveDataNode(IndexType Index);
546 void RebuildOrderIndex(IndexType StartFrom);
547 void UpdateParentLeafIndex(const InvalidationWidgetType& InvalidationWidget, FSlateInvalidationWidgetIndex OldIndex, FSlateInvalidationWidgetIndex NewIndex);
548 FCutResult CutArray(const FSlateInvalidationWidgetIndex WhereToCut);
549
550private:
552 void Internal_RebuildWidgetListTree(SWidget& Widget, int32 ChildAtIndex);
553 using FFindChildrenElement = TPair<SWidget*, FSlateInvalidationWidgetIndex>;
555 void Internal_RemoveRangeFromSameParent(const FIndexRange Range);
556 FCutResult Internal_CutArray(const FSlateInvalidationWidgetIndex WhereToCut);
557
558private:
559 struct FArrayNode
560 {
561 FArrayNode() = default;
562 int32 PreviousArrayIndex = INDEX_NONE;
563 int32 NextArrayIndex = INDEX_NONE;
564 int32 SortOrder = 0;
565 IndexType StartIndex = 0; // The array may start further in the ElementList as a result of a split.
566 ElementListType ElementList;
567 WidgetListType ElementIndexList_WidgetWithRegisteredSlateAttribute;
568 WidgetListType ElementIndexList_VolatileUpdateWidget;
569
570 void RemoveElementIndexBiggerOrEqualThan(IndexType ElementIndex);
571 void RemoveElementIndexBetweenOrEqualThan(IndexType StartElementIndex, IndexType EndElementIndex);
572 };
573 using ArrayNodeType = TSparseArray<FArrayNode>;
574
576 ArrayNodeType Data;
578 int32 FirstArrayIndex = INDEX_NONE;
579 int32 LastArrayIndex = INDEX_NONE;
580 mutable int32 NumberOfLock = 0;
581 IProcessChildOrderInvalidationCallback* CurrentInvalidationCallback = nullptr;
582 const FArguments WidgetListConfig;
583};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
return Self
Definition CocoaThread.cpp:337
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
EWidgetUpdateFlags
Definition WidgetUpdateFlags.h:9
Definition SlateInvalidationWidgetList.h:20
void ForEachInvalidationWidget(Predicate Pred) const
Definition SlateInvalidationWidgetList.h:212
void Reset()
Definition SlateInvalidationWidgetList.cpp:871
static bool ShouldBeAddedToVolatileUpdateList(const TSharedRef< const SWidget > &Widget)
Definition SlateInvalidationWidgetList.h:512
const InvalidationWidgetType & operator[](const FSlateInvalidationWidgetIndex Index) const
Definition SlateInvalidationWidgetList.h:389
FSlateInvalidationWidgetIndex LastIndex() const
Definition SlateInvalidationWidgetList.h:422
const TWeakPtr< SWidget > GetRoot() const
Definition SlateInvalidationWidgetList.h:100
void ForEachInvalidationWidget(FSlateInvalidationWidgetIndex BellowWidgetIndex, Predicate Pred)
Definition SlateInvalidationWidgetList.h:230
bool ShouldDoRecursion(const TSharedRef< const SWidget > &Widget) const
Definition SlateInvalidationWidgetList.h:484
bool ProcessChildOrderInvalidation(FSlateInvalidationWidgetIndex WidgetIndex, IProcessChildOrderInvalidationCallback &Callback)
Definition SlateInvalidationWidgetList.cpp:559
FSlateInvalidationWidgetIndex FirstIndex() const
Definition SlateInvalidationWidgetList.h:414
FSlateInvalidationWidgetIndex DecrementIndex(FSlateInvalidationWidgetIndex Index) const
Definition SlateInvalidationWidgetList.cpp:820
void ProcessVolatileUpdateInvalidation(InvalidationWidgetType &InvalidationWidget)
Definition SlateInvalidationWidgetList.cpp:742
void ForEachWidget(Predicate Pred) const
Definition SlateInvalidationWidgetList.h:173
FWidgetVolatileUpdateIterator CreateWidgetVolatileUpdateIterator(bool bSkipCollapsed) const
Definition SlateInvalidationWidgetList.h:372
static bool ShouldBeAdded(const TSharedRef< const SWidget > &Widget)
Definition SlateInvalidationWidgetList.h:492
void BuildWidgetList(const TSharedRef< SWidget > &Root)
Definition SlateInvalidationWidgetList.cpp:498
FSlateInvalidationWidgetIndex IncrementIndex(FSlateInvalidationWidgetIndex Index) const
Definition SlateInvalidationWidgetList.cpp:802
static bool HasVolatileUpdateFlags(EWidgetUpdateFlags UpdateFlags)
Definition SlateInvalidationWidgetList.h:504
bool ShouldDoRecursion(const SWidget &Widget) const
Definition SlateInvalidationWidgetList.h:480
TWeakPtr< SWidget > GetRoot()
Definition SlateInvalidationWidgetList.h:98
FSlateInvalidationWidgetIndex FindNextSibling(FSlateInvalidationWidgetIndex WidgetIndex) const
Definition SlateInvalidationWidgetList.cpp:843
InvalidationWidgetType & operator[](const FSlateInvalidationWidgetIndex Index)
Definition SlateInvalidationWidgetList.h:380
FWidgetAttributeIterator CreateWidgetAttributeIterator() const
Definition SlateInvalidationWidgetList.h:338
void ForEachWidget(Predicate Pred)
Definition SlateInvalidationWidgetList.h:152
bool IsValidIndex(const FSlateInvalidationWidgetIndex Index) const
Definition SlateInvalidationWidgetList.h:398
void ForEachInvalidationWidget(Predicate Pred)
Definition SlateInvalidationWidgetList.h:194
static bool ShouldBeAddedToVolatileUpdateList(const SWidget &Widget)
Definition SlateInvalidationWidgetList.h:508
static bool ShouldBeAddedToAttributeList(const TSharedRef< const SWidget > &Widget)
Definition SlateInvalidationWidgetList.h:500
static bool ShouldBeAdded(const SWidget &Widget)
Definition SlateInvalidationWidgetList.h:488
void Empty()
Definition SlateInvalidationWidgetList.cpp:860
bool IsEmpty() const
Definition SlateInvalidationWidgetList.h:408
static bool ShouldBeAddedToAttributeList(const SWidget &Widget)
Definition SlateInvalidationWidgetList.h:496
void ProcessAttributeRegistrationInvalidation(const InvalidationWidgetType &InvalidationWidget)
Definition SlateInvalidationWidgetList.cpp:724
FWidgetProxy InvalidationWidgetType
Definition SlateInvalidationWidgetList.h:23
Definition WidgetProxy.h:113
static SLATECORE_API TSharedRef< class SWidget > NullWidget
Definition SNullWidget.h:22
Definition SWidget.h:165
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition SharedPointer.h:153
ObjectType & Get() const
Definition SharedPointer.h:474
int32 Num() const
Definition SparseArray.h:470
bool IsValidIndex(int32 Index) const
Definition SparseArray.h:481
Definition SparseArray.h:524
Definition SharedPointer.h:1295
UpdateFlags
Definition DetourCrowd.h:208
U16 Index
Definition radfft.cpp:71
Definition SlateInvalidationRootHandle.h:10
Definition SlateInvalidationWidgetIndex.h:13
static const FSlateInvalidationWidgetIndex Invalid
Definition SlateInvalidationWidgetIndex.h:7
Definition SlateInvalidationWidgetList.h:67
int32 SortOrderPaddingBetweenArray
Definition SlateInvalidationWidgetList.h:86
int32 NumberElementsLeftBeforeSplitting
Definition SlateInvalidationWidgetList.h:80
static int32 MaxPreferedElementsNum
Definition SlateInvalidationWidgetList.h:68
static int32 MaxSortOrderPaddingBetweenArray
Definition SlateInvalidationWidgetList.h:69
int32 PreferedElementsNum
Definition SlateInvalidationWidgetList.h:74
Definition SlateInvalidationWidgetList.h:33
FSlateInvalidationWidgetSortOrder GetInclusiveMinWidgetSortOrder() const
Definition SlateInvalidationWidgetList.h:58
FSlateInvalidationWidgetIndex GetInclusiveMinWidgetIndex() const
Definition SlateInvalidationWidgetList.h:56
FIndexRange(const FSlateInvalidationWidgetList &Self, FSlateInvalidationWidgetIndex InFrom, FSlateInvalidationWidgetIndex InEnd)
Definition SlateInvalidationWidgetList.h:42
FSlateInvalidationWidgetIndex GetInclusiveMaxWidgetIndex() const
Definition SlateInvalidationWidgetList.h:57
FSlateInvalidationWidgetSortOrder GetInclusiveMaxWidgetSortOrder() const
Definition SlateInvalidationWidgetList.h:59
bool Include(FSlateInvalidationWidgetSortOrder Other) const
Definition SlateInvalidationWidgetList.h:50
bool operator==(const FIndexRange &Other) const
Definition SlateInvalidationWidgetList.h:61
bool IsValid() const
Definition SlateInvalidationWidgetList.h:54
Definition SlateInvalidationWidgetList.h:285
FWidgetAttributeIterator & operator=(const FWidgetAttributeIterator &)=delete
void ProxiesBuilt(const FIndexRange &Range)
Definition SlateInvalidationWidgetList.cpp:114
void PostResort()
Definition SlateInvalidationWidgetList.cpp:105
void PreChildRemove(const FIndexRange &Range)
Definition SlateInvalidationWidgetList.cpp:76
FWidgetAttributeIterator(const FWidgetAttributeIterator &)=delete
FSlateInvalidationWidgetSortOrder GetCurrentSortOrder() const
Definition SlateInvalidationWidgetList.h:319
FSlateInvalidationWidgetIndex GetCurrentIndex() const
Definition SlateInvalidationWidgetList.h:316
~FWidgetAttributeIterator()
Definition SlateInvalidationWidgetList.cpp:69
void Advance()
Definition SlateInvalidationWidgetList.cpp:174
bool IsValid() const
Definition SlateInvalidationWidgetList.h:331
void FixCurrentWidgetIndex()
Definition SlateInvalidationWidgetList.cpp:122
void AdvanceToNextParent()
Definition SlateInvalidationWidgetList.cpp:213
void ReIndexed(const IProcessChildOrderInvalidationCallback::FReIndexOperation &Operation)
Definition SlateInvalidationWidgetList.cpp:88
void AdvanceToNextSibling()
Definition SlateInvalidationWidgetList.cpp:197
Definition SlateInvalidationWidgetList.h:346
bool IsValid() const
Definition SlateInvalidationWidgetList.h:363
FSlateInvalidationWidgetIndex GetCurrentIndex() const
Definition SlateInvalidationWidgetList.h:357
void Advance()
Definition SlateInvalidationWidgetList.cpp:279
FReIndexOperation(const FIndexRange &InRange, FSlateInvalidationWidgetIndex InReIndexTarget)
Definition SlateInvalidationWidgetList.h:107
FSlateInvalidationWidgetIndex ReIndex(FSlateInvalidationWidgetIndex Index) const
Definition SlateInvalidationWidgetList.cpp:29
const FIndexRange & GetRange() const
Definition SlateInvalidationWidgetList.h:108
const FIndexRange & GetRange() const
Definition SlateInvalidationWidgetList.h:117
FReSortOperation(const FIndexRange &InRange)
Definition SlateInvalidationWidgetList.h:116
virtual void PreChildRemove(const FIndexRange &Range)
Definition SlateInvalidationWidgetList.h:123
virtual void ProxiesReIndexed(const FReIndexOperation &Operation)
Definition SlateInvalidationWidgetList.h:125
virtual void ProxiesPostResort()
Definition SlateInvalidationWidgetList.h:129
virtual void ProxiesPreResort(const FReSortOperation &Operation)
Definition SlateInvalidationWidgetList.h:127
Definition SlateInvalidationWidgetSortOrder.h:17
Definition WidgetProxy.h:35
Definition Tuple.h:652