Skip to content

Commit

Permalink
Improve path validation in ScriptCreateDialog
Browse files Browse the repository at this point in the history
  • Loading branch information
KoBeWi committed Feb 28, 2025
1 parent 15ff450 commit a1ef1aa
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
16 changes: 10 additions & 6 deletions editor/script_create_dialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,16 +216,19 @@ bool ScriptCreateDialog::_validate_parent(const String &p_string) {

if (can_inherit_from_file && p_string.is_quoted()) {
String p = p_string.substr(1, p_string.length() - 2);
if (_validate_path(p, true) == "") {
if (_validate_path(p, true).is_empty()) {
return true;
}
}

return EditorNode::get_editor_data().is_type_recognized(p_string);
}

String ScriptCreateDialog::_validate_path(const String &p_path, bool p_file_must_exist) {
String ScriptCreateDialog::_validate_path(const String &p_path, bool p_file_must_exist, bool *r_path_valid) {
String p = p_path.strip_edges();
if (r_path_valid) {
*r_path_valid = false;
}

if (p.is_empty()) {
return TTR("Path is empty.");
Expand Down Expand Up @@ -263,6 +266,10 @@ String ScriptCreateDialog::_validate_path(const String &p_path, bool p_file_must
}
}

if (r_path_valid) {
*r_path_valid = true;
}

// Check file extension.
String extension = p.get_extension();
List<String> extensions;
Expand Down Expand Up @@ -491,10 +498,9 @@ void ScriptCreateDialog::_path_changed(const String &p_path) {
return;
}

is_path_valid = false;
is_new_script_created = true;

path_error = _validate_path(p_path, false);
path_error = _validate_path(p_path, false, &is_path_valid);
if (!path_error.is_empty()) {
validation_panel->update();
return;
Expand All @@ -506,8 +512,6 @@ void ScriptCreateDialog::_path_changed(const String &p_path) {
if (da->file_exists(p)) {
is_new_script_created = false;
}

is_path_valid = true;
validation_panel->update();
}

Expand Down
2 changes: 1 addition & 1 deletion editor/script_create_dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ class ScriptCreateDialog : public ConfirmationDialog {
void _built_in_pressed();
void _use_template_pressed();
bool _validate_parent(const String &p_string);
String _validate_path(const String &p_path, bool p_file_must_exist);
String _validate_path(const String &p_path, bool p_file_must_exist, bool *r_path_valid = nullptr);
void _parent_name_changed(const String &p_parent);
void _template_changed(int p_template = 0);
void _browse_path(bool browse_parent, bool p_save);
Expand Down

0 comments on commit a1ef1aa

Please sign in to comment.