Files
UnrealEngineUWP/Engine/Source/Runtime/UMG/Private/Components/MultiLineEditableText.cpp
Chris Wood 8067d97a49 Removed appearance override properties from UMG widgets. Style property is now used.
[UE-14234] UMG widgets with overriding appearance properties always clobber the Style

#change Deprecated appearance properties on UWidgets that override the Style
#change Incremented the engine object version number and fixed up deprecated properties in OnLoad
#change Added sync'ing of Style properties in the UMG editor where missing. UMG wysiwyg needs to update in response to styling changes. Required adding of some SetStyle code to SWidgets here and there.

#codereview Nick.Darnell

[CL 2588458 by Chris Wood in Main branch]
2015-06-16 07:21:32 -04:00

124 lines
3.7 KiB
C++

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "UMGPrivatePCH.h"
#define LOCTEXT_NAMESPACE "UMG"
/////////////////////////////////////////////////////
// UMultiLineEditableText
UMultiLineEditableText::UMultiLineEditableText(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
SMultiLineEditableText::FArguments Defaults;
WidgetStyle = *Defaults._TextStyle;
bAutoWrapText = true;
static ConstructorHelpers::FObjectFinder<UFont> RobotoFontObj(TEXT("/Engine/EngineFonts/Roboto"));
Font_DEPRECATED = FSlateFontInfo(RobotoFontObj.Object, 12, FName("Bold"));
}
void UMultiLineEditableText::ReleaseSlateResources(bool bReleaseChildren)
{
Super::ReleaseSlateResources(bReleaseChildren);
MyMultiLineEditableText.Reset();
}
TSharedRef<SWidget> UMultiLineEditableText::RebuildWidget()
{
MyMultiLineEditableText = SNew(SMultiLineEditableText)
.TextStyle(&WidgetStyle)
.Justification(Justification)
.WrapTextAt( WrapTextAt )
.AutoWrapText( bAutoWrapText )
// .MinDesiredWidth(MinimumDesiredWidth)
// .IsCaretMovedWhenGainFocus(IsCaretMovedWhenGainFocus)
// .SelectAllTextWhenFocused(SelectAllTextWhenFocused)
// .RevertTextOnEscape(RevertTextOnEscape)
// .ClearKeyboardFocusOnCommit(ClearKeyboardFocusOnCommit)
// .SelectAllTextOnCommit(SelectAllTextOnCommit)
// .BackgroundImageSelected(BackgroundImageSelected ? TAttribute<const FSlateBrush*>(&BackgroundImageSelected->Brush) : TAttribute<const FSlateBrush*>())
// .BackgroundImageSelectionTarget(BackgroundImageSelectionTarget ? TAttribute<const FSlateBrush*>(&BackgroundImageSelectionTarget->Brush) : TAttribute<const FSlateBrush*>())
// .BackgroundImageComposing(BackgroundImageComposing ? TAttribute<const FSlateBrush*>(&BackgroundImageComposing->Brush) : TAttribute<const FSlateBrush*>())
// .CaretImage(CaretImage ? TAttribute<const FSlateBrush*>(&CaretImage->Brush) : TAttribute<const FSlateBrush*>())
.OnTextChanged(BIND_UOBJECT_DELEGATE(FOnTextChanged, HandleOnTextChanged))
.OnTextCommitted(BIND_UOBJECT_DELEGATE(FOnTextCommitted, HandleOnTextCommitted))
;
return BuildDesignTimeWidget( MyMultiLineEditableText.ToSharedRef() );
}
void UMultiLineEditableText::SynchronizeProperties()
{
Super::SynchronizeProperties();
MyMultiLineEditableText->SetText(Text);
// MyMultiLineEditableText->SetHintText(HintText);
// MyMultiLineEditableText->SetIsReadOnly(IsReadOnly);
// MyMultiLineEditableText->SetIsPassword(IsPassword);
// MyMultiLineEditableText->SetColorAndOpacity(ColorAndOpacity);
// TODO UMG Complete making all properties settable on SMultiLineEditableText
}
FText UMultiLineEditableText::GetText() const
{
if ( MyMultiLineEditableText.IsValid() )
{
return MyMultiLineEditableText->GetText();
}
return Text;
}
void UMultiLineEditableText::SetText(FText InText)
{
Text = InText;
if ( MyMultiLineEditableText.IsValid() )
{
MyMultiLineEditableText->SetText(Text);
}
}
void UMultiLineEditableText::HandleOnTextChanged(const FText& InText)
{
OnTextChanged.Broadcast(InText);
}
void UMultiLineEditableText::HandleOnTextCommitted(const FText& InText, ETextCommit::Type CommitMethod)
{
OnTextCommitted.Broadcast(InText, CommitMethod);
}
void UMultiLineEditableText::PostLoad()
{
if (GetLinkerUE4Version() < VER_UE4_DEPRECATE_UMG_STYLE_OVERRIDES)
{
if (Font_DEPRECATED.HasValidFont())
{
WidgetStyle.Font = Font_DEPRECATED;
Font_DEPRECATED = FSlateFontInfo();
}
}
}
#if WITH_EDITOR
const FSlateBrush* UMultiLineEditableText::GetEditorIcon()
{
return FUMGStyle::Get().GetBrush("Widget.MultiLineEditableText");
}
const FText UMultiLineEditableText::GetPaletteCategory()
{
return LOCTEXT("Primitive", "Primitive");
}
#endif
/////////////////////////////////////////////////////
#undef LOCTEXT_NAMESPACE