UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SWidget.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 "Misc/Attribute.h"
7#include "Misc/FrameValue.h"
8#include "Stats/Stats.h"
10#include "Layout/SlateRect.h"
11#include "Layout/Visibility.h"
12#include "Layout/Clipping.h"
13#include "Layout/Geometry.h"
16#include "Layout/Margin.h"
19#include "Input/CursorReply.h"
20#include "Input/Reply.h"
27#include "SlateGlobals.h"
28#include "Types/PaintArgs.h"
30#include "Types/SlateVector2.h"
35#include "WidgetPixelSnapping.h"
36
39class FChildren;
40class FPaintArgs;
42class FSlotBase;
43class FWeakWidgetPath;
44class FWidgetPath;
45class IToolTip;
46class SWidget;
48struct FSlateBrush;
50
57
58#if !UE_BUILD_SHIPPING && !UE_BUILD_TEST
60#endif
61
64
65
67template <typename WidgetType>
69{
71 static constexpr bool SupportsInvalidation() { return false; }
72};
73
74
76{
77 Main,
79};
80
81
86class FPopupLayer : public TSharedFromThis<FPopupLayer>
87{
88public:
94
95 virtual ~FPopupLayer() { }
96
97 virtual TSharedRef<SWidget> GetHost() { return HostWidget; }
98 virtual TSharedRef<SWidget> GetContent() { return PopupContent; }
100
101 virtual void Remove() = 0;
102
103private:
104 TSharedRef<SWidget> HostWidget;
105 TSharedRef<SWidget> PopupContent;
106};
107
108
113template<typename TargetValueType, typename SourceValueType>
114static bool SetWidgetAttribute(SWidget& ThisWidget, TAttribute<TargetValueType>& TargetValue, const TAttribute<SourceValueType>& SourceValue, EInvalidateWidgetReason BaseInvalidationReason);
115
116class IToolTip;
117
164 public TSharedFromThis<SWidget> // Enables 'this->AsShared()'
165{
167
176 template<class WidgetType, typename RequiredArgsPayloadType>
178
189 {
190 using ::SlateAttributePrivate::TSlateMemberAttribute<
192 typename std::conditional<InInvalidationReasonValue == EInvalidateWidgetReason::None, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<InInvalidationReasonValue>>::type,
193 InComparePredicate>::TSlateMemberAttribute;
194 };
195
196 //~ Override for FText that use the TSlateAttributeFTextComparePredicate to compare FText
197 template<>
198 struct TSlateAttribute<FText, EInvalidateWidgetReason::None> : public ::SlateAttributePrivate::TSlateMemberAttribute<FText, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeFTextComparePredicate>
199 {
200 using ::SlateAttributePrivate::TSlateMemberAttribute<FText, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeFTextComparePredicate>::TSlateMemberAttribute;
201 };
202
203 //~ Override for FText that use the TSlateAttributeFTextComparePredicate to compare FText
204 template<EInvalidateWidgetReason InInvalidationReasonValue>
206 FText,
207 typename std::conditional<InInvalidationReasonValue == EInvalidateWidgetReason::None, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<InInvalidationReasonValue>>::type,
208 TSlateAttributeFTextComparePredicate>
209 {
210 using ::SlateAttributePrivate::TSlateMemberAttribute<
211 FText,
212 typename std::conditional<InInvalidationReasonValue == EInvalidateWidgetReason::None, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<InInvalidationReasonValue>>::type,
214 };
215
220 template<typename InObjectType, EInvalidateWidgetReason InInvalidationReasonValue = EInvalidateWidgetReason::None, typename InComparePredicate = TSlateAttributeComparePredicate<>>
222 InObjectType,
223 typename std::conditional<InInvalidationReasonValue == EInvalidateWidgetReason::None, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<InInvalidationReasonValue>>::type,
224 InComparePredicate>
225 {
226 using ::SlateAttributePrivate::TSlateManagedAttribute<
228 typename std::conditional<InInvalidationReasonValue == EInvalidateWidgetReason::None, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<InInvalidationReasonValue>>::type,
230 };
231
232 //~ Override for FText that use the TSlateAttributeFTextComparePredicate to compare FText
233 template<>
234 struct TSlateManagedAttribute<FText, EInvalidateWidgetReason::None> : public ::SlateAttributePrivate::TSlateManagedAttribute<FText, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeFTextComparePredicate>
235 {
236 using ::SlateAttributePrivate::TSlateManagedAttribute<FText, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeFTextComparePredicate>::TSlateManagedAttribute;
237 };
238
239 //~ Override for FText that use the TSlateAttributeFTextComparePredicate to compare FText
240 template<EInvalidateWidgetReason InInvalidationReasonValue>
242 FText,
243 typename std::conditional<InInvalidationReasonValue == EInvalidateWidgetReason::None, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<InInvalidationReasonValue>>::type,
244 TSlateAttributeFTextComparePredicate>
245 {
246 using ::SlateAttributePrivate::TSlateManagedAttribute<
247 FText,
248 typename std::conditional<InInvalidationReasonValue == EInvalidateWidgetReason::None, ::SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<InInvalidationReasonValue>>::type,
250 };
251
253 template<typename InObjectType, EInvalidateWidgetReason InInvalidationReasonValue = EInvalidateWidgetReason::None, typename InComparePredicate = TSlateAttributeComparePredicate<>>
254 struct TSlateAttributeRef : public ::SlateAttributePrivate::TSlateMemberAttributeRef<TSlateAttribute<InObjectType, InInvalidationReasonValue, InComparePredicate>>
255 {
256 using ::SlateAttributePrivate::TSlateMemberAttributeRef<TSlateAttribute<InObjectType, InInvalidationReasonValue, InComparePredicate>>::TSlateMemberAttributeRef;
257 };
258
259 //~ Override for FText that use the TSlateAttributeFTextComparePredicate to compare FText
260 template<>
262 {
263 using ::SlateAttributePrivate::TSlateMemberAttributeRef<TSlateAttribute<FText>>::TSlateMemberAttributeRef;
264 };
265
266 //~ Override for FText that use the TSlateAttributeFTextComparePredicate to compare FText
267 template<EInvalidateWidgetReason InInvalidationReasonValue>
268 struct TSlateAttributeRef<FText, InInvalidationReasonValue> : public ::SlateAttributePrivate::TSlateMemberAttributeRef<TSlateAttribute<FText, InInvalidationReasonValue>>
269 {
270 using ::SlateAttributePrivate::TSlateMemberAttributeRef<TSlateAttribute<FText, InInvalidationReasonValue>>::TSlateMemberAttributeRef;
271 };
272
273public:
274 //
275 // GENERAL EVENTS
276 //
277
293 SLATECORE_API int32 Paint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const;
294
302 SLATECORE_API virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime);
303
304 //
305 // KEY INPUT
306 //
307
316
323
326
335
348
357
366
375
376 //
377 // MOUSE INPUT
378 //
379
388
397
406
415
423
430
438
445
452
461
471
482
497
498 //
499 // DRAG AND DROP (DragDrop)
500 //
501
520
527
536
545
546 //
547 // TOUCH and GESTURES
548 //
549
557
564
571
578
585
592
600
607
619
621
627
632 SLATECORE_API virtual void OnFinishedKeyInput();
633
641
650
651#if WITH_ACCESSIBILITY
653#endif
654
655public:
656 //
657 // LAYOUT
658 //
659
660 bool NeedsPrepass() const { return bNeedsPrepass; }
662 //UE_DEPRECATED(4.20, "SlatePrepass requires a layout scale to be accurate.")
664
670
673
675 bool HasRegisteredSlateAttribute() const { return bHasRegisteredSlateAttribute; }
677 bool IsAttributesUpdatesEnabled() const { return bEnabledAttributesUpdate; }
678
679 const FSlateWidgetPersistentState& GetPersistentState() const { return PersistentState; }
680 const FWidgetProxyHandle GetProxyHandle() const { return FastPathProxyHandle; }
681
684
687
689 virtual bool ValidatePathToChild(SWidget* InChild) { return true; }
690
691 inline bool IsParentValid() const { return ParentWidgetPtr.IsValid(); }
692 inline TSharedPtr<SWidget> GetParentWidget() const { return ParentWidgetPtr.Pin(); }
693
694 inline TSharedPtr<SWidget> Advanced_GetPaintParentWidget() const { return PersistentState.PaintParent.Pin(); }
695
700 SLATECORE_API FSlateRect CalculateCullingAndClippingRules(const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, bool& bClipToBounds, bool& bAlwaysClip, bool& bIntersectClipBounds) const;
701
706
707protected:
708 void SetVolatilePrepass(bool bVolatile) { bVolatile ? AddUpdateFlags(EWidgetUpdateFlags::NeedsVolatilePrepass) : RemoveUpdateFlags(EWidgetUpdateFlags::NeedsVolatilePrepass); }
709
710 virtual bool CustomPrepass(float LayoutScaleMultiplier) { return false; }
711
717
731 virtual FVector2D ComputeDesiredSize(float LayoutScaleMultiplier) const = 0;
732
733
734private:
735 void SetFastPathProxyHandle(const FWidgetProxyHandle& Handle) { FastPathProxyHandle = Handle; }
737 SLATECORE_API void SetFastPathSortOrder(const FSlateInvalidationWidgetSortOrder SortOrder);
738
740 SLATECORE_API void UpdateFastPathWidgetRemoved(FHittestGrid* ParentHittestGrid);
741 SLATECORE_API void UpdateFastPathVolatility(bool bParentVolatile);
742
747 void SetDesiredSize(const FVector2D& InDesiredSize)
748 {
749 DesiredSize = FVector2f(InDesiredSize);
750 bDesiredSizeSet = true;
751 }
752
753#if STATS || ENABLE_STATNAMEDEVENTS
754 SLATECORE_API void CreateStatID() const;
755#endif
756
757 void AddUpdateFlags(EWidgetUpdateFlags FlagsToAdd)
758 {
761 FastPathProxyHandle.UpdateWidgetFlags(this, Previous, UpdateFlags);
762 }
763
764 void RemoveUpdateFlags(EWidgetUpdateFlags FlagsToRemove)
765 {
768 FastPathProxyHandle.UpdateWidgetFlags(this, Previous, UpdateFlags);
769 }
770
771 SLATECORE_API void UpdateWidgetProxy(int32 NewLayerId, FSlateCachedElementsHandle& CacheHandle);
772
773public:
774#if UE_SLATE_TRACE_ENABLED
776 {
778 }
779
781 {
783 }
784#endif // UE_SLATE_TRACE_ENABLED
785
786#if WITH_SLATE_DEBUGGING
788 {
789 return LastPaintFrame;
790 }
792 {
793 return LastPrepassFrame;
794 }
795private:
797 {
799 }
801 {
803 }
804#endif // WITH_SLATE_DEBUGGING
805
806public:
807
808 inline TStatId GetStatID(bool bForDeferredUse = false) const
809 {
810#if STATS
811 // this is done to avoid even registering stats for a disabled group (unless we plan on using it later)
812 if (bForDeferredUse || FThreadStats::IsCollectingData())
813 {
814 if (!StatID.IsValidStat())
815 {
816 CreateStatID();
817 }
818 return StatID;
819 }
820 return TStatId(); // not doing stats at the moment, or ever
821#elif ENABLE_STATNAMEDEVENTS
822 if (!StatID.IsValidStat() && (bForDeferredUse || GCycleStatsShouldEmitNamedEvents))
823 {
824 CreateStatID();
825 }
826 return StatID;
827#else
828 return TStatId(); // not doing stats at the moment, or ever
829#endif
830 }
831
833 SLATECORE_API virtual float GetRelativeLayoutScale(const int32 ChildIndex, float LayoutScaleMultiplier) const;
834
849 SLATECORE_API void ArrangeChildren(const FGeometry& AllottedGeometry, FArrangedChildren& ArrangedChildren, bool bUpdateAttributes = false) const;
850
856 virtual FChildren* GetChildren() = 0;
857
864 virtual FChildren* GetAllChildren() { return GetChildren(); }
865
866#if WITH_SLATE_DEBUGGING
872#endif
873
879 SLATECORE_API virtual bool SupportsKeyboardFocus() const;
880
886 SLATECORE_API virtual bool HasKeyboardFocus() const;
887
894
901
907 SLATECORE_API bool HasUserFocusedDescendants(int32 UserIndex) const;
908
913
918
924 SLATECORE_API bool HasMouseCapture() const;
925
931 SLATECORE_API bool HasMouseCaptureByUser(int32 UserIndex, TOptional<int32> PointerIndex = TOptional<int32>()) const;
932
933public:
936
943 {
944 EnabledStateAttribute.Assign(*this, MoveTemp(InEnabledState));
945 }
946
948 inline bool IsEnabled() const
949 {
950 return EnabledStateAttribute.Get();
951 }
952
954 virtual bool IsInteractable() const
955 {
956 return false;
957 }
958
961
963 SLATECORE_API virtual void OnToolTipClosing();
964
972
975 {
976 return bToolTipForceFieldEnabled;
977 }
978
983 bool IsHovered() const
984 {
985 return HoveredAttribute.Get();
986 }
987
989 SLATECORE_API bool IsDirectlyHovered() const;
990
991protected:
998 {
999 bIsHoveredAttributeSet = InHovered.IsSet();
1000 HoveredAttribute.Assign(*this, MoveTemp(InHovered));
1001 }
1002
1003public:
1004
1009 inline EVisibility GetVisibility() const { return VisibilityAttribute.Get(); }
1010
1013
1014#if WITH_ACCESSIBILITY
1022
1029
1036 SLATECORE_API bool IsAccessible() const;
1037
1045
1052
1061
1069
1076#endif
1077
1079 inline bool IsVolatile() const { return bCachedVolatile; }
1080
1085 inline bool IsVolatileIndirectly() const { return bInheritedVolatility; }
1086
1092 inline void ForceVolatile(bool bForce)
1093 {
1094 if (bForceVolatile != bForce)
1095 {
1096 bForceVolatile = bForce;
1098 }
1099 }
1100
1102
1108
1113 inline void CacheVolatility()
1114 {
1115 bCachedVolatile = bForceVolatile || ComputeVolatility();
1116 }
1117
1122 void MarkPrepassAsDirty() { bNeedsPrepass = true; }
1123
1124protected:
1125
1126#if SLATE_CULL_WIDGETS
1132 SLATECORE_API bool IsChildWidgetCulled(const FSlateRect& MyCullingRect, const FArrangedWidget& ArrangedChild) const;
1133#else
1134 inline bool IsChildWidgetCulled(const FSlateRect&, const FArrangedWidget&) const { return false; }
1135#endif
1136
1137protected:
1138
1139
1145
1150 {
1151 const bool bWasDirectlyVolatile = IsVolatile();
1153 return bWasDirectlyVolatile != IsVolatile();
1154 }
1155public:
1156
1158 inline float GetRenderOpacity() const
1159 {
1160 return RenderOpacity;
1161 }
1162
1172
1173 inline void SetTag(FName InTag)
1174 {
1175 Tag = InTag;
1176 }
1177
1180 {
1181 return RenderTransformAttribute.Get();
1182 }
1183
1185 {
1187 {
1188 return RenderTransformAttribute.Get();
1189 }
1190 else
1191 {
1192 // If we're going right to left, flip the X translation on render transforms.
1193 TOptional<FSlateRenderTransform> Transform = RenderTransformAttribute.Get();
1194 if (Transform.IsSet())
1195 {
1196 FVector2D Translation = Transform.GetValue().GetTranslation();
1197 Transform.GetValue().SetTranslation(FVector2D(-Translation.X, Translation.Y));
1198 }
1199 return Transform;
1200 }
1201 }
1202
1204 {
1205 FVector2f TransformPivot = UE::Slate::CastToVector2f(RenderTransformPivotAttribute.Get());
1207 {
1208 return TransformPivot;
1209 }
1210 else
1211 {
1212 // If we're going right to left, flip the X's pivot mirrored about 0.5.
1213 TransformPivot.X = 0.5f + (0.5f - TransformPivot.X);
1214 return TransformPivot;
1215 }
1216 }
1217
1220 {
1221 RenderTransformAttribute.Assign(*this, MoveTemp(InTransform));
1222 }
1223
1226 {
1227 FVector2f TransformPivot = UE::Slate::CastToVector2f(RenderTransformPivotAttribute.Get());
1228 return TransformPivot;
1229 }
1230
1233 {
1234 RenderTransformPivotAttribute.Assign(*this, MoveTemp(InTransformPivot));
1235 }
1236
1241
1244 {
1245 return Clipping;
1246 }
1247
1252
1255 {
1256 return PixelSnappingMethod;
1257 }
1258
1264 {
1266 {
1268 // @todo - Fast path should this be Paint?
1270 }
1271 }
1272
1275 {
1277 }
1278
1284 {
1285 if (FlowDirectionPreference != InFlowDirectionPreference)
1286 {
1287 FlowDirectionPreference = InFlowDirectionPreference;
1289 }
1290 }
1291
1294 {
1295 return FlowDirectionPreference;
1296 }
1297
1298protected:
1314
1315public:
1317 SLATECORE_API void SetToolTipText(const TAttribute<FText>& ToolTipText);
1318
1321
1324
1327
1328protected:
1329
1332
1335
1336public:
1341 template<typename MetaDataType>
1343 {
1344#if !UE_BUILD_SHIPPING && !UE_BUILD_TEST
1346#endif
1347 for (const auto& MetaDataEntry : MetaData)
1348 {
1349 if (MetaDataEntry->IsOfType<MetaDataType>())
1350 {
1352 }
1353 }
1354 return TSharedPtr<MetaDataType>();
1355 }
1356
1361 template<typename MetaDataType>
1363 {
1364#if !UE_BUILD_SHIPPING && !UE_BUILD_TEST
1366#endif
1368 for (const auto& MetaDataEntry : MetaData)
1369 {
1370 if (MetaDataEntry->IsOfType<MetaDataType>())
1371 {
1373 }
1374 }
1375 return FoundMetaData;
1376 }
1377
1382 template<typename MetaDataType>
1384 {
1385 AddMetadataInternal(AddMe);
1386 }
1387
1392 template<typename MetaDataType>
1394 {
1395 int32 Index = MetaData.Find(RemoveMe);
1396 if (Index == INDEX_NONE)
1397 {
1398 return 0;
1399 }
1400
1401 checkf(Index != 0 || !HasRegisteredSlateAttribute(), TEXT("The first slot is reserved for SlateAttribute"));
1402 MetaData.RemoveAtSwap(Index, 1);
1403 return 1;
1404 }
1405
1406private:
1407
1408 SLATECORE_API void AddMetadataInternal(const TSharedRef<ISlateMetaData>& AddMe);
1409
1410 template<typename MetaDataType>
1411 int32 RemoveAllMetaData()
1412 {
1413 int32 NumBefore = MetaData.Num();
1414 for (int32 Index = NumBefore - 1; Index >= 0; --Index)
1415 {
1416 const auto& MetaDataEntry = MetaData[Index];
1417 if (MetaDataEntry->IsOfType<MetaDataType>())
1418 {
1419 checkf(Index != 0 || !HasRegisteredSlateAttribute(), TEXT("The first slot is reserved for SlateAttribute"));
1420 MetaData.RemoveAtSwap(Index);
1421 }
1422 }
1423 return NumBefore - MetaData.Num();
1424 }
1425
1426 template<typename MetaDataType>
1427 bool RemoveMetaData()
1428 {
1429 for (int32 Index = MetaData.Num() - 1; Index >= 0; --Index)
1430 {
1431 const auto& MetaDataEntry = MetaData[Index];
1432 if (MetaDataEntry->IsOfType<MetaDataType>())
1433 {
1434 checkf(Index != 0 || !HasRegisteredSlateAttribute(), TEXT("The first slot is reserved for SlateAttribute"));
1435 MetaData.RemoveAtSwap(Index);
1436 return true;
1437 }
1438 }
1439 return false;
1440 }
1441
1442public:
1443
1446
1449
1452
1455
1458
1461
1462public:
1463
1464 // Widget Inspector and debugging methods
1465
1467 SLATECORE_API virtual FString ToString() const;
1468
1470 SLATECORE_API FString GetTypeAsString() const;
1471
1473 SLATECORE_API FName GetType() const;
1474
1476 SLATECORE_API virtual FString GetReadableLocation() const;
1477
1480
1482 SLATECORE_API virtual FName GetTag() const;
1483
1484#if STATS
1485 size_t GetAllocSize() const { return AllocSize; }
1486#endif
1487
1488#if UE_SLATE_WITH_WIDGET_UNIQUE_IDENTIFIER
1490 uint64 GetId() const { return UniqueIdentifier; }
1491#endif
1492
1495
1498
1499 //UE_DEPRECATED(4.23, "GetCachedGeometry has been deprecated, use GetTickSpaceGeometry instead")
1501
1512
1518
1521
1523 virtual bool Advanced_IsWindow() const { return false; }
1524 virtual bool Advanced_IsInvalidationRoot() const { return false; }
1525 virtual const FSlateInvalidationRoot* Advanced_AsInvalidationRoot() const { return nullptr; }
1526
1527
1528#if UE_SLATE_WITH_DYNAMIC_INVALIDATION
1529
1531 SLATECORE_API bool SupportsInvalidation() const;
1532
1537 SLATECORE_API virtual bool SupportsInvalidationRecursive(bool bUseCachedValue = true) const;
1538private:
1541;
1543 mutable bool CachedSupportsInvalidationRecursive = false;
1544#endif
1545
1546protected:
1555
1558
1560 bool IsConstructed() const { return bIsDeclarativeSyntaxConstructionCompleted; }
1561
1572
1581
1590
1593
1596
1604 {
1605 // This widget should be enabled if its parent is enabled and it is enabled
1606 return InParentEnabled && IsEnabled();
1607 }
1608
1610 SLATECORE_API virtual const FSlateBrush* GetFocusBrush() const;
1611
1616 virtual bool ComputeVolatility() const { return false; }
1617
1624 {
1625 return Widget->VisibilityAttribute.ToAttribute(Widget.Get());
1626 }
1627
1632 SLATECORE_API virtual void OnClippingChanged();
1633
1634private:
1635
1650 virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const = 0;
1651
1659 virtual void OnArrangeChildren(const FGeometry& AllottedGeometry, FArrangedChildren& ArrangedChildren) const = 0;
1660
1661 SLATECORE_API void Prepass_Internal(float LayoutScaleMultiplier);
1662
1663protected:
1665 {
1666 return bPrepassLayoutScaleMultiplierSet ? PrepassLayoutScaleMultiplierValue : 1.0f;
1667 }
1668
1670
1671public:
1696
1701
1703 bool HasActiveTimers() const
1704 {
1705 return bHasActiveTimers;
1706 }
1707
1708private:
1709
1711 SLATECORE_API void ExecuteActiveTimers(double CurrentTime, float DeltaTime);
1712
1713protected:
1718 template<typename TargetValueType, typename SourceValueType>
1720 {
1721 return SetWidgetAttribute(*this, TargetValue, SourceValue, BaseInvalidationReason);
1722 }
1723
1734
1735protected:
1737 SLATECORE_API virtual ~SWidget();
1738
1739private:
1741 mutable FWidgetProxyHandle FastPathProxyHandle;
1742
1743protected:
1746
1752
1760
1761private:
1766 uint8 bToolTipForceFieldEnabled : 1;
1767
1769 uint8 bForceVolatile : 1;
1770
1772 uint8 bCachedVolatile : 1;
1773
1775 uint8 bInheritedVolatility : 1;
1776
1778 uint8 bNeedsPrepass : 1;
1779
1781 uint8 bHasRegisteredSlateAttribute : 1;
1782
1784 uint8 bEnabledAttributesUpdate : 1;
1785
1787 uint8 bIsDeclarativeSyntaxConstructionCompleted : 1;
1788
1790 uint8 bIsHoveredAttributeSet : 1;
1791
1793 uint8 bHasActiveTimers : 1;
1794
1796 uint8 bDesiredSizeSet : 1;
1797
1799 uint8 bPrepassLayoutScaleMultiplierSet : 1;
1800
1801#if UE_SLATE_WITH_DYNAMIC_INVALIDATION
1802 template<class WidgetType, typename RequiredArgsPayloadType>
1803 friend struct TSlateDecl;
1804
1805 // We need to keep this information for each widget as not all widgets have a class to store this information
1806 uint8 bSupportsInvalidation : 1 = false;
1807#endif
1808
1809protected:
1811
1813
1816
1817#if WITH_ACCESSIBILITY
1819 uint8 bCanChildrenBeAccessible : 1;
1820 EAccessibleBehavior AccessibleBehavior;
1821 EAccessibleBehavior AccessibleSummaryBehavior;
1822#endif
1823
1828
1835
1836private:
1838 EFlowDirectionPreference FlowDirectionPreference;
1839
1842
1844 TSlateAttribute<EVisibility> VisibilityAttribute;
1845
1847 TSlateAttribute<bool> EnabledStateAttribute;
1848
1850 TSlateAttribute<bool> HoveredAttribute;
1851
1852 //~ See PrepassLayoutScaleMultiplier
1853 float PrepassLayoutScaleMultiplierValue;
1854
1855 mutable FSlateWidgetPersistentState PersistentState;
1856
1858 FVector2f DesiredSize;
1859
1861 TSlateAttribute<FVector2D> RenderTransformPivotAttribute;
1862
1864 TSlateAttribute<TOptional<FSlateRenderTransform>> RenderTransformAttribute;
1865
1866protected:
1874
1877
1878private:
1881
1883 TWeakPtr<SWidget> ParentWidgetPtr;
1884
1886 FName Tag;
1887
1889 FName TypeOfWidget;
1890
1891protected:
1892#if WITH_EDITORONLY_DATA
1893 UE_DEPRECATED(5.5, "Direct access to PrepassLayoutScaleMultiplier is deprecated. Use the GetPrepassLayoutScaleMultiplier. The scale multitplier can only be set in the prepass.")
1895#endif
1896
1897private:
1898#if !UE_BUILD_SHIPPING
1900 FName CreatedInLocation;
1901#endif
1902
1903#if WITH_SLATE_DEBUGGING
1909 uint8 Debug_DestroyedTag = 0xDC;
1910#endif // WITH_SLATE_DEBUGGING
1911
1912#if UE_SLATE_TRACE_ENABLED
1918 mutable uint8 Debug_LastTraceInfoSent = 0;
1919#endif // UE_SLATE_TRACE_ENABLED
1920
1921#if UE_SLATE_WITH_WIDGET_UNIQUE_IDENTIFIER
1924#endif
1925
1926#if STATS
1927 size_t AllocSize;
1928#endif
1929
1930#if STATS || ENABLE_STATNAMEDEVENTS
1932 mutable TStatId StatID;
1933#endif
1934
1935#if ENABLE_STATNAMEDEVENTS
1937#endif
1938};
1939
1940//=================================================================
1941// FGeometry Arranged Widget Inlined Functions
1942//=================================================================
1943
1945{
1946 // If there is no render transform set, use the simpler MakeChild call that doesn't bother concatenating the render transforms.
1947 // This saves a significant amount of overhead since every widget does this, and most children don't have a render transform.
1948 const TOptional<FSlateRenderTransform> RenderTransform = ChildWidget->GetRenderTransformWithRespectToFlowDirection();
1949 if (RenderTransform.IsSet() )
1950 {
1951 const FVector2f RenderTransformPivot = UE::Slate::CastToVector2f(ChildWidget->GetRenderTransformPivotWithRespectToFlowDirection());
1952 return FArrangedWidget(ChildWidget, MakeChild(InLocalSize, LayoutTransform, RenderTransform.GetValue(), RenderTransformPivot));
1953 }
1954 else
1955 {
1957 }
1958}
1959
1961{
1962 return MakeChild(ChildWidget, FVector2f(LayoutGeometry.GetSizeInLocalSpace()), LayoutGeometry.GetLocalToParentTransform());
1963}
1964
1966{
1967 // Since ChildOffset is given as a LocalSpaceOffset, we MUST convert this offset into the space of the parent to construct a valid layout transform.
1968 // The extra TransformPoint below does this by converting the local offset to an offset in parent space.
1970}
1971
1972template<typename TargetValueType, typename SourceValueType>
1974{
1975 if (!TargetValue.IdenticalTo(SourceValue))
1976 {
1977 const bool bWasBound = TargetValue.IsBound();
1978 const bool bBoundnessChanged = bWasBound != SourceValue.IsBound();
1979 TargetValue = SourceValue;
1980
1983 {
1985 }
1986
1987 ThisWidget.Invalidate(InvalidateReason);
1988 return true;
1989 }
1990
1991 return false;
1992}
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define LIKELY(x)
Definition CityHash.cpp:107
EWidgetClipping
Definition Clipping.h:20
int32 GCycleStatsShouldEmitNamedEvents
Definition CoreGlobals.cpp:462
uint32 GFrameNumber
Definition CoreGlobals.cpp:425
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
#define SCOPE_CYCLE_COUNTER(Stat)
Definition Stats.h:650
#define DECLARE_DWORD_COUNTER_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:682
#define DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:684
#define DECLARE_MEMORY_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:687
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
EFocusCause
Definition Events.h:25
EFlowDirection GSlateFlowDirection
Definition FlowDirection.cpp:11
EFlowDirectionPreference
Definition FlowDirection.h:30
EFlowDirection
Definition FlowDirection.h:17
EAccessibleBehavior
Definition GenericAccessibleInterfaces.h:22
EInvalidateWidgetReason
Definition InvalidateWidgetReason.h:14
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
UE::Math::TVector2< double > FVector2D
Definition MathFwd.h:48
EAccessibleType
Definition SWidget.h:76
#define SLATE_DECLARE_WIDGET_API(WidgetType, ParentType, ModuleApiDefine)
Definition SlateControlledConstruction.h:22
WIDECHAR PROFILER_CHAR
Definition StatsCommon.h:24
PositionType TransformPoint(const TransformType &Transform, const PositionType &Point)
Definition TransformCalculus.h:358
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
EWidgetPixelSnapping
Definition WidgetPixelSnapping.h:15
EWidgetUpdateFlags
Definition WidgetUpdateFlags.h:9
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ActiveTimerHandle.h:12
Definition ArrangedChildren.h:15
Definition ArrangedWidget.h:18
Definition ChildrenBase.h:27
Definition CursorReply.h:16
Definition DragAndDrop.h:141
Definition HittestGrid.h:30
Definition LayoutGeometry.h:11
static SLATECORE_API EFlowDirection GetLocalizedLayoutDirection()
Definition FlowDirection.cpp:29
Definition NameTypes.h:617
Definition NavigationReply.h:43
Definition PaintArgs.h:23
Definition SWidget.h:87
virtual void Remove()=0
virtual TSharedRef< SWidget > GetHost()
Definition SWidget.h:97
FPopupLayer(const TSharedRef< SWidget > &InitHostWidget, const TSharedRef< SWidget > &InitPopupContent)
Definition SWidget.h:89
virtual TSharedRef< SWidget > GetContent()
Definition SWidget.h:98
virtual FSlateRect GetAbsoluteClientRect()=0
virtual ~FPopupLayer()
Definition SWidget.h:95
Definition PopupMethodReply.h:24
Definition Reply.h:24
Definition SlateAttributeMetaData.h:18
Definition SlateControlledConstruction.h:85
Definition SlateInvalidationRoot.h:77
Definition SlateInvalidationWidgetList.h:20
Definition SlateLayoutTransform.h:20
Definition SlateRect.h:26
Definition DrawElements.h:220
Definition SlotBase.h:14
Definition Text.h:385
Definition WidgetPath.h:213
Definition WidgetPath.h:51
Definition WidgetProxy.h:277
Definition WidgetProxy.h:113
Definition WidgetStyle.h:15
Definition IToolTip.h:12
Definition SWidget.h:165
virtual SLATECORE_API TOptional< EMouseCursor::Type > GetCursor() const
Definition SWidget.cpp:1328
EWidgetClipping Clipping
Definition SWidget.h:1827
bool IsVolatile() const
Definition SWidget.h:1079
SLATECORE_API void FindChildGeometries_Helper(const FGeometry &MyGeometry, const TSet< TSharedRef< SWidget > > &WidgetsToFind, TMap< TSharedRef< SWidget >, FArrangedWidget > &OutResult) const
Definition SWidget.cpp:1015
virtual const FSlateInvalidationRoot * Advanced_AsInvalidationRoot() const
Definition SWidget.h:1525
virtual SLATECORE_API TSharedPtr< FPopupLayer > OnVisualizePopup(const TSharedRef< SWidget > &PopupContent)
Definition SWidget.cpp:556
virtual SLATECORE_API void OnFocusChanging(const FWeakWidgetPath &PreviousFocusPath, const FWidgetPath &NewWidgetPath, const FFocusEvent &InFocusEvent)
Definition SWidget.cpp:398
void SetRenderTransformPivot(TAttribute< FVector2D > InTransformPivot)
Definition SWidget.h:1232
SLATECORE_API bool HasUserFocusedDescendants(int32 UserIndex) const
Definition SWidget.cpp:974
bool HasAnyUpdateFlags(EWidgetUpdateFlags FlagsToCheck) const
Definition SWidget.h:702
virtual SLATECORE_API void OnFinishedPointerInput()
Definition SWidget.cpp:634
virtual SLATECORE_API void SetVisibility(TAttribute< EVisibility > InVisibility)
Definition SWidget.cpp:1228
UE::Slate::FDeprecateVector2DResult GetRenderTransformPivot() const
Definition SWidget.h:1225
bool HasToolTipForceField() const
Definition SWidget.h:974
virtual SLATECORE_API bool HasKeyboardFocus() const
Definition SWidget.cpp:959
virtual SLATECORE_API FReply OnDragDetected(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:561
EWidgetPixelSnapping GetPixelSnapping() const
Definition SWidget.h:1254
virtual FChildren * GetAllChildren()
Definition SWidget.h:864
bool IsEnabled() const
Definition SWidget.h:948
TSharedPtr< MetaDataType > GetMetaData() const
Definition SWidget.h:1342
SLATECORE_API void Prepass_ChildLoop(float InLayoutScaleMultiplier, FChildren *MyChildren)
Definition SWidget.cpp:1768
SLATECORE_API void SetOnMouseButtonDown(FPointerEventHandler EventHandler)
Definition SWidget.cpp:1913
TStatId GetStatID(bool bForDeferredUse=false) const
Definition SWidget.h:808
void SetHover(TAttribute< bool > InHovered)
Definition SWidget.h:997
virtual SLATECORE_API TOptional< FVirtualPointerPosition > TranslateMouseCoordinateForCustomHitTestChild(const SWidget &ChildWidget, const FGeometry &MyGeometry, const FVector2D ScreenSpaceMouseCoordinate, const FVector2D LastScreenSpaceMouseCoordinate) const
Definition SWidget.cpp:629
TSharedPtr< SWidget > Advanced_GetPaintParentWidget() const
Definition SWidget.h:694
SLATECORE_API void SWidgetConstruct(const FSlateBaseNamedArgs &Args)
Definition SWidget.cpp:336
void SetRenderOpacity(float InRenderOpacity)
Definition SWidget.h:1164
bool IsHovered() const
Definition SWidget.h:983
TSlateAttributeRef< TOptional< FSlateRenderTransform > > GetRenderTransformAttribute() const
Definition SWidget.h:1731
uint8 bCanSupportFocus
Definition SWidget.h:1745
SLATECORE_API const FGeometry & GetCachedGeometry() const
Definition SWidget.cpp:1140
SLATECORE_API FGeometry FindChildGeometry(const FGeometry &MyGeometry, TSharedRef< SWidget > WidgetToFind) const
Definition SWidget.cpp:1047
SLATECORE_API TSharedRef< FActiveTimerHandle > RegisterActiveTimer(float TickPeriod, FWidgetActiveTimerDelegate TickFunction)
Definition SWidget.cpp:1821
uint8 bHasCustomPrepass
Definition SWidget.h:1810
virtual SLATECORE_API const FSlateBrush * GetFocusBrush() const
Definition SWidget.cpp:989
bool IsParentValid() const
Definition SWidget.h:691
virtual SLATECORE_API FReply OnPreviewMouseButtonDown(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:446
SLATECORE_API TOptional< EFocusCause > HasAnyUserFocus() const
Definition SWidget.cpp:969
virtual SLATECORE_API FNavigationReply OnNavigation(const FGeometry &MyGeometry, const FNavigationEvent &InNavigationEvent)
Definition SWidget.cpp:644
TSharedPtr< SWidget > GetParentWidget() const
Definition SWidget.h:692
virtual SLATECORE_API FReply OnMotionDetected(const FGeometry &MyGeometry, const FMotionEvent &InMotionEvent)
Definition SWidget.cpp:614
virtual SLATECORE_API void OnMouseCaptureLost(const FCaptureLostEvent &CaptureLostEvent)
Definition SWidget.cpp:1004
virtual SLATECORE_API FString ToString() const
Definition SWidget.cpp:1086
virtual SLATECORE_API FName GetTag() const
Definition SWidget.cpp:1123
TSlateAttributeRef< bool > GetEnabledStateAttribute() const
Definition SWidget.h:1725
virtual SLATECORE_API FReply OnTouchEnded(const FGeometry &MyGeometry, const FPointerEvent &InTouchEvent)
Definition SWidget.cpp:599
virtual bool ValidatePathToChild(SWidget *InChild)
Definition SWidget.h:689
void SetTag(FName InTag)
Definition SWidget.h:1173
UE::Slate::FDeprecateVector2DResult GetRenderTransformPivotWithRespectToFlowDirection() const
Definition SWidget.h:1203
EWidgetPixelSnapping PixelSnappingMethod
Definition SWidget.h:1834
virtual bool ComputeVolatility() const
Definition SWidget.h:1616
virtual FChildren * GetChildren()=0
virtual SLATECORE_API FReply OnMouseButtonDoubleClick(const FGeometry &InMyGeometry, const FPointerEvent &InMouseEvent)
Definition SWidget.cpp:487
virtual SLATECORE_API FReply OnTouchForceChanged(const FGeometry &MyGeometry, const FPointerEvent &TouchEvent)
Definition SWidget.cpp:604
bool IsAttributesUpdatesEnabled() const
Definition SWidget.h:677
virtual SLATECORE_API TOptional< TSharedRef< SWidget > > OnMapCursor(const FCursorReply &CursorReply) const
Definition SWidget.cpp:546
SLATECORE_API void EnableToolTipForceField(const bool bEnableForceField)
Definition SWidget.cpp:1218
SLATECORE_API void SetOnMouseMove(FPointerEventHandler EventHandler)
Definition SWidget.cpp:1923
SLATECORE_API FSlateRect CalculateCullingAndClippingRules(const FGeometry &AllottedGeometry, const FSlateRect &MyCullingRect, bool &bClipToBounds, bool &bAlwaysClip, bool &bIntersectClipBounds) const
Definition SWidget.cpp:1359
bool Advanced_InvalidateVolatility()
Definition SWidget.h:1149
bool HasActiveTimers() const
Definition SWidget.h:1703
virtual SLATECORE_API FSlateColor GetDisabledForegroundColor() const
Definition SWidget.cpp:1134
virtual SLATECORE_API FReply OnKeyDown(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent)
Definition SWidget.cpp:412
const FWidgetProxyHandle GetProxyHandle() const
Definition SWidget.h:680
bool SetAttribute(TAttribute< TargetValueType > &TargetValue, const TAttribute< SourceValueType > &SourceValue, EInvalidateWidgetReason BaseInvalidationReason)
Definition SWidget.h:1719
virtual SLATECORE_API void OnFinishedKeyInput()
Definition SWidget.cpp:639
virtual SLATECORE_API FReply OnKeyChar(const FGeometry &MyGeometry, const FCharacterEvent &InCharacterEvent)
Definition SWidget.cpp:402
float GetRenderOpacity() const
Definition SWidget.h:1158
void SetCullingBoundsExtension(const FMargin &InCullingBoundsExtension)
Definition SWidget.h:1263
SLATECORE_API void SetOnMouseEnter(FNoReplyPointerEventHandler EventHandler)
Definition SWidget.cpp:1933
virtual SLATECORE_API FReply OnKeyUp(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent)
Definition SWidget.cpp:427
static SLATECORE_API int32 FindChildUnderPosition(const FArrangedChildren &Children, const UE::Slate::FDeprecateVector2DParameter &ArrangedSpacePosition)
Definition SWidget.cpp:1067
float GetPrepassLayoutScaleMultiplier() const
Definition SWidget.h:1664
virtual SLATECORE_API void OnToolTipClosing()
Definition SWidget.cpp:1214
friend class FSlateTrace
Definition SWidget.h:174
SLATECORE_API SWidget()
Definition SWidget.cpp:215
void SetEnabled(TAttribute< bool > InEnabledState)
Definition SWidget.h:942
virtual SLATECORE_API FReply OnMouseButtonDown(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:451
bool ShouldBeEnabled(bool InParentEnabled) const
Definition SWidget.h:1603
virtual SLATECORE_API float GetRelativeLayoutScale(const int32 ChildIndex, float LayoutScaleMultiplier) const
Definition SWidget.cpp:1711
virtual SLATECORE_API ~SWidget()
Definition SWidget.cpp:274
virtual SLATECORE_API FReply OnMouseWheel(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:533
EVisibility GetVisibility() const
Definition SWidget.h:1009
virtual SLATECORE_API EWindowZone::Type GetWindowZoneOverride() const
Definition SWidget.cpp:656
EFlowDirectionPreference GetFlowDirectionPreference() const
Definition SWidget.h:1293
SLATECORE_API bool HasMouseCapture() const
Definition SWidget.cpp:994
SLATECORE_API bool HasAnyUserFocusOrFocusedDescendants() const
Definition SWidget.cpp:984
void AddMetadata(const TSharedRef< MetaDataType > &AddMe)
Definition SWidget.h:1383
uint8 bClippingProxy
Definition SWidget.h:1759
bool HasRegisteredSlateAttribute() const
Definition SWidget.h:675
SLATECORE_API void InvalidateChildRemovedFromTree(SWidget &Child)
Definition SWidget.cpp:708
virtual SLATECORE_API void OnMouseLeave(const FPointerEvent &MouseEvent)
Definition SWidget.cpp:516
virtual SLATECORE_API FReply OnTouchFirstMove(const FGeometry &MyGeometry, const FPointerEvent &TouchEvent)
Definition SWidget.cpp:609
EFlowDirection ComputeFlowDirection() const
Definition SWidget.h:1300
SLATECORE_API void SetCursor(const TAttribute< TOptional< EMouseCursor::Type > > &InCursor)
Definition SWidget.cpp:1309
virtual SLATECORE_API void OnMouseEnter(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:499
virtual SLATECORE_API TOptional< bool > OnQueryShowFocus(const EFocusCause InFocusCause) const
Definition SWidget.cpp:619
SLATECORE_API void SetClipping(EWidgetClipping InClipping)
Definition SWidget.cpp:1233
static SLATECORE_API int32 FindChildUnderMouse(const FArrangedChildren &Children, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:1061
SLATECORE_API void SetToolTip(const TAttribute< TSharedPtr< IToolTip > > &InToolTip)
Definition SWidget.cpp:1193
SLATECORE_API const FGeometry & GetPaintSpaceGeometry() const
Definition SWidget.cpp:1150
bool IsConstructed() const
Definition SWidget.h:1560
SLATECORE_API FName GetCreatedInLocation() const
Definition SWidget.cpp:1114
virtual bool IsInteractable() const
Definition SWidget.h:954
FMargin CullingBoundsExtension
Definition SWidget.h:1873
virtual SLATECORE_API bool OnVisualizeTooltip(const TSharedPtr< SWidget > &TooltipContent)
Definition SWidget.cpp:551
void SetCanTick(bool bInCanTick)
Definition SWidget.h:671
SLATECORE_API FName GetType() const
Definition SWidget.cpp:1098
virtual SLATECORE_API FReply OnDragOver(const FGeometry &MyGeometry, const FDragDropEvent &DragDropEvent)
Definition SWidget.cpp:574
void SetFlowDirectionPreference(EFlowDirectionPreference InFlowDirectionPreference)
Definition SWidget.h:1283
bool GetCanTick() const
Definition SWidget.h:672
void CacheVolatility()
Definition SWidget.h:1113
void MarkPrepassAsDirty()
Definition SWidget.h:1122
SLATECORE_API void SetPixelSnapping(EWidgetPixelSnapping InPixelSnappingMethod)
Definition SWidget.cpp:1244
int32 RemoveMetaData(const TSharedRef< MetaDataType > &RemoveMe)
Definition SWidget.h:1393
SLATECORE_API void SetToolTipText(const TAttribute< FText > &ToolTipText)
Definition SWidget.cpp:1169
virtual SLATECORE_API FReply OnPreviewKeyDown(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent)
Definition SWidget.cpp:407
virtual SLATECORE_API FReply OnAnalogValueChanged(const FGeometry &MyGeometry, const FAnalogInputEvent &InAnalogInputEvent)
Definition SWidget.cpp:432
FMargin GetCullingBoundsExtension() const
Definition SWidget.h:1274
uint8 bCanHaveChildren
Definition SWidget.h:1751
virtual SLATECORE_API bool SupportsKeyboardFocus() const
Definition SWidget.cpp:954
virtual SLATECORE_API FSlateColor GetForegroundColor() const
Definition SWidget.cpp:1128
virtual SLATECORE_API FString GetReadableLocation() const
Definition SWidget.cpp:1103
virtual SLATECORE_API FPopupMethodReply OnQueryPopupMethod() const
Definition SWidget.cpp:624
bool IsVolatileIndirectly() const
Definition SWidget.h:1085
void SetVolatilePrepass(bool bVolatile)
Definition SWidget.h:708
SLATECORE_API const FGeometry & GetTickSpaceGeometry() const
Definition SWidget.cpp:1145
virtual SLATECORE_API FReply OnDrop(const FGeometry &MyGeometry, const FDragDropEvent &DragDropEvent)
Definition SWidget.cpp:579
const TOptional< FSlateClippingState > & GetCurrentClippingState() const
Definition SWidget.h:1520
bool IsChildWidgetCulled(const FSlateRect &, const FArrangedWidget &) const
Definition SWidget.h:1134
virtual SLATECORE_API void CacheDesiredSize(float InLayoutScaleMultiplier)
Definition SWidget.cpp:943
SLATECORE_API void SlatePrepass()
Definition SWidget.cpp:666
float RenderOpacity
Definition SWidget.h:1876
SLATECORE_API void SetDebugInfo(const ANSICHAR *InType, const ANSICHAR *InFile, int32 OnLine, size_t InAllocSize)
Definition SWidget.cpp:1337
TArray< TSharedRef< MetaDataType > > GetAllMetaData() const
Definition SWidget.h:1362
SLATECORE_API void ArrangeChildren(const FGeometry &AllottedGeometry, FArrangedChildren &ArrangedChildren, bool bUpdateAttributes=false) const
Definition SWidget.cpp:1716
virtual SLATECORE_API void OnDragLeave(const FDragDropEvent &DragDropEvent)
Definition SWidget.cpp:570
const TOptional< FSlateRenderTransform > & GetRenderTransform() const
Definition SWidget.h:1179
virtual SLATECORE_API FReply OnMouseButtonUp(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:463
SLATECORE_API bool HasFocusedDescendants() const
Definition SWidget.cpp:979
SLATECORE_API void SetOnMouseLeave(FSimpleNoReplyPointerEventHandler EventHandler)
Definition SWidget.cpp:1938
virtual SLATECORE_API FReply OnTouchMoved(const FGeometry &MyGeometry, const FPointerEvent &InTouchEvent)
Definition SWidget.cpp:594
virtual bool CustomPrepass(float LayoutScaleMultiplier)
Definition SWidget.h:710
bool ShouldInvalidatePrepassDueToVolatility()
Definition SWidget.h:1101
TOptional< FSlateRenderTransform > GetRenderTransformWithRespectToFlowDirection() const
Definition SWidget.h:1184
virtual SLATECORE_API FReply OnTouchStarted(const FGeometry &MyGeometry, const FPointerEvent &InTouchEvent)
Definition SWidget.cpp:589
SLATECORE_API bool IsDirectlyHovered() const
Definition SWidget.cpp:1223
SLATECORE_API void AssignParentWidget(TSharedPtr< SWidget > InParent)
Definition SWidget.cpp:723
virtual SLATECORE_API void OnDragEnter(const FGeometry &MyGeometry, const FDragDropEvent &DragDropEvent)
Definition SWidget.cpp:566
virtual SLATECORE_API TSharedPtr< IToolTip > GetToolTip()
Definition SWidget.cpp:1205
const FSlateWidgetPersistentState & GetPersistentState() const
Definition SWidget.h:679
static TAttribute< EVisibility > AccessWidgetVisibilityAttribute(const TSharedRef< SWidget > &Widget)
Definition SWidget.h:1623
SLATECORE_API bool ConditionallyDetatchParentWidget(SWidget *InExpectedParent)
Definition SWidget.cpp:746
virtual SLATECORE_API FReply OnMouseMove(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:475
TSlateAttributeRef< bool > GetHoveredAttribute() const
Definition SWidget.h:1727
SLATECORE_API FString GetTypeAsString() const
Definition SWidget.cpp:1093
virtual SLATECORE_API FReply OnFocusReceived(const FGeometry &MyGeometry, const FFocusEvent &InFocusEvent)
Definition SWidget.cpp:389
virtual SLATECORE_API FCursorReply OnCursorQuery(const FGeometry &MyGeometry, const FPointerEvent &CursorEvent) const
Definition SWidget.cpp:538
virtual bool Advanced_IsInvalidationRoot() const
Definition SWidget.h:1524
EWidgetClipping GetClipping() const
Definition SWidget.h:1243
uint8 bHasRelativeLayoutScale
Definition SWidget.h:1812
TSlateAttributeRef< EVisibility > GetVisibilityAttribute() const
Definition SWidget.h:1729
SLATECORE_API void UnRegisterActiveTimer(const TSharedRef< FActiveTimerHandle > &ActiveTimerHandle)
Definition SWidget.cpp:1843
SLATECORE_API void SetOnMouseDoubleClick(FPointerEventHandler EventHandler)
Definition SWidget.cpp:1928
SLATECORE_API bool FindChildGeometries(const FGeometry &MyGeometry, const TSet< TSharedRef< SWidget > > &WidgetsToFind, TMap< TSharedRef< SWidget >, FArrangedWidget > &OutResult) const
Definition SWidget.cpp:1008
virtual SLATECORE_API void OnClippingChanged()
Definition SWidget.cpp:1354
virtual bool Advanced_IsWindow() const
Definition SWidget.h:1523
uint8 bVolatilityAlwaysInvalidatesPrepass
Definition SWidget.h:1815
void ForceVolatile(bool bForce)
Definition SWidget.h:1092
TSlateAttributeRef< FVector2D > GetRenderTransformPivotAttribute() const
Definition SWidget.h:1733
bool NeedsPrepass() const
Definition SWidget.h:660
SLATECORE_API UE::Slate::FDeprecateVector2DResult GetDesiredSize() const
Definition SWidget.cpp:718
SLATECORE_API TOptional< EFocusCause > HasUserFocus(int32 UserIndex) const
Definition SWidget.cpp:964
virtual SLATECORE_API FReply OnTouchGesture(const FGeometry &MyGeometry, const FPointerEvent &GestureEvent)
Definition SWidget.cpp:584
virtual FVector2D ComputeDesiredSize(float LayoutScaleMultiplier) const =0
SLATECORE_API bool HasMouseCaptureByUser(int32 UserIndex, TOptional< int32 > PointerIndex=TOptional< int32 >()) const
Definition SWidget.cpp:999
virtual SLATECORE_API void OnFocusLost(const FFocusEvent &InFocusEvent)
Definition SWidget.cpp:394
void SetRenderTransform(TAttribute< TOptional< FSlateRenderTransform > > InTransform)
Definition SWidget.h:1219
SLATECORE_API void SetOnMouseButtonUp(FPointerEventHandler EventHandler)
Definition SWidget.cpp:1918
Definition SWindow.h:243
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool Find(const ElementType &Item, SizeType &Index) const
Definition Array.h:1302
Definition Attribute.h:17
bool IsBound() const
Definition Attribute.h:427
bool IdenticalTo(const TAttribute &InOther) const
Definition Attribute.h:460
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1640
static UE_FORCEINLINE_HINT TSharedRef< OtherType, Mode > SharedThis(OtherType *ThisPtr)
Definition SharedPointer.h:1780
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
UE_FORCEINLINE_HINT TSharedPtr< ObjectType, Mode > Pin() const &
Definition SharedPointer.h:1512
UE_FORCEINLINE_HINT bool IsValid() const
Definition SharedPointer.h:1535
UpdateFlags
Definition DetourCrowd.h:208
Type
Definition GenericApplicationMessageHandler.h:87
Definition SlateAttribute.cpp:11
FDeprecateSlateVector2D FDeprecateVector2DResult
Definition SlateVector2.h:469
const FVector2f & CastToVector2f(const FVector2f &InValue)
Definition SlateVector2.h:591
U16 Index
Definition radfft.cpp:71
Definition Visibility.h:12
Definition Events.h:528
Definition Events.h:106
Definition Events.h:606
Definition Events.h:51
Definition Geometry.h:40
FGeometry MakeChild(const UE::Slate::FDeprecateVector2DParameter &InLocalSize, const FSlateLayoutTransform &LayoutTransform, const FSlateRenderTransform &RenderTransform, const UE::Slate::FDeprecateVector2DParameter &RenderTransformPivot) const
Definition Geometry.h:225
Definition Events.h:431
Definition Margin.h:17
Definition Events.h:1060
Definition Events.h:1148
Definition Events.h:695
Definition DeclarativeSyntaxSupport.h:654
Definition SlateBrush.h:239
Definition DrawElements.h:48
Definition DrawElements.h:106
Definition SlateColor.h:42
Definition SlateInvalidationWidgetSortOrder.h:17
Definition WidgetProxy.h:35
Definition WidgetProxy.h:241
TOptional< FSlateClippingState > InitialClipState
Definition WidgetProxy.h:256
TWeakPtr< SWidget > PaintParent
Definition WidgetProxy.h:255
Definition SWidget.h:255
Definition SWidget.h:189
Definition SWidget.h:225
const ObjectType & Get() const
Definition SlateAttributeBase.inl:240
bool Assign(ContainerType &Widget, const TAttribute< ObjectType > &OtherAttribute, ESlateAttributeBindAction Actions=UE_SLATE_WITH_ATTRIBUTE_DEFAULT_INITIALIZATION_ACTION)
Definition SlateAttributeBase.inl:350
Definition SlateAttributeManaged.inl:13
Definition SlateAttributeMember.inl:88
TSlateMemberAttributeRef(const TSharedRef< WidgetType > &InOwner, const AttributeMemberType &InAttribute)
Definition SlateAttributeMember.inl:106
Definition SlateAttributeMember.inl:13
Definition Optional.h:131
Definition SlateAttribute.h:202
Definition SlateAttribute.h:214
Definition SlateAttribute.h:225
Definition DeclarativeSyntaxSupport.h:905
Definition LightweightStats.h:416
Definition SWidget.h:69
static constexpr bool SupportsInvalidation()
Definition SWidget.h:71
Definition SlateVector2.h:485