1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Expose the signal when user select a file/folder in the FileSystemDock

This commit is contained in:
DexterFstone
2025-06-08 01:03:57 -07:00
parent 06827c91c6
commit ee1a36facd
3 changed files with 23 additions and 0 deletions

View File

@@ -87,5 +87,10 @@
Emitted when an external [param resource] had its file removed.
</description>
</signal>
<signal name="selection_changed">
<description>
Emitted when the selection changes. Use [method EditorInterface.get_selected_paths] in the connected method to get the selected paths.
</description>
</signal>
</signals>
</class>

View File

@@ -3583,6 +3583,7 @@ void FileSystemDock::_tree_empty_selected() {
if (file_list_vb->is_visible()) {
_update_file_list(false);
}
_update_selection_changed();
}
void FileSystemDock::_file_list_item_clicked(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index) {
@@ -3669,6 +3670,16 @@ void FileSystemDock::_file_multi_selected(int p_index, bool p_selected) {
callable_mp(this, &FileSystemDock::_update_import_dock).call_deferred();
}
void FileSystemDock::_update_selection_changed() {
Vector<String> selection;
selection.append_array(_tree_get_selected());
selection.append_array(_file_list_get_selected());
if (prev_selection != selection) {
prev_selection = selection;
emit_signal(SNAME("selection_changed"));
}
}
void FileSystemDock::_tree_mouse_exited() {
if (holding_branch) {
_reselect_items_selected_on_drag_begin();
@@ -3876,6 +3887,8 @@ void FileSystemDock::_update_import_dock() {
return;
}
_update_selection_changed();
// List selected.
Vector<String> selected;
if (display_mode == DISPLAY_MODE_TREE_ONLY) {
@@ -4129,6 +4142,7 @@ void FileSystemDock::_bind_methods() {
ADD_SIGNAL(MethodInfo("files_moved", PropertyInfo(Variant::STRING, "old_file"), PropertyInfo(Variant::STRING, "new_file")));
ADD_SIGNAL(MethodInfo("folder_moved", PropertyInfo(Variant::STRING, "old_folder"), PropertyInfo(Variant::STRING, "new_folder")));
ADD_SIGNAL(MethodInfo("folder_color_changed"));
ADD_SIGNAL(MethodInfo("selection_changed"));
ADD_SIGNAL(MethodInfo("display_mode_changed"));
}

View File

@@ -253,6 +253,10 @@ private:
HashSet<String> cached_valid_conversion_targets;
Vector<String> prev_selection;
void _update_selection_changed();
void _tree_mouse_exited();
void _reselect_items_selected_on_drag_begin(bool reset = false);