You've already forked godot
							
							
				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:
		@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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"));
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user