@@ -884,6 +884,10 @@ bool EditorSettings::_is_default_text_editor_theme(String p_theme_name) {
884884 return p_theme_name == " default" || p_theme_name == " godot 2" || p_theme_name == " custom" ;
885885}
886886
887+ const String EditorSettings::_get_project_metadata_path () const {
888+ return EditorPaths::get_singleton ()->get_project_settings_dir ().path_join (" project_metadata.cfg" );
889+ }
890+
887891// PUBLIC METHODS
888892
889893EditorSettings *EditorSettings::get_singleton () {
@@ -1171,24 +1175,31 @@ void EditorSettings::add_property_hint(const PropertyInfo &p_hint) {
11711175// Metadata
11721176
11731177void EditorSettings::set_project_metadata (const String &p_section, const String &p_key, Variant p_data) {
1174- Ref<ConfigFile> cf = memnew (ConfigFile);
1175- String path = EditorPaths::get_singleton ()->get_project_settings_dir ().path_join (" project_metadata.cfg" );
1176- Error err;
1177- err = cf->load (path);
1178- ERR_FAIL_COND_MSG (err != OK && err != ERR_FILE_NOT_FOUND , " Cannot load editor settings from file '" + path + " '." );
1179- cf->set_value (p_section, p_key, p_data);
1180- err = cf->save (path);
1181- ERR_FAIL_COND_MSG (err != OK , " Cannot save editor settings to file '" + path + " '." );
1178+ const String path = _get_project_metadata_path ();
1179+
1180+ if (project_metadata.is_null ()) {
1181+ project_metadata.instantiate ();
1182+
1183+ Error err = project_metadata->load (path);
1184+ if (err != OK && err != ERR_FILE_NOT_FOUND ) {
1185+ ERR_PRINT (" Cannot load project metadata from file '" + path + " '." );
1186+ }
1187+ }
1188+ project_metadata->set_value (p_section, p_key, p_data);
1189+
1190+ Error err = project_metadata->save (path);
1191+ ERR_FAIL_COND_MSG (err != OK , " Cannot save project metadata to file '" + path + " '." );
11821192}
11831193
11841194Variant EditorSettings::get_project_metadata (const String &p_section, const String &p_key, Variant p_default) const {
1185- Ref<ConfigFile> cf = memnew (ConfigFile);
1186- String path = EditorPaths::get_singleton ()->get_project_settings_dir ().path_join (" project_metadata.cfg" );
1187- Error err = cf->load (path);
1188- if (err != OK ) {
1189- return p_default;
1195+ if (project_metadata.is_null ()) {
1196+ project_metadata.instantiate ();
1197+
1198+ const String path = _get_project_metadata_path ();
1199+ Error err = project_metadata->load (path);
1200+ ERR_FAIL_COND_V_MSG (err != OK && err != ERR_FILE_NOT_FOUND , p_default, " Cannot load project metadata from file '" + path + " '." );
11901201 }
1191- return cf ->get_value (p_section, p_key, p_default);
1202+ return project_metadata ->get_value (p_section, p_key, p_default);
11921203}
11931204
11941205void EditorSettings::set_favorites (const Vector<String> &p_favorites) {
0 commit comments