UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Reply.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 "InputCoreTypes.h"
7#include "Types/SlateEnums.h"
8#include "Input/ReplyBase.h"
9#include "Input/Events.h"
10#include "Input/DragAndDrop.h"
11
12class SWidget;
13
14// @todo Slate: this is highly sketchy, as FDragDropOperation is declared in Slate,
15// but cannot currently be brought into SlateCore due to dependencies to SWindow.
17
23class FReply : public TReplyBase<FReply>
24{
25public:
26
29 {
30 this->MouseCaptor = InMouseCaptor;
31 return Me();
32 }
33
39 {
40 this->MouseCaptor = InMouseCaptor;
41 this->bUseHighPrecisionMouse = true;
42 return Me();
43 }
44
49
52
58
61
68
71 {
72 this->NavigationType = InNavigationType;
73 this->NavigationGenesis = InNavigationGenesis;
74 this->NavigationSource = InNavigationSource;
75 this->NavigationDestination = nullptr;
76 return Me();
77 }
78
81 {
82 this->NavigationType = EUINavigation::Invalid;
83 this->NavigationGenesis = InNavigationGenesis;
84 this->NavigationSource = InNavigationSource;
85 this->NavigationDestination = InNavigationDestination;
86 return Me();
87 }
88
94 {
95 this->MouseLockWidget = InWidget;
96 this->bShouldReleaseMouseLock = false;
97 return Me();
98 }
99
104 {
105 this->bShouldReleaseMouseLock = true;
106 MouseLockWidget.Reset();
107 return Me();
108 }
109
115 {
116 this->MouseCaptor.Reset();
117 this->bReleaseMouseCapture = true;
118 this->bUseHighPrecisionMouse = false;
119 return Me();
120 }
121
130 {
131 this->DetectDragForWidget = DetectDragInMe;
132 this->DetectDragForMouseButton = MouseButton;
133 return Me();
134 }
135
144 {
145 this->DragDropContent = InDragDropContent;
146 return Me();
147 }
148
151 {
152 this->bEndDragDrop = true;
153 return Me();
154 }
155
158 {
159 this->bPreventThrottling = true;
160 return Me();
161 }
162
163public:
164
166 bool ShouldReleaseMouse() const { return bReleaseMouseCapture; }
167
169 bool ShouldSetUserFocus() const { return bSetUserFocus; }
170
172 bool ShouldReleaseUserFocus() const { return bReleaseUserFocus; }
173
175 bool AffectsAllUsers() const { return bAllUsers; }
176
178 bool ShouldUseHighPrecisionMouse() const { return bUseHighPrecisionMouse; }
179
181 bool ShouldReleaseMouseLock() const { return bShouldReleaseMouseLock; }
182
184 bool ShouldThrottle() const { return !bPreventThrottling; }
185
187 TSharedPtr<SWidget> GetMouseLockWidget() const { return MouseLockWidget.Pin(); }
188
190 TSharedPtr<SWidget> GetUserFocusRecepient() const { return FocusRecipient.Pin(); }
191
193 EFocusCause GetFocusCause() const { return FocusChangeReason; }
194
196 TSharedPtr<SWidget> GetMouseCaptor() const { return MouseCaptor.Pin(); }
197
199 EUINavigation GetNavigationType() const { return NavigationType; }
200
202 ENavigationGenesis GetNavigationGenesis() const { return NavigationGenesis; }
203
205 ENavigationSource GetNavigationSource() const { return NavigationSource; }
206
208 TSharedPtr<SWidget> GetNavigationDestination() const { return NavigationDestination.Pin(); }
209
211 const TSharedPtr<FDragDropOperation>& GetDragDropContent() const { return DragDropContent; }
212
214 bool ShouldEndDragDrop() const { return bEndDragDrop; }
215
217 TSharedPtr<SWidget> GetDetectDragRequest() const { return DetectDragForWidget.Pin(); }
218
220 FKey GetDetectDragRequestButton() const { return DetectDragForMouseButton; }
221
223 const TOptional<FIntPoint>& GetRequestedMousePos() const { return RequestedMousePos; }
224
226 SLATECORE_API FString ToString();
227
228public:
229
234 {
235 return FReply(true);
236 }
237
242 {
243 return FReply(false);
244 }
245
246public:
249
252
253private:
254
259
260private:
261 friend class FSlateApplication;
262
263private:
264
265 TOptional<FIntPoint> RequestedMousePos;
266 TWeakPtr<SWidget> EventHandler;
267 TWeakPtr<SWidget> MouseCaptor;
268 TWeakPtr<SWidget> FocusRecipient;
269 TWeakPtr<SWidget> MouseLockWidget;
270 TWeakPtr<SWidget> DetectDragForWidget;
271 TWeakPtr<SWidget> NavigationDestination;
272 FKey DetectDragForMouseButton;
273 TSharedPtr<FDragDropOperation> DragDropContent;
274 EFocusCause FocusChangeReason;
275 EUINavigation NavigationType;
276 ENavigationGenesis NavigationGenesis;
277 ENavigationSource NavigationSource;
278 uint32 bReleaseMouseCapture : 1;
279 uint32 bSetUserFocus : 1;
280 uint32 bReleaseUserFocus : 1;
281 uint32 bAllUsers : 1;
282 uint32 bShouldReleaseMouseLock : 1;
283 uint32 bUseHighPrecisionMouse : 1;
284 uint32 bPreventThrottling : 1;
285 uint32 bEndDragDrop : 1;
286};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EFocusCause
Definition Events.h:25
ENavigationGenesis
Definition SlateEnums.h:158
EUINavigation
Definition SlateEnums.h:99
ENavigationSource
Definition SlateEnums.h:145
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition DragAndDrop.h:21
bool bIsHandled
Definition ReplyBase.h:33
Definition Reply.h:24
SLATECORE_API FReply(const FReply &)
bool ShouldReleaseMouse() const
Definition Reply.h:166
FReply & ClearUserFocus(bool bInAllUsers=false)
Definition Reply.h:54
TSharedPtr< SWidget > GetDetectDragRequest() const
Definition Reply.h:217
TSharedPtr< SWidget > GetMouseLockWidget() const
Definition Reply.h:187
SLATECORE_API FReply & SetMousePos(const FIntPoint &NewMousePos)
Definition Reply.cpp:34
SLATECORE_API FReply & CancelFocusRequest()
Definition Reply.cpp:60
FReply & ReleaseMouseLock()
Definition Reply.h:103
SLATECORE_API FString ToString()
Definition Reply.cpp:69
ENavigationSource GetNavigationSource() const
Definition Reply.h:205
bool ShouldSetUserFocus() const
Definition Reply.h:169
FKey GetDetectDragRequestButton() const
Definition Reply.h:220
FReply & BeginDragDrop(TSharedRef< FDragDropOperation > InDragDropContent)
Definition Reply.h:143
EUINavigation GetNavigationType() const
Definition Reply.h:199
FReply & ReleaseMouseCapture()
Definition Reply.h:114
const TSharedPtr< FDragDropOperation > & GetDragDropContent() const
Definition Reply.h:211
FReply & UseHighPrecisionMouseMovement(TSharedRef< SWidget > InMouseCaptor)
Definition Reply.h:38
bool AffectsAllUsers() const
Definition Reply.h:175
FReply & SetNavigation(TSharedRef< SWidget > InNavigationDestination, const ENavigationGenesis InNavigationGenesis, const ENavigationSource InNavigationSource=ENavigationSource::FocusedWidget)
Definition Reply.h:80
EFocusCause GetFocusCause() const
Definition Reply.h:193
FReply & DetectDrag(const TSharedRef< SWidget > &DetectDragInMe, FKey MouseButton)
Definition Reply.h:129
SLATECORE_API FReply & operator=(const FReply &)
bool ShouldReleaseUserFocus() const
Definition Reply.h:172
TSharedPtr< SWidget > GetUserFocusRecepient() const
Definition Reply.h:190
static FReply Unhandled()
Definition Reply.h:241
FReply & EndDragDrop()
Definition Reply.h:150
TSharedPtr< SWidget > GetMouseCaptor() const
Definition Reply.h:196
bool ShouldUseHighPrecisionMouse() const
Definition Reply.h:178
const TOptional< FIntPoint > & GetRequestedMousePos() const
Definition Reply.h:223
SLATECORE_API FReply & SetUserFocus(TSharedRef< SWidget > GiveMeFocus, EFocusCause ReasonFocusIsChanging=EFocusCause::SetDirectly, bool bInAllUsers=false)
Definition Reply.cpp:40
bool ShouldEndDragDrop() const
Definition Reply.h:214
bool ShouldReleaseMouseLock() const
Definition Reply.h:181
FReply & LockMouseToWidget(TSharedRef< SWidget > InWidget)
Definition Reply.h:93
FReply & SetNavigation(EUINavigation InNavigationType, const ENavigationGenesis InNavigationGenesis, const ENavigationSource InNavigationSource=ENavigationSource::FocusedWidget)
Definition Reply.h:70
bool ShouldThrottle() const
Definition Reply.h:184
FReply & CaptureMouse(TSharedRef< SWidget > InMouseCaptor)
Definition Reply.h:28
ENavigationGenesis GetNavigationGenesis() const
Definition Reply.h:202
TSharedPtr< SWidget > GetNavigationDestination() const
Definition Reply.h:208
FReply & PreventThrottling()
Definition Reply.h:157
static FReply Handled()
Definition Reply.h:233
Definition SlateApplication.h:252
Definition SWidget.h:165
Definition ReplyBase.h:41
FReply & Me()
Definition ReplyBase.h:59
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 void Reset()
Definition SharedPointer.h:1544
Definition InputCoreTypes.h:50
Definition Optional.h:131
Definition IntPoint.h:25