34 lines
1.9 KiB
C++
34 lines
1.9 KiB
C++
// Lot STE-P1 (ERR-088) : pose du style d'une Text Box (UEditableTextBox) depuis un Blueprint, sans plantage en UE 5.8.
|
|
//
|
|
// En UE 5.8, la propriete UEditableTextBox::WidgetStyle a un setter natif (EditableTextBox.h:51, "Setter") : le noeud
|
|
// Blueprint "Set WidgetStyle" l'appelle avec une valeur temporaire de la VM, detruite juste apres l'appel. Or
|
|
// UEditableTextBox::SetWidgetStyle donne a Slate l'adresse de son parametre, SetStyle(&InStyle)
|
|
// (EditableTextBox.cpp:397), et SEditableTextBox garde ce pointeur (SEditableTextBox.cpp:113-132) : au Prepass suivant,
|
|
// la police est relue dans une memoire liberee et le jeu plante (FontCacheCompositeFont.cpp:93).
|
|
//
|
|
// SetEditableTextBoxStyle copie le style dans le membre WidgetStyle, puis rappelle SetWidgetStyle sur ce membre :
|
|
// Slate garde alors l'adresse du membre, qui vit autant que le widget UMG. Rien d'autre n'est reapplique (pas de
|
|
// SynchronizeProperties : texte, liaisons et infobulle restent intacts). Remplace les noeuds "Set WidgetStyle" de
|
|
// CharGen et StatMenu (flash rouge du nom refuse). Specification : Docs/Migration/etat/ST/STE/STE-P1-SPEC.md.
|
|
//
|
|
// Contournement d'un defaut du moteur : a garder tant que EditableTextBox.cpp passe &InStyle a Slate.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Kismet/BlueprintFunctionLibrary.h"
|
|
#include "Styling/SlateTypes.h"
|
|
#include "LPWidgetStyleLibrary.generated.h"
|
|
|
|
class UEditableTextBox;
|
|
|
|
UCLASS()
|
|
class LIFEPLAY_API ULPWidgetStyleLibrary : public UBlueprintFunctionLibrary
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** Pose le style de la Text Box comme le noeud Set WidgetStyle, sans laisser Slate pointer sur une temporaire ; rien si TextBox est None. */
|
|
UFUNCTION(BlueprintCallable, Category = "LifePlay|UI", meta = (DisplayName = "Set Widget Style (Text Box, LP)"))
|
|
static void SetEditableTextBoxStyle(UEditableTextBox* TextBox, const FEditableTextBoxStyle& Style);
|
|
};
|