Skip to content

Commit

Permalink
Exposed path properties save UID if referencing a resource
Browse files Browse the repository at this point in the history
Currently, if a user or some resource exposes a path in a script,
if this references a resource path it will be saved as a full path.

This will make refactoring not work if the resource pointed towards
changes location or is renamed.

This change makes it so an uid:// path is saved internally in case
a path to a resource has been selected, effectively making it refactor proof.
  • Loading branch information
reduz committed Oct 7, 2024
1 parent db66bd3 commit ea22cdb
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
22 changes: 18 additions & 4 deletions editor/editor_properties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -462,10 +462,25 @@ void EditorPropertyPath::_set_read_only(bool p_read_only) {
}

void EditorPropertyPath::_path_selected(const String &p_path) {
String full_path = p_path;
ResourceUID::ID id = ResourceLoader::get_resource_uid(full_path);
if (id != ResourceUID::INVALID_ID) {
full_path = ResourceUID::get_singleton()->id_to_text(id);
}

emit_changed(get_edited_property(), p_path);
update_property();
}

String EditorPropertyPath::_get_path_text() {
String full_path = get_edited_property_value();
if (full_path.begins_with("uid://")) {
full_path = ResourceUID::get_singleton()->get_id_path(ResourceUID::get_singleton()->text_to_id(full_path));
}

return full_path;
}

void EditorPropertyPath::_path_pressed() {
if (!dialog) {
dialog = memnew(EditorFileDialog);
Expand All @@ -474,7 +489,7 @@ void EditorPropertyPath::_path_pressed() {
add_child(dialog);
}

String full_path = get_edited_property_value();
String full_path = _get_path_text();

dialog->clear_filters();

Expand Down Expand Up @@ -502,7 +517,7 @@ void EditorPropertyPath::_path_pressed() {
}

void EditorPropertyPath::update_property() {
String full_path = get_edited_property_value();
String full_path = _get_path_text();
path->set_text(full_path);
path->set_tooltip_text(full_path);
}
Expand Down Expand Up @@ -547,8 +562,7 @@ void EditorPropertyPath::_drop_data_fw(const Point2 &p_point, const Variant &p_d
return;
}

emit_changed(get_edited_property(), filesPaths[0]);
update_property();
_path_selected(filesPaths[0]);
}

bool EditorPropertyPath::_can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const {
Expand Down
2 changes: 2 additions & 0 deletions editor/editor_properties.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,8 @@ class EditorPropertyPath : public EditorProperty {
LineEdit *path = nullptr;
Button *path_edit = nullptr;

String _get_path_text();

void _path_selected(const String &p_path);
void _path_pressed();
void _path_focus_exited();
Expand Down

0 comments on commit ea22cdb

Please sign in to comment.