UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SlateInvalidationRoot.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 "UObject/GCObject.h"
7#include "WidgetProxy.h"
12
19class FWidgetStyle;
20
21namespace UE::Slate::Private
22{
23 struct FSlateInvalidationPaintFastPathContext;
24}
25
26#define UE_SLATE_DEBUGGING_CLEAR_ALL_FAST_PATH_DATA 0
27
52
54{
55 None,
56 Slow,
57 Fast,
58};
59
75
77{
80 friend class FWidgetProxyHandle;
81
82public:
85
86 //~ Begin FGCObject interface
87 SLATECORE_API virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
88 SLATECORE_API virtual FString GetReferencerName() const override;
89 //~ End FGCObject interface
90
100
102 bool NeedsSlowPath() const { return bNeedsSlowPath; }
103
105 FHittestGrid* GetHittestGrid() const { return RootHittestGrid; }
107 FSlateCachedElementData& GetCachedElements() { return *CachedElementData; }
109 const FSlateCachedElementData& GetCachedElements() const { return *CachedElementData; }
111 const SWidget* GetInvalidationRootWidget() const { return InvalidationRootWidget; }
113 FSlateInvalidationRootHandle GetInvalidationRootHandle() const { return InvalidationRootHandle; }
115 const FSlateInvalidationWidgetList& GetFastPathWidgetList() const { return *FastWidgetPathList; }
118
121
122 void OnWidgetDestroyed(const SWidget* Widget);
123
125
126#if WITH_SLATE_DEBUGGING
130
131 struct FPerformanceStat
132 {
133 double WidgetsPreUpdate = 0.0;
134 double WidgetsAttribute = 0.0;
135 double WidgetsPrepass = 0.0;
136 double WidgetsUpdate = 0.0;
138 double InvalidationProcessing = 0.0;
139 };
141#endif
142
143protected:
147
150 int32 GetCachedMaxLayerId() const { return CachedMaxLayerId; }
151
153
155
156 virtual void OnRootInvalidated() { }
157
159
160private:
161 FSlateInvalidationWidgetList& GetFastPathWidgetList() { return *FastWidgetPathList; }
162 void HandleInvalidateAllWidgets(bool bClearResourcesImmediately);
163
164 bool PaintFastPath(const FSlateInvalidationContext& Context);
166 void PaintFastPath_FixupLayerId(UE::Slate::Private::FSlateInvalidationPaintFastPathContext& FastPathContext, const FWidgetProxy& InvalidationWidget, const int32 NewOutgoingLayerId);
167 void PaintFastPath_FixupParentLayerId(UE::Slate::Private::FSlateInvalidationPaintFastPathContext& FastPathContext, const FWidgetProxy& InvalidationWidget, const int32 NewOutgoingLayerId);
168 void PaintFastPath_AddUniqueSortedToFinalUpdateList(const FSlateInvalidationWidgetIndex InvalidationWidgetIndex);
169
171 void InvalidateWidget(FWidgetProxy& Proxy, EInvalidateWidgetReason InvalidateReason);
172
173 void BuildFastPathWidgetList(const TSharedRef<SWidget>& RootWidget);
174 void AdjustWidgetsDesktopGeometry(UE::Slate::FDeprecateVector2DParameter WindowToDesktopTransform);
175
177 void ProcessPreUpdate();
179 void ProcessAttributeUpdate();
181 void ProcessPrepassUpdate();
183 bool ProcessPostUpdate();
184
185private:
188
190 TUniquePtr<FSlateInvalidationWidgetPreHeap> WidgetsNeedingPreUpdate;
191
196 TUniquePtr<FSlateInvalidationWidgetPrepassHeap> WidgetsNeedingPrepassUpdate;
197
202 TUniquePtr<FSlateInvalidationWidgetPostHeap> WidgetsNeedingPostUpdate;
203
206
207 FVector2f CachedViewOffset;
208
209 FSlateCachedElementData* CachedElementData;
210
211 SWidget* InvalidationRootWidget;
212
213 FHittestGrid* RootHittestGrid;
214
215 int32 CachedMaxLayerId;
216
217 FSlateInvalidationRootHandle InvalidationRootHandle;
218
219 bool bNeedsSlowPath;
220 bool bNeedScreenPositionShift;
221 bool bProcessingPreUpdate;
222 bool bProcessingAttributeUpdate;
223 bool bProcessingPrepassUpdate;
224 bool bProcessingPostUpdate;
225 bool bBuildingWidgetList;
226 bool bProcessingChildOrderInvalidation;
227
228#if WITH_SLATE_DEBUGGING
231#endif
232#if UE_SLATE_DEBUGGING_CLEAR_ALL_FAST_PATH_DATA
234#endif
235};
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
return true
Definition ExternalRpcRegistry.cpp:601
EInvalidateWidgetReason
Definition InvalidateWidgetReason.h:14
ESlateInvalidationPaintType
Definition SlateInvalidationRoot.h:54
Definition GCObject.h:128
Definition HittestGrid.h:30
Definition UnrealTemplate.h:321
Definition PaintArgs.h:23
Definition UObjectGlobals.h:2492
Definition SlateInvalidationRoot.h:77
void OnWidgetDestroyed(const SWidget *Widget)
Definition SlateInvalidationRoot.cpp:459
SLATECORE_API void InvalidateRootChildOrder(const SWidget *Investigator=nullptr)
Definition SlateInvalidationRoot.cpp:273
virtual SLATECORE_API FString GetReferencerName() const override
Definition SlateInvalidationRoot.cpp:268
friend class FSlateUpdateFastWidgetPathTask
Definition SlateInvalidationRoot.h:78
FSlateInvalidationRootHandle GetInvalidationRootHandle() const
Definition SlateInvalidationRoot.h:113
bool NeedsSlowPath() const
Definition SlateInvalidationRoot.h:102
virtual SLATECORE_API void AddReferencedObjects(FReferenceCollector &Collector) override
Definition SlateInvalidationRoot.cpp:263
virtual int32 PaintSlowPath(const FSlateInvalidationContext &Context)=0
const FSlateInvalidationWidgetList & GetFastPathWidgetList() const
Definition SlateInvalidationRoot.h:115
SLATECORE_API void InvalidateRootLayout(const SWidget *Investigator=nullptr)
Definition SlateInvalidationRoot.cpp:289
SLATECORE_API bool ProcessInvalidation()
Definition SlateInvalidationRoot.cpp:1287
const SWidget * GetInvalidationRootWidget() const
Definition SlateInvalidationRoot.h:111
SLATECORE_API FSlateInvalidationResult PaintInvalidationRoot(const FSlateInvalidationContext &Context)
Definition SlateInvalidationRoot.cpp:357
SLATECORE_API void Advanced_ResetInvalidation(bool bClearResourcesImmediately)
Definition SlateInvalidationRoot.cpp:1461
void SetInvalidationRootWidget(SWidget &InInvalidationRootWidget)
Definition SlateInvalidationRoot.h:148
friend class FSlateUpdateFastPathAndHitTestGridTask
Definition SlateInvalidationRoot.h:79
SLATECORE_API const TSharedPtr< SWidget > GetFastPathWidgetListRoot() const
Definition SlateInvalidationRoot.cpp:352
SLATECORE_API void SetNeedsSlowPath(bool InNeedsSlowPath)
Definition SlateInvalidationRoot.cpp:1450
const FSlateCachedElementData & GetCachedElements() const
Definition SlateInvalidationRoot.h:109
virtual void OnRootInvalidated()
Definition SlateInvalidationRoot.h:156
int32 GetCachedMaxLayerId() const
Definition SlateInvalidationRoot.h:150
FSlateCachedElementData & GetCachedElements()
Definition SlateInvalidationRoot.h:107
void SetInvalidationRootHittestGrid(FHittestGrid &InHittestGrid)
Definition SlateInvalidationRoot.h:149
virtual SLATECORE_API ~FSlateInvalidationRoot()
Definition SlateInvalidationRoot.cpp:241
virtual TSharedRef< SWidget > GetRootWidget()=0
FHittestGrid * GetHittestGrid() const
Definition SlateInvalidationRoot.h:105
SLATECORE_API FSlateInvalidationRoot()
Definition SlateInvalidationRoot.cpp:208
SLATECORE_API void ClearAllFastPathData(bool bClearResourcesImmediately)
Definition SlateInvalidationRoot.cpp:1407
SLATECORE_API void InvalidateScreenPosition(const SWidget *Investigator=nullptr)
Definition SlateInvalidationRoot.cpp:343
Definition SlateInvalidationWidgetList.h:20
Definition SlateInvalidationWidgetHeap.h:179
Definition SlateInvalidationWidgetHeap.h:26
Definition SlateInvalidationWidgetHeap.h:384
Definition SlateRect.h:26
Definition DrawElements.h:220
Definition WidgetProxy.h:277
Definition WidgetProxy.h:113
Definition WidgetStyle.h:15
Definition SWidget.h:165
Definition Array.h:670
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition DockingUtilsPrivate.h:8
FDeprecateSlateVector2D FDeprecateVector2DResult
Definition SlateVector2.h:469
@ false
Definition radaudio_common.h:23
Definition DrawElements.h:140
Definition SlateInvalidationRoot.h:29
const FWidgetStyle & WidgetStyle
Definition SlateInvalidationRoot.h:45
float LayoutScaleMultiplier
Definition SlateInvalidationRoot.h:47
FSlateWindowElementList * WindowElementList
Definition SlateInvalidationRoot.h:46
FSlateInvalidationContext(FSlateWindowElementList &InWindowElementList, const FWidgetStyle &InWidgetStyle)
Definition SlateInvalidationRoot.h:30
const FPaintArgs * PaintArgs
Definition SlateInvalidationRoot.h:44
bool bAllowFastPathUpdate
Definition SlateInvalidationRoot.h:50
bool bParentEnabled
Definition SlateInvalidationRoot.h:49
UE::Slate::FDeprecateVector2DResult ViewOffset
Definition SlateInvalidationRoot.h:43
FSlateRect CullingRect
Definition SlateInvalidationRoot.h:42
int32 IncomingLayerId
Definition SlateInvalidationRoot.h:48
Definition SlateInvalidationRoot.h:61
bool bRepaintedWidgets
Definition SlateInvalidationRoot.h:73
UE::Slate::FDeprecateVector2DResult ViewOffset
Definition SlateInvalidationRoot.h:69
int32 MaxLayerIdPainted
Definition SlateInvalidationRoot.h:71
FSlateInvalidationResult()
Definition SlateInvalidationRoot.h:62
Definition SlateInvalidationRootHandle.h:10
Definition SlateInvalidationWidgetIndex.h:13
Definition SlateVector2.h:485
Definition SlateInvalidationRoot.cpp:534