Can't override base class detail customization

I have two classes, UBase and UDerived : UBase, both with their own details customization. If I add/hide properties of UBase within the UDerived customization I would expect that to override any configuration from the UBase customization. In fact, I was actually expecting that adding a customization for UDerived would mean that the UBase customization would be completely ignored for UDerived objects.

In practice, I end up with multiple copies of the properties showing in the details panel, and cannot find any way to even cancel the UBase customization actions and restart customizing from scratch.

Bug, missing feature or I’m just missing something/doing something I shouldn’t be?

Hey -

Can you post a screenshot of what you’re seeing in the editor? I’m not sure I clearly understand what you mean by multiple copies of properties showing. Are you saying that when you use the HideCategories property in the UCLASS() macro that it instead makes properties within the category show up twice?

I was able to use HideCategories in a child class who’s parent was based on Actor. Doing so I was able to hide the Actor, Input, and Rendering category. I did find however that trying to hide a category created in the parent class did not work for the child nor for the parent itself. This bug has been reported (UE-19743) for investigation.

Cheers

Hi .

I wasn’t referring to use of the HideCategories specifier, but direct customization as described [here][1]. To use my current example, I have a UMG chart class for which I created a customization. I also have a more specific type of chart, derived from the first, which adds some more properties and also treats some properties of the base class in a slightly different way. So I want a new customization for this class which has complete control over rearranging the details panel display.

As far as I can tell, the customizations for the base class and derived class just get chained together and applied in sequence. Below I tried showing a property from the base class in disabled state (just as an example) and as you can see, it gets displayed as specified by the base customization, before the derived class customization is applied below.

53307-customization.png

I attempted to use IDetailLayoutBuilder::HideProperty in the derived class customization, but it seems to have no effect.

Ideally it would be possible to adjust a base class customization in a derived one, but that might be rather hard to implement. But it should at least be possible to completely override it - to say ‘Use only the most derived/specific customization that’s registered for this class; ignore any that are registered for its base classes’. To me, that would make more sense as the default behaviour.

Hey -

I’m having a hard time reproducing your issue following the link you posted. Could you send a copy of your project for me to look at directly? If you can upload the project to drop box you can send me a private message on the forums with a link to the project for privacy.

Thanks

Hey -

I’ve not heard from you in a few days and will be marking this post as resolved for tracking purposes. If you are still having issues feel free to respond to my previous comment and we will continue to investigate.

Cheers