@@ -873,6 +873,10 @@ bool EditorSettings::_is_default_text_editor_theme(String p_theme_name) {
873873 return p_theme_name == " default" || p_theme_name == " godot 2" || p_theme_name == " custom" ;
874874}
875875
876+ const String EditorSettings::_get_project_metadata_path () const {
877+ return EditorPaths::get_singleton ()->get_project_settings_dir ().path_join (" project_metadata.cfg" );
878+ }
879+
876880// PUBLIC METHODS
877881
878882EditorSettings *EditorSettings::get_singleton () {
@@ -1160,24 +1164,31 @@ void EditorSettings::add_property_hint(const PropertyInfo &p_hint) {
11601164// Metadata
11611165
11621166void EditorSettings::set_project_metadata (const String &p_section, const String &p_key, Variant p_data) {
1163- Ref<ConfigFile> cf = memnew (ConfigFile);
1164- String path = EditorPaths::get_singleton ()->get_project_settings_dir ().path_join (" project_metadata.cfg" );
1165- Error err;
1166- err = cf->load (path);
1167- ERR_FAIL_COND_MSG (err != OK && err != ERR_FILE_NOT_FOUND , " Cannot load editor settings from file '" + path + " '." );
1168- cf->set_value (p_section, p_key, p_data);
1169- err = cf->save (path);
1170- ERR_FAIL_COND_MSG (err != OK , " Cannot save editor settings to file '" + path + " '." );
1167+ const String path = _get_project_metadata_path ();
1168+
1169+ if (project_metadata.is_null ()) {
1170+ project_metadata.instantiate ();
1171+
1172+ Error err = project_metadata->load (path);
1173+ if (err != OK && err != ERR_FILE_NOT_FOUND ) {
1174+ ERR_PRINT (" Cannot load project metadata from file '" + path + " '." );
1175+ }
1176+ }
1177+ project_metadata->set_value (p_section, p_key, p_data);
1178+
1179+ Error err = project_metadata->save (path);
1180+ ERR_FAIL_COND_MSG (err != OK , " Cannot save project metadata to file '" + path + " '." );
11711181}
11721182
11731183Variant EditorSettings::get_project_metadata (const String &p_section, const String &p_key, Variant p_default) const {
1174- Ref<ConfigFile> cf = memnew (ConfigFile);
1175- String path = EditorPaths::get_singleton ()->get_project_settings_dir ().path_join (" project_metadata.cfg" );
1176- Error err = cf->load (path);
1177- if (err != OK ) {
1178- return p_default;
1184+ if (project_metadata.is_null ()) {
1185+ project_metadata.instantiate ();
1186+
1187+ const String path = _get_project_metadata_path ();
1188+ Error err = project_metadata->load (path);
1189+ ERR_FAIL_COND_V_MSG (err != OK && err != ERR_FILE_NOT_FOUND , p_default, " Cannot load project metadata from file '" + path + " '." );
11791190 }
1180- return cf ->get_value (p_section, p_key, p_default);
1191+ return project_metadata ->get_value (p_section, p_key, p_default);
11811192}
11821193
11831194void EditorSettings::set_favorites (const Vector<String> &p_favorites) {
0 commit comments