UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SWindowTitleBar.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 "Layout/Visibility.h"
9#include "Input/Reply.h"
10#include "Widgets/SWidget.h"
11#include "Layout/Margin.h"
13#include "Widgets/SNullWidget.h"
16#include "Widgets/SBoxPanel.h"
17#include "Widgets/SOverlay.h"
18#include "Styling/SlateTypes.h"
19#include "Styling/CoreStyle.h"
20#include "Widgets/SWindow.h"
23#include "Widgets/Layout/SBox.h"
29
31{
33 static const float WindowFlashFrequency = 5.5f;
34
36 static const float WindowFlashDuration = 1.0f;
37}
38
39
42 : public SCompoundWidget
43{
46 {
47 _AccessibleText = NSLOCTEXT("AppIconWidget", "System", "System Menu");
48 }
49
52
54
55 void Construct( const FArguments& Args )
56 {
57 SetCanTick(false);
58
60 FSlateApplicationBase::Get().GetAppIcon(),
61 Args._IconColorAndOpacity,
63 );
64
65 this->ChildSlot
66 .Padding(FAppStyle::Get().GetMargin("AppIconPadding"))
67 [
68 IconImage.ToSharedRef()
69 ];
70 }
71
72 void SetIcon(const FSlateBrush* InIcon, const FMargin& InIconPadding)
73 {
75 IconImage->SetImage(InIcon);
76 }
77
78 virtual EWindowZone::Type GetWindowZoneOverride() const override
79 {
80 // Pretend we are a REAL system menu so the user can click to open a menu, or double-click to close the app on Windows
82 }
83
84private:
85 TSharedPtr<SImage> IconImage;
86};
87
88
93 : public SCompoundWidget
94 , public IWindowTitleBar
95{
96public:
97
99 : _Style(&FCoreStyle::Get().GetWidgetStyle<FWindowStyle>("Window"))
101 { }
103 SLATE_ARGUMENT(bool, ShowAppIcon)
104 SLATE_ATTRIBUTE(FText, Title)
105 SLATE_ATTRIBUTE(FText, CloseButtonToolTipText)
107
108public:
109
119
121 {
123 }
124
125 //~ Begin IWindowTitleBar Interface
126 SLATE_API virtual void Flash() override;
129 SLATE_API virtual void SetAllowMenuBar(bool bInAllowMenuBar) override;
130 //~ Begin IWindowTitleBar Interface
131
132protected:
133
134 float GetFlashValue( ) const
135 {
136 if (TitleFlashSequence.IsPlaying())
137 {
138 float Lerp = TitleFlashSequence.GetLerp();
139
140 const float SinRateMultiplier = 2.0f * PI * SWindowTitleBarDefs::WindowFlashDuration * SWindowTitleBarDefs::WindowFlashFrequency;
141 float SinTerm = 0.5f * (FMath::Sin( Lerp * SinRateMultiplier ) + 1.0f);
142
143 float FadeTerm = 1.0f - Lerp;
144
145 return SinTerm * FadeTerm;
146 }
147 return 0.0f;
148 }
149
157
167
169 {
170 // Color of the title area contents - modulates the icon and buttons
171 float Flash = GetFlashValue();
172
174 }
175
176private:
177
178 // Callback for clicking the close button.
179 FReply CloseButton_OnClicked();
180
181 // Callback for getting the image of the close button.
182 const FSlateBrush* GetCloseImage() const;
183
184 // Callback for clicking the maximize button
185 FReply MaximizeRestoreButton_OnClicked( );
186
187 // Callback for getting the image of the maximize/restore button.
188 const FSlateBrush* GetMaximizeRestoreImage( ) const;
189
190 // Callback for clicking the minimize button.
191 FReply MinimizeButton_OnClicked( );
192
193 // Callback for getting the image of the minimize button.
194 const FSlateBrush* GetMinimizeImage( ) const;
195
197 const FSlateBrush* GetWindowTitlebackgroundImage( ) const;
198
199 EVisibility GetWindowFlashVisibility( ) const;
200
201 FSlateColor GetWindowTitleAreaColor( ) const;
202
203 FText HandleWindowTitleText( ) const;
204
205 FText GetMaximizeButtonToolTip() const;
206
207protected:
208
209 // Holds a weak pointer to the owner window.
211
212private:
213
214 // Holds the window style to use (for buttons, text, etc.).
215 const FWindowStyle* Style;
216
217 // Holds the content widget of the title area.
218 TSharedPtr<SWidget> TitleArea;
219
220 // Holds the curve sequence for the window flash animation.
221 FCurveSequence TitleFlashSequence;
222
223 // Holds the minimize button.
224 TSharedPtr<SButton> MinimizeButton;
225
226 // Holds the maximize/restore button.
227 TSharedPtr<SButton> MaximizeRestoreButton;
228
229 // Holds the close button.
230 TSharedPtr<SButton> CloseButton;
231
232 TAttribute<FText> Title;
233 TAttribute<FText> CloseButtonToolTipText;
234
235 SHorizontalBox::FSlot* WindowMenuSlot;
236 SHorizontalBox::FSlot* RightSideContentSlot;
237
238 TSharedPtr<SAppIconWidget> AppIconWidget;
239 bool ShowAppIcon;
240 bool bAllowMenuBar = false;
241};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define SLATE_STYLE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:280
#define SLATE_ATTRIBUTE(AttrType, AttrName)
Definition DeclarativeSyntaxSupport.h:192
#define SLATE_BEGIN_ARGS(InWidgetType)
Definition DeclarativeSyntaxSupport.h:63
#define SLATE_END_ARGS()
Definition DeclarativeSyntaxSupport.h:116
#define SLATE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:208
return true
Definition ExternalRpcRegistry.cpp:601
#define NSLOCTEXT(InNamespace, InKey, InTextLiteral)
Definition Internationalization.h:300
EHorizontalAlignment
Definition SlateEnums.h:174
#define PI
Definition UnrealMathUtility.h:65
static SLATECORE_API const ISlateStyle & Get()
Definition AppStyle.cpp:10
Definition CoreStyle.h:15
Definition Reply.h:24
virtual TSharedRef< SImage > MakeImage(const TAttribute< const FSlateBrush * > &Image, const TAttribute< FSlateColor > &Color, const TAttribute< EVisibility > &Visibility) const =0
static FSlateApplicationBase & Get()
Definition SlateApplicationBase.h:552
Definition Text.h:385
Definition SlateApplicationBase.h:57
Definition SWindowTitleBar.h:43
Definition SCompoundWidget.h:22
FCompoundWidgetOneChildSlot ChildSlot
Definition SCompoundWidget.h:113
Definition SBoxPanel.h:175
SLATECORE_API void SetImage(TAttribute< const FSlateBrush * > InImage)
Definition SImage.cpp:91
Definition SWidget.h:165
void SetCanTick(bool bInCanTick)
Definition SWidget.h:671
Definition SWindowTitleBar.h:95
TWeakPtr< SWindow > OwnerWindowPtr
Definition SWindowTitleBar.h:210
virtual SLATE_API void Flash() override
Definition SWindowTitleBar.cpp:46
SLATE_BEGIN_ARGS(SWindowTitleBar)
Definition SWindowTitleBar.h:98
SLATE_API TSharedRef< SWidget > MakeTitleBarContent(TSharedPtr< SWidget > CenterContent, EHorizontalAlignment CenterContentAlignment)
Definition SWindowTitleBar.cpp:278
virtual EWindowZone::Type GetWindowZoneOverride() const override
Definition SWindowTitleBar.h:120
virtual SLATE_API void SetAllowMenuBar(bool bInAllowMenuBar) override
Definition SWindowTitleBar.cpp:99
virtual SLATE_API void UpdateWindowMenu(TSharedPtr< SWidget > MenuContent) override
Definition SWindowTitleBar.cpp:52
SLATE_API void Construct(const FArguments &InArgs, const TSharedRef< SWindow > &InWindow, const TSharedPtr< SWidget > &InCenterContent, EHorizontalAlignment InCenterContentAlignment)
Definition SWindowTitleBar.cpp:5
float GetFlashValue() const
Definition SWindowTitleBar.h:134
virtual SLATE_API void UpdateBackgroundContent(TSharedPtr< SWidget > BackgroundContent) override
Definition SWindowTitleBar.cpp:75
FSlateColor GetWindowTitleContentColor() const
Definition SWindowTitleBar.h:168
virtual SLATE_API void MakeTitleBarContentWidgets(TSharedPtr< SWidget > &OutLeftContent, TSharedPtr< SWidget > &OutRightContent)
Definition SWindowTitleBar.cpp:121
Definition SWindow.h:243
Definition Attribute.h:17
MixedIntoType & Padding(TAttribute< FMargin > InPadding)
Definition BasicLayoutWidgetSlot.h:337
Definition SharedPointer.h:692
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
Definition GenericApplicationMessageHandler.h:81
Type
Definition GenericApplicationMessageHandler.h:87
@ SysMenu
Definition GenericApplicationMessageHandler.h:102
@ TitleBar
Definition GenericApplicationMessageHandler.h:98
Definition SWindowTitleBar.h:31
Definition Visibility.h:12
static SLATECORE_API const EVisibility HitTestInvisible
Definition Visibility.h:23
Definition CurveSequence.h:26
SLATECORE_API float GetLerp() const
Definition CurveSequence.cpp:254
SLATECORE_API bool IsPlaying() const
Definition CurveSequence.cpp:188
static CORE_API const FLinearColor White
Definition Color.h:456
static CORE_API const FLinearColor Black
Definition Color.h:458
Definition Margin.h:17
static constexpr UE_FORCEINLINE_HINT T Lerp(const T &A, const T &B, const U &Alpha)
Definition UnrealMathUtility.h:1116
Definition SlateBrush.h:239
Definition SlateColor.h:42
Definition SlateTypes.h:2137