SProperyEditorClass.h has incorrect include paths

I’m trying to use the SPropertyEditorClass widget but the file SPropertyEditorClass.h has some incorrect include paths



// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once

#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "Misc/Attribute.h"
#include "Fonts/SlateFontInfo.h"
#include "Input/Reply.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Widgets/SWidget.h"
#include "Widgets/SCompoundWidget.h"
#include "Widgets/Input/SComboButton.h"
#include "EditorStyleSet.h"
#include "Presentation/PropertyEditor/PropertyEditor.h"                             <----INCORRECT PATH
#include "UserInterface/PropertyEditor/PropertyEditorConstants.h"           <----INCORRECT PATH
#include "PropertyCustomizationHelpers.h"



so I corrected them to:
(had to “break” the readonly lock on the file)



#include "PropertyEditor/Private/Presentation/PropertyEditor/PropertyEditor.h"
#include "PropertyEditor/Private/UserInterface/PropertyEditor/PropertyEditorConstants.h"


and now I’m getting linking errors:



2>PassiveTaskInlineConfigCustomization.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl SPropertyEditorClass::Construct(struct SPropertyEditorClass::FArguments const &,class TSharedPtr<class FPropertyEditor,0> const &)" (?Construct@SPropertyEditorClass@@QEAAXAEBUFArguments@1@AEBV?$TSharedPtr@VFPropertyEditor@@$0A@@@@Z) referenced in function "public: class TSharedRef<class ITableRow,0> __cdecl FPassiveTaskInlineConfigCustomization::GenerateValuesListRow(class TSharedPtr<struct FPropertyOverrideInfo,0>,class TSharedRef<class STableViewBase,0> const &)" (?GenerateValuesListRow@FPassiveTaskInlineConfigCustomization@@QEAA?AV?$TSharedRef@VITableRow@@$0A@@@anonymous_user_e71e0d8a?$TSharedPtr@UFPropertyOverrideInfo@@$0A@@@AEBV?$TSharedRef@VSTableViewBase@@$0A@@@@Z)
2>PassiveTaskInlineConfigCustomization.cpp.obj : error LNK2001: unresolved external symbol "private: virtual class FReply __cdecl SPropertyEditorClass::OnDrop(struct FGeometry const &,class FDragDropEvent const &)" (?OnDrop@SPropertyEditorClass@@EEAA?AVFReply@@AEBUFGeometry@@AEBVFDragDropEvent@@@Z)
2>PassiveTaskInlineConfigCustomization.cpp.obj : error LNK2001: unresolved external symbol "public: static class FName const PropertyEditorConstants::PropertyFontStyle" (?PropertyFontStyle@PropertyEditorConstants@@2VFName@@B)


This is my module’s Build.cs



PublicDependencyModuleNames.AddRange(new string] { "Core", "CoreUObject", "Engine", "SlateCore", "PropertyEditor",
            "DetailCustomizations", "Slate", "InputCore", "EditorStyle", "MessageLog", "UnrealEd" });


Engine version 4.21.1

Any ideas?

Yea i got same problem and i think problem is this header is in /private/ directory, theres another class from public directory named “SClassPropertyEntryBox” it actualy reflects “SPropertyEditorClass”, but one thing bad about it is that it doesn’t change class when u select it, so u have to recreate this widget every time by using delegate to update selected class variable u use as slate arguments while construct this widget. If u are doing it from DetailCustomization u can just call ForceRefreshDetalis right after u update that variable. Well, this works, even it looks like crutches i couldn’t find any other way to do it.