Skip to content

Commit f99eeb9

Browse files
committed
Merge pull request #109017 from nubels/file-system-confirmation-dialog
Add confirmation dialog to filesystem dock when moving or copying files
2 parents 98014e5 + 3d764e5 commit f99eeb9

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

editor/docks/filesystem_dock.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1879,6 +1879,10 @@ void FileSystemDock::_duplicate_operation_confirm(const String &p_path) {
18791879
_try_duplicate_item(to_duplicate, p_path);
18801880
}
18811881

1882+
void FileSystemDock::_move_confirm() {
1883+
_move_operation_confirm(confirm_move_to_dir, confirm_to_copy);
1884+
}
1885+
18821886
void FileSystemDock::_overwrite_dialog_action(bool p_overwrite) {
18831887
overwrite_dialog->hide();
18841888
_move_operation_confirm(to_move_path, to_move_or_copy, p_overwrite ? OVERWRITE_REPLACE : OVERWRITE_RENAME);
@@ -3131,11 +3135,19 @@ void FileSystemDock::drop_data_fw(const Point2 &p_point, const Variant &p_data,
31313135
}
31323136
}
31333137
if (!to_move.is_empty()) {
3138+
String move_confirm_text;
3139+
confirm_move_to_dir = to_dir;
3140+
31343141
if (Input::get_singleton()->is_key_pressed(Key::CMD_OR_CTRL)) {
3135-
_move_operation_confirm(to_dir, true);
3142+
move_confirm_text = vformat(TTR("Copy %d selected item(s) to \"%s\"?"), to_move.size(), target_dir);
3143+
confirm_to_copy = true;
31363144
} else {
3137-
_move_operation_confirm(to_dir);
3145+
move_confirm_text = vformat(TTR("Move %d selected item(s) to \"%s\"?"), to_move.size(), target_dir);
3146+
confirm_to_copy = false;
31383147
}
3148+
3149+
move_confirm_dialog->set_text(move_confirm_text);
3150+
move_confirm_dialog->popup_centered();
31393151
}
31403152
} else if (favorite) {
31413153
// Add the files from favorites.
@@ -4442,6 +4454,10 @@ FileSystemDock::FileSystemDock() {
44424454
conversion_dialog->set_ok_button_text(TTRC("Convert"));
44434455
conversion_dialog->connect(SceneStringName(confirmed), callable_mp(this, &FileSystemDock::_convert_dialog_action));
44444456

4457+
move_confirm_dialog = memnew(ConfirmationDialog);
4458+
add_child(move_confirm_dialog);
4459+
move_confirm_dialog->connect(SceneStringName(confirmed), callable_mp(this, &FileSystemDock::_move_confirm));
4460+
44454461
uncollapsed_paths_before_search = Vector<String>();
44464462

44474463
tree_update_id = 0;

editor/docks/filesystem_dock.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,16 @@ class FileSystemDock : public EditorDock {
202202
Label *overwrite_dialog_file_list = nullptr;
203203

204204
ConfirmationDialog *conversion_dialog = nullptr;
205+
ConfirmationDialog *move_confirm_dialog = nullptr;
205206

206207
SceneCreateDialog *make_scene_dialog = nullptr;
207208
ScriptCreateDialog *make_script_dialog = nullptr;
208209
ShaderCreateDialog *make_shader_dialog = nullptr;
209210
CreateDialog *new_resource_dialog = nullptr;
210211

212+
String confirm_move_to_dir;
213+
bool confirm_to_copy = false;
214+
211215
bool always_show_folders = false;
212216
int thumbnail_size_setting = 0;
213217

@@ -309,6 +313,7 @@ class FileSystemDock : public EditorDock {
309313
void _make_scene_confirm();
310314
void _rename_operation_confirm();
311315
void _duplicate_operation_confirm(const String &p_path);
316+
void _move_confirm();
312317
void _overwrite_dialog_action(bool p_overwrite);
313318
void _convert_dialog_action();
314319
Vector<String> _check_existing();

0 commit comments

Comments
 (0)