UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SlateApplicationBase.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"
8#include "Layout/Visibility.h"
9#include "Layout/SlateRect.h"
11#include "Misc/CoreDelegates.h"
13#include "Types/SlateVector2.h"
14
17
18
20#if WITH_ACCESSIBILITY
22#endif
24class FWidgetPath;
25class IToolTip;
26class SWidget;
27class SWindow;
28class SImage;
30
31template< typename ObjectType > class TAttribute;
32
52
57{
58public:
59 virtual void Flash( ) = 0;
62 virtual void SetAllowMenuBar(bool bInAllowMenuBar) = 0;
63};
64
66
67
72{
73public:
78
79private:
80 // SWindow must be able to test which part of the window is being moused-over
81 friend class SWindow;
82
83private:
84 FSlateApplicationBase* SlateApp;
85 // @see FSlateApplicationBase::LocateWidgetInWindow
86 FWidgetPath LocateWidgetInWindow(FVector2f ScreenspaceMouseCoordinate, const TSharedRef<SWindow>& Window, bool bIgnoreEnabledStatus, int32 UserIndex) const;
87};
88
93{
95 static const int32 MaxHardwareUsers = 8;
96}
97
100{
102 PreventOverlap = 0,
105};
106
114{
115 friend class SWidget;
116public:
117
120
126 virtual bool IsActive() const = 0;
127
134 {
135 return Renderer.Get();
136 }
137
138public:
139
151
156
168
176
183
190
197
203 virtual const FSlateBrush* GetAppIcon( ) const = 0;
204 virtual const FSlateBrush* GetAppIconSmall() const = 0;
205
211 virtual float GetApplicationScale( ) const = 0;
212
221 virtual const double GetCurrentTime( ) const = 0;
222
229
236
243
249 virtual bool GetSoftwareCursorAvailable( ) const = 0;
250
256 virtual EVisibility GetSoftwareCursorVis( ) const = 0;
257
264
271
273
280
287
292
294 virtual bool AnyMenusVisible() const = 0;
295
296#if WITH_ACCESSIBILITY
303#endif
304protected:
311
313
314public:
320 virtual bool HasAnyMouseCaptor( ) const = 0;
321
327 virtual bool HasUserMouseCapture(int32 UserIndex) const = 0;
328
335 {
336 return PlatformApplication;
337 }
338
344 virtual FSlateRect GetPreferredWorkArea( ) const = 0;
345
353 virtual bool HasUserFocusedDescendants(const TSharedRef< const SWidget >& Widget, int32 UserIndex) const = 0;
354
362
368 virtual bool IsExternalUIOpened( ) = 0;
369
371 friend class FHitTesting;
373
383
394
397
404
412 virtual TSharedRef<IToolTip> MakeToolTip(const TAttribute<FText>& ToolTipText) = 0;
413
420 virtual TSharedRef<IToolTip> MakeToolTip( const FText& ToolTipText ) = 0;
421
430
439
447 virtual bool SetKeyboardFocus( const FWidgetPath& InFocusPath, const EFocusCause InCause ) = 0;
448
458
468
476
484
488 virtual TSharedPtr<SWidget> GetUserFocusedWidget(uint32 UserIndex) const = 0;
489
494
500
503
505
511private:
515 SLATECORE_API void RegisterActiveTimer( const TSharedRef<FActiveTimerHandle>& ActiveTimerHandle );
516
520 SLATECORE_API void UnRegisterActiveTimer( const TSharedRef<FActiveTimerHandle>& ActiveTimerHandle );
521
523 TSet<TWeakPtr<FActiveTimerHandle>> ActiveTimerHandles;
524
525protected:
527 {
528 Unset,
529 Set,
530 Debug
531 };
532
538
539public:
542
545
558
564 static bool IsInitialized( )
565 {
567 }
568
569protected:
570
577
583 virtual bool DoesWidgetHaveMouseCaptureByUser(const TSharedPtr<const SWidget> Widget, int32 UserIndex, TOptional<int32> PointerIndex) const = 0;
584
591
598
606
612 virtual bool ShowUserFocus(const TSharedPtr<const SWidget> Widget) const = 0;
613
616
618#if WITH_EDITOR
620#endif
621
622protected:
623
624 // Holds the Slate renderer used to render this application.
626
627 // Private interface for select entities that are allowed to perform hittesting
629
630protected:
631
632 // Holds a pointer to the current application.
634
635 // Holds a pointer to the platform application.
637
638 // Caches the application's display metrics
640
641 // Caches the previous debug safe zone ratio
643public:
644
651
656
661
666
667#if WITH_EDITORONLY_DATA
668 FOnDebugSafeZoneChanged OnDebugSafeZoneChanged;
669#endif
670#if WITH_EDITOR
672#endif
673protected:
674#if WITH_ACCESSIBILITY
677#endif
678
682
685
686 // Gets set when Slate goes to sleep and cleared when active.
688
691
694
697};
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
EFocusCause
Definition Events.h:25
EWindowTransparency
Definition GenericWindowDefinition.h:35
EInvalidateWidgetReason
Definition InvalidateWidgetReason.h:14
EPopupCursorOverlapMode
Definition SlateApplicationBase.h:100
EHorizontalAlignment
Definition SlateEnums.h:174
EUINavigationAction
Definition SlateEnums.h:124
EUINavigation
Definition SlateEnums.h:99
bool IsThreadSafeForSlateRendering()
Definition SlateRenderer.cpp:211
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 SlateApplicationBase.h:72
FHitTesting(FSlateApplicationBase *InSlateApplication)
Definition SlateApplicationBase.h:74
Definition SlateApplicationBase.h:114
virtual UE::Slate::FDeprecateVector2DResult CalculateTooltipWindowPosition(const FSlateRect &InAnchorRect, const UE::Slate::FDeprecateVector2DParameter &InSize, bool bAutoAdjustForDPIScale, EPopupCursorOverlapMode CursorOverlapMode=EPopupCursorOverlapMode::PreventOverlap) const =0
virtual void SetAllUserFocus(const FWidgetPath &InFocusPath, const EFocusCause InCause)=0
SLATECORE_API void GetSafeZoneSize(FMargin &SafeZone, const UE::Slate::FDeprecateVector2DParameter &OverrideSize)
Definition SlateApplicationBase.cpp:60
bool bIsSlateAsleep
Definition SlateApplicationBase.h:687
virtual TSharedPtr< SWindow > GetActiveTopLevelRegularWindow() const =0
virtual FWidgetPath LocateWindowUnderMouse(UE::Slate::FDeprecateVector2DParameter ScreenspaceMouseCoordinate, const TArray< TSharedRef< SWindow > > &Windows, bool bIgnoreEnabledStatus=false, int32 UserIndex=INDEX_NONE)=0
FSlateRenderer * GetRenderer() const
Definition SlateApplicationBase.h:133
virtual EVisibility GetSoftwareCursorVis() const =0
SLATECORE_API void InvalidateAllWidgets(bool bClearResourcesImmediately) const
Definition SlateApplicationBase.cpp:222
virtual void RequestDestroyWindow(TSharedRef< SWindow > WindowToDestroy)=0
SLATECORE_API FSlateApplicationBase()
Definition SlateApplicationBase.cpp:29
virtual bool DoesWidgetHaveMouseCaptureByUser(const TSharedPtr< const SWidget > Widget, int32 UserIndex, TOptional< int32 > PointerIndex) const =0
virtual UE::Slate::FDeprecateVector2DResult GetLastCursorPos() const =0
const FMargin & GetCustomSafeZone() const
Definition SlateApplicationBase.h:665
virtual float GetApplicationScale() const =0
virtual const FSlateBrush * GetAppIconSmall() const =0
virtual bool SetKeyboardFocus(const FWidgetPath &InFocusPath, const EFocusCause InCause)=0
virtual TOptional< EFocusCause > HasUserFocus(const TSharedPtr< const SWidget > Widget, int32 UserIndex) const =0
FHitTesting HitTesting
Definition SlateApplicationBase.h:628
virtual TSharedPtr< SWidget > GetKeyboardFocusedWidget() const =0
virtual EUINavigationAction GetNavigationActionFromKey(const FKeyEvent &InKeyEvent) const =0
DECLARE_EVENT_OneParam(FSlateApplicationBase, FOnInvalidateAllWidgets, bool)
SLATECORE_API void GetSafeZoneRatio(FMargin &SafeZoneRatio)
Definition SlateApplicationBase.cpp:83
SLATECORE_API void GetDisplayMetrics(FDisplayMetrics &OutDisplayMetrics)
Definition SlateApplicationBase.cpp:48
TSharedPtr< class GenericApplication > GetPlatformApplication()
Definition SlateApplicationBase.h:657
virtual TOptional< EFocusCause > HasAnyUserFocus(const TSharedPtr< const SWidget > Widget) const =0
virtual FSlateRect GetPreferredWorkArea() const =0
virtual TSharedPtr< SWidget > GetCurrentDebugContextWidget() const =0
SLATECORE_API static const FPlatformUserId SlateAppPrimaryPlatformUser
Definition SlateApplicationBase.h:544
SLATECORE_API const FHitTesting & GetHitTesting() const
Definition SlateApplicationBase.cpp:103
virtual TSharedRef< SImage > MakeImage(const TAttribute< const FSlateBrush * > &Image, const TAttribute< FSlateColor > &Color, const TAttribute< EVisibility > &Visibility) const =0
virtual const TSharedPtr< GenericApplication > GetPlatformApplication() const
Definition SlateApplicationBase.h:334
virtual FWidgetPath LocateWidgetInWindow(UE::Slate::FDeprecateVector2DParameter ScreenspaceMouseCoordinate, const TSharedRef< SWindow > &Window, bool bIgnoreEnabledStatus, int32 UserIndex) const =0
virtual TSharedPtr< SWindow > FindWidgetWindow(TSharedRef< const SWidget > InWidget) const =0
virtual void ArrangeWindowToFrontVirtual(TArray< TSharedRef< SWindow > > &Windows, const TSharedRef< SWindow > &WindowToBringToFront)=0
SLATECORE_API void UpdateAnyActiveTimersArePending()
Definition SlateApplicationBase.cpp:120
static FSlateApplicationBase & Get()
Definition SlateApplicationBase.h:552
ECustomSafeZoneState
Definition SlateApplicationBase.h:527
FOnGlobalInvalidationToggled & OnGlobalInvalidationToggled()
Definition SlateApplicationBase.h:502
static SLATECORE_API TSharedPtr< class GenericApplication > PlatformApplication
Definition SlateApplicationBase.h:636
virtual bool IsActive() const =0
TSharedPtr< ICursor > GetPlatformCursor()
Definition SlateApplicationBase.h:652
DECLARE_EVENT_OneParam(FSlateApplicationBase, FOnGlobalInvalidationToggled, bool)
virtual bool HasAnyMouseCaptor() const =0
virtual bool GetSoftwareCursorAvailable() const =0
FOnInvalidateAllWidgets OnInvalidateAllWidgetsEvent
Definition SlateApplicationBase.h:680
FDisplayMetrics CachedDisplayMetrics
Definition SlateApplicationBase.h:639
SLATECORE_API static const uint32 CursorPointerIndex
Definition SlateApplicationBase.h:540
virtual bool AnyMenusVisible() const =0
virtual TSharedPtr< SWidget > GetUserFocusedWidget(uint32 UserIndex) const =0
virtual bool HasUserMouseCapture(int32 UserIndex) const =0
SLATECORE_API bool IsSlateAsleep()
Definition SlateApplicationBase.cpp:159
virtual bool IsWidgetDirectlyHovered(const TSharedPtr< const SWidget > Widget) const =0
virtual TSharedRef< SWindow > AddWindow(TSharedRef< SWindow > InSlateWindow, const bool bShowImmediately=true)=0
TSharedPtr< FSlateRenderer > Renderer
Definition SlateApplicationBase.h:625
virtual EUINavigationAction GetNavigationActionForKey(const FKey &InKey) const =0
virtual bool HasFocusedDescendants(const TSharedRef< const SWidget > &Widget) const =0
virtual TSharedPtr< SWidget > GetMouseCaptorImpl() const =0
SLATECORE_API void GetCachedDisplayMetrics(FDisplayMetrics &OutDisplayMetrics) const
Definition SlateApplicationBase.cpp:55
SLATECORE_API void ResetCustomSafeZone()
Definition SlateApplicationBase.cpp:195
virtual bool SetUserFocus(const uint32 InUserIndex, const FWidgetPath &InFocusPath, const EFocusCause InCause)=0
virtual bool FindPathToWidget(TSharedRef< const SWidget > InWidget, FWidgetPath &OutWidgetPath, EVisibility VisibilityFilter=EVisibility::Visible)=0
FOnGlobalInvalidationToggled OnGlobalInvalidationToggledEvent
Definition SlateApplicationBase.h:681
virtual bool DoesWidgetHaveMouseCapture(const TSharedPtr< const SWidget > Widget) const =0
virtual bool SetUserFocusAllowingDescendantFocus(const uint32 InUserIndex, const FWidgetPath &InFocusPath, const EFocusCause InCause)=0
virtual EWindowTransparency GetWindowTransparencySupport() const =0
SLATECORE_API void ToggleGlobalInvalidation(bool bIsGlobalInvalidationEnabled)
Definition SlateApplicationBase.cpp:213
virtual TSharedRef< IToolTip > MakeToolTip(const TAttribute< FText > &ToolTipText)=0
virtual TSharedRef< SWidget > MakeWindowTitleBar(const FWindowTitleBarArgs &InArgs, TSharedPtr< IWindowTitleBar > &OutTitleBar) const =0
virtual bool IsWindowHousingInteractiveTooltip(const TSharedRef< const SWindow > &WindowToTest) const =0
virtual bool HasUserFocusedDescendants(const TSharedRef< const SWidget > &Widget, int32 UserIndex) const =0
virtual bool IsExternalUIOpened()=0
virtual EUINavigation GetNavigationDirectionFromAnalog(const FAnalogInputEvent &InAnalogEvent)=0
virtual UE::Slate::FDeprecateVector2DResult GetCursorSize() const =0
static bool IsInitialized()
Definition SlateApplicationBase.h:564
virtual bool ShowUserFocus(const TSharedPtr< const SWidget > Widget) const =0
virtual TSharedRef< IToolTip > MakeToolTip(const FText &ToolTipText)=0
virtual const double GetCurrentTime() const =0
virtual const FSlateBrush * GetAppIcon() const =0
static SLATECORE_API TSharedPtr< FSlateApplicationBase > CurrentBaseApplication
Definition SlateApplicationBase.h:633
virtual EUINavigation GetNavigationDirectionFromKey(const FKeyEvent &InKeyEvent) const =0
FCriticalSection ActiveTimerCS
Definition SlateApplicationBase.h:684
virtual void SetAllUserFocusAllowingDescendantFocus(const FWidgetPath &InFocusPath, const EFocusCause InCause)=0
FOnInvalidateAllWidgets & OnInvalidateAllWidgets()
Definition SlateApplicationBase.h:499
SLATECORE_API void SetCustomSafeZone(const FMargin &InSafeZone)
Definition SlateApplicationBase.cpp:207
ECustomSafeZoneState CustomSafeZoneState
Definition SlateApplicationBase.h:690
SLATECORE_API static const uint32 CursorUserIndex
Definition SlateApplicationBase.h:541
SLATECORE_API bool IsCustomSafeZoneSet() const
Definition SlateApplicationBase.cpp:201
FMargin CustomSafeZoneRatio
Definition SlateApplicationBase.h:693
virtual TSharedPtr< SWindow > GetActiveTopLevelWindow() const =0
SLATECORE_API void UpdateCustomSafeZone(const FMargin &NewSafeZoneRatio, bool bShouldRecacheMetrics)
Definition SlateApplicationBase.cpp:164
virtual UE::Slate::FDeprecateVector2DResult GetCursorPos() const =0
virtual ~FSlateApplicationBase()
Definition SlateApplicationBase.h:119
float CachedDebugTitleSafeRatio
Definition SlateApplicationBase.h:642
bool bAnyActiveTimersPending
Definition SlateApplicationBase.h:696
virtual const TArray< TSharedRef< SWindow > > GetTopLevelWindows() const =0
Definition SlateRect.h:26
Definition SlateRenderer.h:173
Definition Text.h:385
Definition WidgetPath.h:51
const TSharedPtr< ICursor > Cursor
Definition GenericApplication.h:558
Definition IToolTip.h:12
Definition SlateApplicationBase.h:57
virtual void UpdateBackgroundContent(TSharedPtr< SWidget > BackgroundContent)=0
virtual void SetAllowMenuBar(bool bInAllowMenuBar)=0
virtual void UpdateWindowMenu(TSharedPtr< SWidget > MenuContent)=0
virtual void Flash()=0
Definition Renderer.Build.cs:6
Definition SImage.h:29
Definition SWidget.h:165
Definition SWindow.h:243
Definition Array.h:670
Definition Attribute.h:17
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition SharedPointer.h:153
Definition SlateApplicationBase.h:93
FDeprecateSlateVector2D FDeprecateVector2DResult
Definition SlateVector2.h:469
Definition MinimalWindowsApi.h:62
Definition Visibility.h:12
static SLATECORE_API const EVisibility Visible
Definition Visibility.h:14
Definition Events.h:528
Definition GenericApplication.h:357
Definition Events.h:431
Definition InputCoreTypes.h:50
Definition Margin.h:17
Definition CoreMiscDefines.h:470
Definition SlateBrush.h:239
Definition SlateApplicationBase.h:34
FWindowTitleBarArgs(const TSharedRef< SWindow > &InWindow)
Definition SlateApplicationBase.h:35
TSharedPtr< SWidget > CenterContent
Definition SlateApplicationBase.h:44
TAttribute< FText > CloseButtonToolTipText
Definition SlateApplicationBase.h:50
EHorizontalAlignment CenterContentAlignment
Definition SlateApplicationBase.h:47
TSharedRef< SWindow > Window
Definition SlateApplicationBase.h:41
Definition Optional.h:131
Definition SlateVector2.h:485