// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Internationalization/Text.h" class FDragDropOperation; class UWidget; class UMGEDITOR_API IWidgetDragDropExtension { public: virtual ~IWidgetDragDropExtension() { } virtual bool ShouldPreventDropOnTarget(const UWidget* Target, const TSharedPtr& DragDropOp) const = 0; virtual FText GetDropFailureText(const UWidget* Target, const TSharedPtr& DragDropOp) const = 0; }; /** * Drag & drop extensibility manager holds a list of registered drag and drop extensions. */ class UMGEDITOR_API FWidgetDragDropExtensibilityManager { public: void AddExtension(const TSharedRef& Extension) { if (ensure(!Extensions.Contains(Extension))) { Extensions.Add(Extension); } } void RemoveExtension(const TSharedRef& Extension) { int32 NumRemoved = Extensions.RemoveSingleSwap(Extension); ensure(NumRemoved == 1); } TArrayView> GetExtensions() const { return Extensions; } private: TArray> Extensions; }; /** Indicates that a class can extend drag & drop functionality */ class IHasWidgetDragDropExtensibility { public: virtual TSharedPtr GetWidgetDragDropExtensibilityManager() = 0; };