Files
UnrealEngineUWP/Engine/Source/Developer/AutomationDriver/Private/Locators/SlateWidgetLocatorByDelegate.cpp
bryan sefcik a3dddc6630 Pass 1 on Developer include fixes:
Removed redundant private include paths from build.cs files.
Fixed include paths to be relative to the private or public folders.
Hid or removed includes that reached into other private module folders.
Updated PublicInclude paths when necessary.

#jira
#preflight 631e281694758d0bf2ea1399

[CL 21960082 by bryan sefcik in ue5-main branch]
2022-09-11 18:32:18 -04:00

118 lines
2.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Locators/SlateWidgetLocatorByDelegate.h"
#include "SlateWidgetElement.h"
#include "IElementLocator.h"
#include "Framework/Application/SlateApplication.h"
class FSlateWidgetLocatorByWidgetDelegate
: public IElementLocator
{
public:
virtual ~FSlateWidgetLocatorByWidgetDelegate()
{ }
virtual FString ToDebugString() const
{
FString DelegateName;
#if USE_DELEGATE_TRYGETBOUNDFUNCTIONNAME
DelegateName = Delegate.TryGetBoundFunctionName().ToString();
#endif
return TEXT("[By::Delegate] ") + DelegateName;
}
virtual void Locate(TArray<TSharedRef<IApplicationElement>>& OutElements) const override
{
check(IsInGameThread());
TArray<TSharedRef<SWidget>> Widgets;
Delegate.Execute(Widgets);
for (const TSharedRef<SWidget>& Widget : Widgets)
{
FWidgetPath WidgetPath;
if (FSlateApplication::Get().FindPathToWidget(Widget, WidgetPath))
{
OutElements.Add(FSlateWidgetElementFactory::Create(WidgetPath));
}
}
}
private:
FSlateWidgetLocatorByWidgetDelegate(
const FLocateSlateWidgetElementDelegate& InDelegate)
: Delegate(InDelegate)
{ }
private:
FLocateSlateWidgetElementDelegate Delegate;
friend FSlateWidgetLocatorByDelegateFactory;
};
TSharedRef<IElementLocator, ESPMode::ThreadSafe> FSlateWidgetLocatorByDelegateFactory::Create(
const FLocateSlateWidgetElementDelegate& Delegate)
{
return MakeShareable(new FSlateWidgetLocatorByWidgetDelegate(Delegate));
}
class FSlateWidgetLocatorByWidgetPathDelegate
: public IElementLocator
{
public:
virtual ~FSlateWidgetLocatorByWidgetPathDelegate()
{ }
virtual FString ToDebugString() const
{
FString DelegateName;
#if USE_DELEGATE_TRYGETBOUNDFUNCTIONNAME
DelegateName = Delegate.TryGetBoundFunctionName().ToString();
#endif
return TEXT("[By::Delegate] ") + DelegateName;
}
virtual void Locate(TArray<TSharedRef<IApplicationElement>>& OutElements) const override
{
check(IsInGameThread());
TArray<FWidgetPath> WidgetPaths;
Delegate.Execute(WidgetPaths);
for (const FWidgetPath& WidgetPath : WidgetPaths)
{
if (WidgetPath.IsValid())
{
OutElements.Add(FSlateWidgetElementFactory::Create(WidgetPath));
}
}
}
private:
FSlateWidgetLocatorByWidgetPathDelegate(
const FLocateSlateWidgetPathElementDelegate& InDelegate)
: Delegate(InDelegate)
{ }
private:
FLocateSlateWidgetPathElementDelegate Delegate;
friend FSlateWidgetLocatorByDelegateFactory;
};
TSharedRef<IElementLocator, ESPMode::ThreadSafe> FSlateWidgetLocatorByDelegateFactory::Create(
const FLocateSlateWidgetPathElementDelegate& Delegate)
{
return MakeShareable(new FSlateWidgetLocatorByWidgetPathDelegate(Delegate));
}