Description

The comments describing ModifiedDelegate and SaveDelegate in FSettingsSection seem to indicate that the delegates should be executed after the settings section has been modified or should be saved. However, these delegates are only executed if the class containing the config values does not use the DefaultConfig specifier, or the config value is either an Array, Map, or Set. The only place these delegates would be executed is in the FSettingsSection::Save() function which is not called when some config values are changed.

Steps to Reproduce
  1. Create a new basic code project.
  2. Build the project in Visual Studio.
  3. Locate and open the SettingsSection.cpp file.
    • Engine/Source/Developer/Settings/Private/SettingsSection.cpp
  4. Place a breakpoint at the beginning of the FSettingsSection::Save() function.
  5. Launch the project using the Visual Studio debugger.
  6. Open the project settings window.
  7. Select the Paper 2D - Import section.
  8. Change a setting that is not an Array, Map, or Set (eg. check or uncheck Pick Best Material When Creating Sprites).
    • Note that the breakpoint is not hit.
  9. Change a setting that is an Array, Map, or Set (eg. add a new element to Normal Map Texture Suffixes).
    • Note that the breakpoint is hit.

RESULT:
Config values that are not an Array, Map, or Set do not follow a code path that results in the SettingsSection ModifiedDelegate and SaveDelegate being executed.

EXPECTED:
All config value changes result in the ModifiedDelegate and SaveDelegate being executed.

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

3
Login to Vote

Won't Fix
ComponentTools
Affects Versions4.17.24.18.34.20
CreatedFeb 22, 2018
ResolvedAug 18, 2021
UpdatedAug 18, 2021