void UCanvasPanelSlot::PostEditChangeChainProperty(struct FPropertyChangedChainEvent& PropertyChangedEvent) { SynchronizeProperties(); static FName AnchorsProperty(TEXT("Anchors")); FEditPropertyChain::TDoubleLinkedListNode* AnchorNode = PropertyChangedEvent.PropertyChain.GetHead()->GetNextNode(); if ( !AnchorNode ) { return; } FEditPropertyChain::TDoubleLinkedListNode* LayoutDataNode = AnchorNode->GetNextNode(); if ( !LayoutDataNode ) { return; } UProperty* AnchorProperty = LayoutDataNode->GetValue(); if ( AnchorProperty && AnchorProperty->GetFName() == AnchorsProperty ) { RebaseLayout(); } Super::PostEditChangeProperty(PropertyChangedEvent); }
void FWidgetBlueprintEditor::MigrateFromChain(FEditPropertyChain* PropertyThatChanged, bool bIsModify) { UWidgetBlueprint* Blueprint = GetWidgetBlueprintObj(); UUserWidget* PreviewActor = GetPreview(); if ( PreviewActor != nullptr ) { for ( FWidgetReference& WidgetRef : SelectedWidgets ) { UWidget* PreviewWidget = WidgetRef.GetPreview(); if ( PreviewWidget ) { FName PreviewWidgetName = PreviewWidget->GetFName(); UWidget* TemplateWidget = Blueprint->WidgetTree->FindWidget(PreviewWidgetName); if ( TemplateWidget ) { FEditPropertyChain::TDoubleLinkedListNode* PropertyChainNode = PropertyThatChanged->GetHead(); MigratePropertyValue(PreviewWidget, TemplateWidget, PropertyChainNode, PropertyChainNode->GetValue(), bIsModify); } } } } }