UDreamEditableText
A text field with no box: UMG's EditableText, where Native.TextInput is its EditableTextBox.
Inherits from UDreamTextInput.
Declared in Public/Controls/DreamEditableText.h.
A text field with no box: UMG's EditableText, where Native.TextInput is its EditableTextBox.
UMG ships four classes for one field -- EditableText, EditableTextBox, MultiLineEditableText, MultiLineEditableTextBox -- and the two axes it splits them on are "does it draw a box" and "does it take more than one line". This library already had the second axis as a property (UDreamTextInput::bMultiLine), so the only thing genuinely missing was the FIRST: a field that draws nothing behind the text.
So this is a UDreamTextInput whose face is not drawn, and nothing else. Every property, event, validator and key rule stays where it was, which is the point: Native.TextInput does not change meaning, and an author who wants the boxed one keeps writing exactly what they wrote before.
WHAT "NO BOX" MEANS, precisely, because half-answers here are how a control ends up with an invisible box that still tints on hover: the face's brush is cleared, and ALL FIVE of the behaviour's state colours are pushed transparent -- so there is no resting fill, no hover tint and no focus tint. The caret and the selection highlight are what show the field is live, which is what UMG's EditableText does too. The style's padding, font, text colour and caret colour all still apply: a borderless field is still a styled one.
Compared with UMG
Every Blueprint-facing member of the UMG class, and where it went. adopt: same name, same meaning. map: here under another name or on another type. reject: deliberately absent, with the reason.
| UMG | Member | Status | Here | Note |
|---|---|---|---|---|
UEditableText | Text | map | Text | Inherited from UDreamTextInput, of which the borderless field is a subclass with its face switched off. FString; see EditableTextBox.json. |
UEditableText | HintText | map | Placeholder | GetHintText/SetHintText forward to it. |
UEditableText | WidgetStyle | map | Style | The same FDreamTextInputStyle as the boxed field: the borderless one differs by clearing the face, not by having a different style. |
UEditableText | IsReadOnly | map | bReadOnly | |
UEditableText | IsPassword | map | DisplayType | Get/SetIsPassword are the boolean spelling over it. |
UEditableText | MinimumDesiredWidth | adopt | MinimumDesiredWidth | |
UEditableText | IsCaretMovedWhenGainFocus | map | bIsCaretMovedWhenGainFocus | |
UEditableText | SelectAllTextWhenFocused | map | bSelectAllWhenActivateInput | The library's existing spelling of the same moment. |
UEditableText | RevertTextOnEscape | map | bRevertTextOnEscape | |
UEditableText | ClearKeyboardFocusOnCommit | map | bClearKeyboardFocusOnCommit | Default TRUE where UMG's is false; see EditableTextBox.json. |
UEditableText | SelectAllTextOnCommit | map | bSelectAllTextOnCommit | |
UEditableText | AllowContextMenu | map | bAllowContextMenu | |
UEditableText | KeyboardType | adopt | KeyboardType | |
UEditableText | VirtualKeyboardOptions | adopt | VirtualKeyboardOptions | No Blueprint accessor; FVirtualKeyboardOptions has no BlueprintType, exactly as in UMG. |
UEditableText | VirtualKeyboardTrigger | adopt | VirtualKeyboardTrigger | |
UEditableText | VirtualKeyboardDismissAction | adopt | VirtualKeyboardDismissAction | |
UEditableText | Justification | adopt | Justification | EDreamUITextParagraphHorizontalAlign, the library's one paragraph-alignment enum. |
UEditableText | OverflowPolicy | map | OverflowPolicy | ETextOverflowPolicy, speaking only while nobody is editing -- see EditableTextBox.json for why the line mode owns the paragraph's overflow during an edit. Clip by default. |
UEditableText | ShapedTextOptions | map | TextFlowDirection | EDreamTextFlowDirection is UMG's TextFlowDirection; TextShapingMethod is compile-time here (WITH_HARFBUZZ), not per widget. |
UEditableText | OnTextChanged | map | OnTextChanged | Carries FString. |
UEditableText | OnTextCommitted | map | OnTextCommitted | Without UMG's ETextCommit; see EditableTextBox.json. |
UEditableText | GetText | map | GetText | Returns FString. |
UEditableText | SetText | map | SetText | Takes FString. |
UEditableText | SetIsPassword | adopt | SetIsPassword | |
UEditableText | GetHintText | adopt | GetHintText | Forwards to GetPlaceholder. |
UEditableText | SetHintText | adopt | SetHintText | Forwards to SetPlaceholder. |
UEditableText | SetMinimumDesiredWidth | adopt | SetMinimumDesiredWidth | SetMinDesiredWidth is here too, UMG's other spelling of it, forwarding to the same implementation. |
UEditableText | SetIsReadOnly | adopt | SetIsReadOnly | |
UEditableText | GetJustification | adopt | GetJustification | |
UEditableText | SetJustification | adopt | SetJustification | |
UEditableText | SetTextOverflowPolicy | adopt | SetTextOverflowPolicy | Forwards to UUITextInput::SetOverflowPolicy, the one writer of the paragraph's overflow. |
UEditableText | GetFont | map | FDreamTextInputStyle::Font | A font here is a font DATA ASSET (UDreamUIFontData_BaseObject), not an FSlateFontInfo: the size is Style.FontSize and the outline is in the text style, and the three together are what UMG packs into one struct. GetFont/SetFont read and write Style.Font, so the typeface obeys StyleSource like the rest of the look. |
UEditableText | SetFont | map | FDreamTextInputStyle::Font | Writes Style.Font and re-pushes. Null means "leave the paragraph on the font it has", which is every field that exists today -- a style only ever adds a typeface, it cannot take one away. |
UEditableText | SetFontMaterial | map | UDreamText::SetOverrideMaterial | ONE material for the whole paragraph rather than one for the font face, because that is what the text renderer takes. The control forwards it (SetFontMaterial/GetFontMaterial) onto the VALUE's paragraph only -- a material meant for a password field's glyphs has no business on the words "Enter your name". |
UEditableText | SetFontOutlineMaterial | reject | The outline and the glyph face are drawn by ONE pass of one SDF material here -- the outline is a distance threshold inside it, not a second draw with its own material. There is no separate channel for a material to be assigned to. | |
UEditableText | ToggleVirtualKeyboard | map | UUITextInput::ActivateInput | Raising the keyboard here IS beginning the edit: ActivateInput summons it (subject to VirtualKeyboardTrigger) and DeactivateInput puts it away. There is no keyboard to toggle independently of the edit that needs it. |
UEditableText | EnableIntegratedKeyboard | reject | Slate's integrated keyboard is an in-viewport keyboard WIDGET the platform layer swaps in for consoles. This library draws its own UI in world space and has no such widget, nor a platform road that would supply one. | |
UEditableText | FontFacesLoadingPaintPolicy | reject | No asynchronous typeface-face load to paint around: the library renders from its own font data assets. | |
UEditableText | OnAllFontFacesFinishLoading | reject | Same reason as FontFacesLoadingPaintPolicy. |