Description

When using a DataTable based on a structure that includes TArray or TMap, if a row is not selected, the memory usage will continue to increase.

This is because in SDetailsViewBase::Tick, ForceRefresh() is called continuously due to Result == EPropertyDataValidationResult::ObjectInvalid.

To solve this issue, you can stop the Tick of the DetailView when it is not selected, as shown in the following code.

void SRowEditor::Restore()
{
...
    // add
    StructureDetailsView->GetWidget()->SetCanTick(!SelectedName->IsNone());

    RowSelectedCallback.ExecuteIfBound(FinalName);
} 
Steps to Reproduce
  1. Create Struct having some TArray and TMap
  2. Create Datatable based on 1
  3. Open 2
  4. Click an empty spot on DataTable Editor to unselect the row

result : memory usage keeps increasing

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-183526 in the post.

0
Login to Vote

Backlogged
ComponentUE - Editor - Workflow Systems
Affects Versions5.05.1
CreatedApr 18, 2023
UpdatedJan 19, 2024