Delegates are not executed on FSettingsSection if the settings object class uses default config

Title says it all really.

Due to the following code in SSettingsEditor.cpp:

if (Section->GetSettingsObject()->GetClass()->HasAnyClassFlags(CLASS_DefaultConfig) && !bIsArrayOrArrayElement && !bIsSetOrSetElement && !bIsMapOrMapElement)
			{
				Section->GetSettingsObject()->UpdateSinglePropertyInConfigFile(PropertyThatChanged->GetActiveMemberNode()->GetValue(), Section->GetSettingsObject()->GetDefaultConfigFilename());
			}
			else
			{
				Section->Save();
			}

The ModifiedDelegate and SaveDelegate are not executed if the class has the DefaultConfig metadata specifier, because Section->Save is never called.

Hello RotemS,

Sorry for the delay in getting back to you on this issue. I looked up the code you mentioned in 4.18.3, and it does not appear to have changed at all. However, when I ran some tests with making changes to some settings that are in a class that uses the DefaultConfig specifier, the changed settings did appear to be correctly saved. I am unsure what the specific issue is that you were experiencing. If you are still having trouble with this issue, could you please elaborate on the issue and what you are doing when you see it happen?

Hi , thanks for getting back to me. I am not saying that the section is not saved, I am saying that the ModifiedDelegate and SaveDelegate are not called. In your tests were the delegates called?

The delegates in my test were unbound, but there was no indication that they would have been executed in this case. The only time Save() would be called was if the setting that was changed was an Array, a Map, or a Set (or the class did not use the DefaultConfig specifier). It is not clear why there is a difference in how setting changes happen in these instances, and this code does not appear to have had any significant changes for several years.

I have entered UE-55431 to have this investigated further.

Thanks for looking into it.