// Copyright Epic Games, Inc. All Rights Reserved. #include "Extensions/UIComponentContainerDesignerExtension.h" #include "Blueprint/UserWidget.h" #include "Slate/SObjectWidget.h" #include "Extensions/UIComponentContainer.h" #include "Extensions/UIComponentWidgetBlueprintGeneratedClassExtension.h" #include "WidgetBlueprint.h" #include "UIComponentUtils.h" #include "UIComponentWidgetBlueprintExtension.h" TSharedRef FUIComponentContainerDesignerExtensionFactory::CreateDesignerExtension() const { return StaticCastSharedRef(MakeShared()); } /** Called every time the content of the designer changed. */ void FUIComponentContainerDesignerExtension::PreviewContentCreated(UUserWidget* PreviewWidget) { const UWidgetBlueprint* WidgetBlueprint = Blueprint.Get(); if (WidgetBlueprint == nullptr || PreviewWidget == nullptr) { return; } // Here we force to recreate the PreviewWidget Extension from the WidgetBlueprint Extension to make sure they are in sync if (UUIComponentWidgetBlueprintExtension* Extension = UUIComponentWidgetBlueprintExtension::GetExtension(WidgetBlueprint)) { Extension->GetOrCreateExtension(PreviewWidget); } } void FUIComponentContainerDesignerExtension::PreviewContentChanged(TSharedRef NewContent) { const UWidgetBlueprint* WidgetBlueprint = Blueprint.Get(); if (NewContent == SNullWidget::NullWidget || WidgetBlueprint == nullptr) { return; } if (UUIComponentWidgetBlueprintExtension* Extension = UUIComponentWidgetBlueprintExtension::GetExtension(WidgetBlueprint)) { const SObjectWidget* ObjectWidget = StaticCastSharedPtr(NewContent.ToSharedPtr()).Get(); if (UUserWidget* PreviewWidget = ObjectWidget ? ObjectWidget->GetWidgetObject() : nullptr) { Extension->VerifyContainer(PreviewWidget); } } }