UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SMultiLineEditableText.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 "SlateGlobals.h"
8#include "Layout/Margin.h"
10#include "Input/CursorReply.h"
11#include "Input/Reply.h"
12#include "Layout/Visibility.h"
14#include "Styling/SlateTypes.h"
15#include "Styling/CoreStyle.h"
16#include "Framework/Text/IRun.h"
18#include "Widgets/SWidget.h"
22#if WITH_FANCY_TEXT
25#endif
26
29class FPaintArgs;
33enum class ETextShapingMethod : uint8;
34
35#if WITH_FANCY_TEXT
36
39
42{
43public:
44
47 {
48 public:
50 : Text(InText)
51 {
52 Text->BeginEditTransaction();
53 }
54
56 {
57 Text->EndEditTransaction();
58 };
59
60 private:
62 };
63
66
68 : _Text()
69 , _HintText()
70 , _SearchText()
71 , _Marshaller()
72 , _WrapTextAt( 0.0f )
75 , _TextStyle( &FCoreStyle::Get().GetWidgetStyle<FTextBlockStyle>( "NormalText" ) )
76 , _Font()
77 , _Margin( FMargin() )
78 , _LineHeightPercentage( 1.0f )
100 {
102 }
103
106
107
108 SLATE_ATTRIBUTE(FText, HintText)
109
110
111 SLATE_ATTRIBUTE(FText, SearchText)
112
113
115
116
117 SLATE_ATTRIBUTE(float, WrapTextAt)
118
119
122 SLATE_ATTRIBUTE(bool, AutoWrapText)
123
124
125 SLATE_ATTRIBUTE(ETextWrappingPolicy, WrappingPolicy)
126
127
129
130
132
133
134 SLATE_ATTRIBUTE(FMargin, Margin)
135
136
137 SLATE_ATTRIBUTE(float, LineHeightPercentage)
138
139
140 SLATE_ATTRIBUTE(bool, ApplyLineHeightToBottomLine)
141
142
143 SLATE_ATTRIBUTE(ETextJustify::Type, Justification)
144
145
146 SLATE_ATTRIBUTE(bool, IsReadOnly)
147
148
150
151
153
154
160 SLATE_EVENT(FOnIsTypedCharValid, OnIsTypedCharValid)
161
162
163 SLATE_EVENT(FOnBeginTextEdit, OnBeginTextEdit )
164
165
166 SLATE_EVENT(FOnTextChanged, OnTextChanged)
167
168
169 SLATE_EVENT(FOnTextCommitted, OnTextCommitted)
170
171
172 SLATE_ATTRIBUTE(bool, AllowMultiLine)
173
174
175 SLATE_ATTRIBUTE(bool, SelectAllTextWhenFocused)
176
177
179
180
182
183
184 SLATE_ATTRIBUTE(bool, RevertTextOnEscape)
185
186
187 SLATE_ATTRIBUTE(bool, ClearKeyboardFocusOnCommit)
188
189
190 SLATE_ATTRIBUTE(bool, AllowContextMenu)
191
192
193 SLATE_EVENT(FOnContextMenuOpening, OnContextMenuOpening)
194
195
197
198
200
201
202 SLATE_EVENT(FOnCursorMoved, OnCursorMoved)
203
204
205 SLATE_EVENT(FOnKeyChar, OnKeyCharHandler)
206
207
208 SLATE_EVENT(FOnKeyDown, OnKeyDownHandler)
209
210
212
213
214 SLATE_EVENT(FCreateSlateTextLayout, CreateSlateTextLayout)
215
216
218
219
220 SLATE_ARGUMENT(FVirtualKeyboardOptions, VirtualKeyboardOptions)
221
222
223 SLATE_ATTRIBUTE(EVirtualKeyboardTrigger, VirtualKeyboardTrigger)
224
225
226 SLATE_ATTRIBUTE(EVirtualKeyboardDismissAction, VirtualKeyboardDismissAction)
227
228
230
231
233
234
236
238
241
242 SLATE_API void Construct( const FArguments& InArgs );
243
247 SLATE_API void SetText(const TAttribute< FText >& InText);
248
254 SLATE_API FText GetText() const;
255
260 SLATE_API FText GetPlainText() const;
261
267 SLATE_API void GetCurrentTextLine(FString& OutTextLine) const;
268
275 SLATE_API void GetTextLine(const int32 InLineIndex, FString& OutTextLine) const;
276
280 SLATE_API void SetHintText(const TAttribute< FText >& InHintText);
281
283 SLATE_API FText GetHintText() const;
284
286 SLATE_API void SetSearchText(const TAttribute<FText>& InSearchText);
287
289 SLATE_API FText GetSearchText() const;
290
292 SLATE_API int32 GetSearchResultIndex() const;
293
295 SLATE_API int32 GetNumSearchResults() const;
296
298 SLATE_API void SetTextStyle(const FTextBlockStyle* InTextStyle);
299
301 SLATE_API void SetFont(const TAttribute< FSlateFontInfo >& InNewFont);
302 SLATE_API FSlateFontInfo GetFont() const;
303
305 SLATE_API void SetTextShapingMethod(const TOptional<ETextShapingMethod>& InTextShapingMethod);
306
308 SLATE_API void SetTextFlowDirection(const TOptional<ETextFlowDirection>& InTextFlowDirection);
309
311 SLATE_API void SetWrapTextAt(const TAttribute<float>& InWrapTextAt);
312
314 SLATE_API void SetAutoWrapText(const TAttribute<bool>& InAutoWrapText);
315
317 SLATE_API void SetWrappingPolicy(const TAttribute<ETextWrappingPolicy>& InWrappingPolicy);
318
320 SLATE_API void SetLineHeightPercentage(const TAttribute<float>& InLineHeightPercentage);
321
323 SLATE_API void SetApplyLineHeightToBottomLine(const TAttribute<bool>& InApplyLineHeightToBottomLine);
324
326 SLATE_API void SetMargin(const TAttribute<FMargin>& InMargin);
327
329 SLATE_API void SetJustification(const TAttribute<ETextJustify::Type>& InJustification);
330
333
335 SLATE_API void SetAllowContextMenu(const TAttribute< bool >& InAllowContextMenu);
336
339
345 SLATE_API void SetSelectWordOnMouseDoubleClick(const TAttribute<bool>& InSelectWordOnMouseDoubleClick);
346
348 SLATE_API void SetIsReadOnly(const TAttribute< bool >& InIsReadOnly);
349
351 SLATE_API int32 GetTextLineCount();
352
358 SLATE_API void SetSelectAllTextWhenFocused(const TAttribute<bool>& InSelectAllTextWhenFocused);
359
366
372 SLATE_API void SetRevertTextOnEscape(const TAttribute<bool>& InRevertTextOnEscape);
373
379 SLATE_API void SetClearKeyboardFocusOnCommit(const TAttribute<bool>& InClearKeyboardFocusOnCommit);
380
382 SLATE_API bool AnyTextSelected() const;
383
385 SLATE_API void SelectAllText();
386
389
391 SLATE_API void ClearSelection();
392
394 SLATE_API FText GetSelectedText() const;
395
397 SLATE_API FTextSelection GetSelection() const;
398
400 SLATE_API void DeleteSelectedText();
401
403 SLATE_API void InsertTextAtCursor(const FText& InText);
404 SLATE_API void InsertTextAtCursor(const FString& InString);
405
407 SLATE_API void InsertRunAtCursor(TSharedRef<IRun> InRun);
408
410 SLATE_API void GoTo(const FTextLocation& NewLocation);
411
413 SLATE_API void GoTo(const ETextLocation NewLocation);
414
416 SLATE_API void ScrollTo(const FTextLocation& NewLocation);
417
419 SLATE_API void ScrollTo(const ETextLocation NewLocation);
420
422 SLATE_API void ApplyToSelection(const FRunInfo& InRunInfo, const FTextBlockStyle& InStyle);
423
425 SLATE_API void BeginSearch(const FText& InSearchText, const ESearchCase::Type InSearchCase = ESearchCase::IgnoreCase, const bool InReverse = false);
426
428 SLATE_API void AdvanceSearch(const bool InReverse = false);
429
431 SLATE_API TSharedPtr<const IRun> GetRunUnderCursor() const;
432
434 SLATE_API TArray<TSharedRef<const IRun>> GetSelectedRuns() const;
435
437 SLATE_API FTextLocation GetCursorLocation() const;
438
440 SLATE_API TCHAR GetCharacterAt(const FTextLocation& Location) const;
441
444
447
449 SLATE_API void Refresh();
450
456 void SetOnKeyCharHandler(FOnKeyChar InOnKeyCharHandler)
457 {
458 OnKeyCharHandler = InOnKeyCharHandler;
459 }
460
466 void SetOnKeyDownHandler(FOnKeyDown InOnKeyDownHandler)
467 {
468 OnKeyDownHandler = InOnKeyDownHandler;
469 }
470
474 SLATE_API void ForceScroll(int32 UserIndex, float ScrollAxisMagnitude);
475
476protected:
477 //~ Begin SWidget Interface
478 SLATE_API virtual void Tick( const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime ) override;
479 SLATE_API virtual int32 OnPaint( const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const override;
480 SLATE_API virtual void CacheDesiredSize(float LayoutScaleMultiplier) override;
481 SLATE_API virtual FVector2D ComputeDesiredSize(float LayoutScaleMultiplier) const override;
482 SLATE_API virtual FChildren* GetChildren() override;
483 SLATE_API virtual void OnArrangeChildren( const FGeometry& AllottedGeometry, FArrangedChildren& ArrangedChildren ) const override;
484 SLATE_API virtual bool SupportsKeyboardFocus() const override;
486 SLATE_API virtual FReply OnKeyDown( const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent ) override;
487 SLATE_API virtual FReply OnKeyUp( const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent ) override;
489 SLATE_API virtual void OnFocusLost( const FFocusEvent& InFocusEvent ) override;
492 SLATE_API virtual FReply OnMouseMove( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent ) override;
493 SLATE_API virtual FReply OnMouseWheel( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent ) override;
495 SLATE_API virtual FCursorReply OnCursorQuery( const FGeometry& MyGeometry, const FPointerEvent& CursorEvent ) const override;
496 SLATE_API virtual bool IsInteractable() const override;
497 SLATE_API virtual bool ComputeVolatility() const override;
498 //~ End SWidget Interface
499
500protected:
503
505 SLATE_API bool IsRightClickScrolling() const;
506
507public:
508 //~ Begin ISlateEditableTextWidget Interface
509 SLATE_API virtual bool IsTextReadOnly() const override;
510 SLATE_API virtual bool IsTextPassword() const override;
511 SLATE_API virtual bool IsMultiLineTextEdit() const override;
512 SLATE_API virtual bool IsIntegratedKeyboardEnabled() const override;
513 //~ End ISlateEditableTextWidget Interface
514
515protected:
516 //~ Begin ISlateEditableTextWidget Interface
517 SLATE_API virtual bool ShouldJumpCursorToEndWhenFocused() const override;
518 SLATE_API virtual bool ShouldSelectAllTextWhenFocused() const override;
519 SLATE_API virtual bool ShouldClearTextSelectionOnFocusLoss() const override;
520 SLATE_API virtual bool ShouldRevertTextOnEscape() const override;
521 SLATE_API virtual bool ShouldClearKeyboardFocusOnCommit() const override;
522 SLATE_API virtual bool ShouldSelectAllTextOnCommit() const override;
523 SLATE_API virtual bool ShouldSelectWordOnMouseDoubleClick() const override;
524 SLATE_API virtual bool CanInsertCarriageReturn() const override;
525 SLATE_API virtual bool CanTypeCharacter(const TCHAR InChar) const override;
526 SLATE_API virtual void EnsureActiveTick() override;
527 SLATE_API virtual EKeyboardType GetVirtualKeyboardType() const override;
534 SLATE_API virtual void OnBeginTextEdit(const FText& InText) override;
535 SLATE_API virtual void OnTextChanged(const FText& InText) override;
536 SLATE_API virtual void OnTextCommitted(const FText& InText, const ETextCommit::Type InTextAction) override;
537 SLATE_API virtual void OnCursorMoved(const FTextLocation& InLocation) override;
538 SLATE_API virtual float UpdateAndClampHorizontalScrollBar(const float InViewOffset, const float InViewFraction, const EVisibility InVisiblityOverride) override;
539 SLATE_API virtual float UpdateAndClampVerticalScrollBar(const float InViewOffset, const float InViewFraction, const EVisibility InVisiblityOverride) override;
540 //~ End ISlateEditableTextWidget Interface
541
542protected:
545
547 SLATE_API void EndEditTransaction();
548
549protected:
551 TUniquePtr<FSlateEditableTextLayout> EditableTextLayout;
552
555
557 TAttribute<bool> bSelectAllTextWhenFocused;
558
561
563 TAttribute<bool> bSelectWordOnMouseDoubleClick;
564
566 TAttribute<bool> bRevertTextOnEscape;
567
569 TAttribute<bool> bClearKeyboardFocusOnCommit;
570
572 TAttribute<bool> bAllowContextMenu;
573
575 TAttribute<bool> bIsReadOnly;
576
578 FOnContextMenuOpening OnContextMenuOpening;
579
581 FOnIsTypedCharValid OnIsTypedCharValid;
582
584 FOnBeginTextEdit OnBeginTextEditCallback;
585
587 FOnTextChanged OnTextChangedCallback;
588
590 FOnTextCommitted OnTextCommittedCallback;
591
594
597
600
603
606
608 TSharedPtr<FExtender> MenuExtender;
609
612
614 TWeakPtr<FActiveTimerHandle> ActiveTickTimer;
615
617 float AmountScrolledWhileRightMouseDown;
618
621
623 FVector2f SoftwareCursorPosition;
624
626 FOnKeyChar OnKeyCharHandler;
627
629 FOnKeyDown OnKeyDownHandler;
630
632 FVirtualKeyboardOptions VirtualKeyboardOptions;
633
635 TAttribute<EVirtualKeyboardTrigger> VirtualKeyboardTrigger;
636
638 TAttribute<EVirtualKeyboardDismissAction> VirtualKeyboardDismissAction;
639};
640
641#endif //WITH_FANCY_TEXT
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
#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_EVENT(DelegateName, EventName)
Definition DeclarativeSyntaxSupport.h:458
#define SLATE_END_ARGS()
Definition DeclarativeSyntaxSupport.h:116
#define SLATE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:208
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
return true
Definition ExternalRpcRegistry.cpp:601
ETextShapingMethod
Definition FontCache.h:52
EVirtualKeyboardDismissAction
Definition ISlateEditableTextWidget.h:66
EVirtualKeyboardTrigger
Definition ISlateEditableTextWidget.h:57
ETextLocation
Definition ISlateEditableTextWidget.h:40
EKeyboardType
Definition IVirtualKeyboardEntry.h:12
void Construct(const FArguments &InArgs)
ETextOverflowPolicy
Definition SlateTypes.h:79
ETextFlowDirection
Definition TextLayout.h:81
ETextWrappingPolicy
Definition TextLayout.h:67
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition ActiveTimerHandle.h:12
Definition ArrangedChildren.h:15
Definition ChildrenBase.h:27
Definition CoreStyle.h:15
Definition CursorReply.h:16
Definition PaintArgs.h:23
Definition Reply.h:24
Definition SlateEditableTextLayout.h:36
Definition SlateRect.h:26
Definition DrawElements.h:220
Definition TextLayout.h:150
Definition Text.h:385
Definition WidgetStyle.h:15
Definition IRun.h:128
Definition ISlateEditableTextWidget.h:202
virtual void OnTextCommitted(const FText &InText, const ETextCommit::Type InTextAction)=0
virtual bool ShouldClearKeyboardFocusOnCommit() const =0
virtual float UpdateAndClampHorizontalScrollBar(const float InViewOffset, const float InViewFraction, const EVisibility InVisiblityOverride)=0
virtual void EnsureActiveTick()=0
virtual TSharedPtr< SWidget > BuildContextMenuContent() const =0
virtual void OnTextChanged(const FText &InText)=0
virtual bool CanTypeCharacter(const TCHAR InChar) const =0
virtual void OnBeginTextEdit(const FText &InText)=0
virtual bool IsTextReadOnly() const =0
virtual bool IsMultiLineTextEdit() const =0
virtual EVirtualKeyboardDismissAction GetVirtualKeyboardDismissAction() const =0
virtual bool ShouldJumpCursorToEndWhenFocused() const =0
virtual bool ShouldSelectWordOnMouseDoubleClick() const =0
virtual bool ShouldSelectAllTextWhenFocused() const =0
virtual bool IsTextPassword() const =0
virtual bool CanInsertCarriageReturn() const =0
virtual bool ShouldSelectAllTextOnCommit() const =0
virtual TSharedRef< SWidget > GetSlateWidget()=0
virtual bool ShouldClearTextSelectionOnFocusLoss() const =0
virtual bool IsIntegratedKeyboardEnabled() const =0
virtual TSharedPtr< SWidget > GetSlateWidgetPtr()=0
virtual EVirtualKeyboardTrigger GetVirtualKeyboardTrigger() const =0
virtual void OnCursorMoved(const FTextLocation &InLocation)=0
virtual bool ShouldRevertTextOnEscape() const =0
virtual EKeyboardType GetVirtualKeyboardType() const =0
virtual FVirtualKeyboardOptions GetVirtualKeyboardOptions() const =0
virtual float UpdateAndClampVerticalScrollBar(const float InViewOffset, const float InViewFraction, const EVisibility InVisiblityOverride)=0
Definition ITextLayoutMarshaller.h:12
Definition SScrollBar.h:29
Definition SWidget.h:165
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 OnKeyDown(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent)
Definition SWidget.cpp:412
virtual SLATECORE_API FReply OnKeyChar(const FGeometry &MyGeometry, const FCharacterEvent &InCharacterEvent)
Definition SWidget.cpp:402
virtual SLATECORE_API FReply OnKeyUp(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent)
Definition SWidget.cpp:427
virtual SLATECORE_API FReply OnMouseButtonDown(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:451
virtual SLATECORE_API FReply OnMouseWheel(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:533
virtual bool IsInteractable() const
Definition SWidget.h:954
virtual SLATECORE_API bool SupportsKeyboardFocus() const
Definition SWidget.cpp:954
virtual SLATECORE_API void CacheDesiredSize(float InLayoutScaleMultiplier)
Definition SWidget.cpp:943
virtual SLATECORE_API FReply OnMouseButtonUp(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:463
virtual SLATECORE_API FReply OnMouseMove(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent)
Definition SWidget.cpp:475
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 FVector2D ComputeDesiredSize(float LayoutScaleMultiplier) const =0
virtual SLATECORE_API void OnFocusLost(const FFocusEvent &InFocusEvent)
Definition SWidget.cpp:394
Definition Array.h:670
Definition Attribute.h:17
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition SharedPointer.h:1295
Definition GenericApplication.h:30
uint8 Type
Definition GenericApplication.h:31
Definition CString.h:19
Type
Definition SlateEnums.h:291
Definition TextLayout.h:26
Type
Definition TextLayout.h:28
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
@ false
Definition radaudio_common.h:23
Definition Visibility.h:12
Definition Events.h:606
Definition Events.h:51
Definition Geometry.h:40
Definition Events.h:431
Definition Margin.h:17
Definition Events.h:695
Definition IRun.h:14
Definition SlateEditableTextLayout.cpp:27
Definition SlateFontInfo.h:147
Definition SlateTypes.h:326
Definition TextLayout.h:100
Definition IVirtualKeyboardEntry.h:33
Definition Optional.h:131