Skip to content

Commit 3d764e5

Browse files
committed
add confirmation dialogue to filesystem dock
1 parent 0dd9178 commit 3d764e5

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
@@ -1878,6 +1878,10 @@ void FileSystemDock::_duplicate_operation_confirm(const String &p_path) {
18781878
_try_duplicate_item(to_duplicate, p_path);
18791879
}
18801880

1881+
void FileSystemDock::_move_confirm() {
1882+
_move_operation_confirm(confirm_move_to_dir, confirm_to_copy);
1883+
}
1884+
18811885
void FileSystemDock::_overwrite_dialog_action(bool p_overwrite) {
18821886
overwrite_dialog->hide();
18831887
_move_operation_confirm(to_move_path, to_move_or_copy, p_overwrite ? OVERWRITE_REPLACE : OVERWRITE_RENAME);
@@ -3116,11 +3120,19 @@ void FileSystemDock::drop_data_fw(const Point2 &p_point, const Variant &p_data,
31163120
}
31173121
}
31183122
if (!to_move.is_empty()) {
3123+
String move_confirm_text;
3124+
confirm_move_to_dir = to_dir;
3125+
31193126
if (Input::get_singleton()->is_key_pressed(Key::CMD_OR_CTRL)) {
3120-
_move_operation_confirm(to_dir, true);
3127+
move_confirm_text = vformat(TTR("Copy %d selected item(s) to \"%s\"?"), to_move.size(), target_dir);
3128+
confirm_to_copy = true;
31213129
} else {
3122-
_move_operation_confirm(to_dir);
3130+
move_confirm_text = vformat(TTR("Move %d selected item(s) to \"%s\"?"), to_move.size(), target_dir);
3131+
confirm_to_copy = false;
31233132
}
3133+
3134+
move_confirm_dialog->set_text(move_confirm_text);
3135+
move_confirm_dialog->popup_centered();
31243136
}
31253137
} else if (favorite) {
31263138
// Add the files from favorites.
@@ -4393,6 +4405,10 @@ FileSystemDock::FileSystemDock() {
43934405
conversion_dialog->set_ok_button_text(TTRC("Convert"));
43944406
conversion_dialog->connect(SceneStringName(confirmed), callable_mp(this, &FileSystemDock::_convert_dialog_action));
43954407

4408+
move_confirm_dialog = memnew(ConfirmationDialog);
4409+
add_child(move_confirm_dialog);
4410+
move_confirm_dialog->connect(SceneStringName(confirmed), callable_mp(this, &FileSystemDock::_move_confirm));
4411+
43964412
uncollapsed_paths_before_search = Vector<String>();
43974413

43984414
tree_update_id = 0;

editor/docks/filesystem_dock.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,16 @@ class FileSystemDock : public VBoxContainer {
196196
Label *overwrite_dialog_file_list = nullptr;
197197

198198
ConfirmationDialog *conversion_dialog = nullptr;
199+
ConfirmationDialog *move_confirm_dialog = nullptr;
199200

200201
SceneCreateDialog *make_scene_dialog = nullptr;
201202
ScriptCreateDialog *make_script_dialog = nullptr;
202203
ShaderCreateDialog *make_shader_dialog = nullptr;
203204
CreateDialog *new_resource_dialog = nullptr;
204205

206+
String confirm_move_to_dir;
207+
bool confirm_to_copy = false;
208+
205209
bool always_show_folders = false;
206210
int thumbnail_size_setting = 0;
207211

@@ -299,6 +303,7 @@ class FileSystemDock : public VBoxContainer {
299303
void _make_scene_confirm();
300304
void _rename_operation_confirm();
301305
void _duplicate_operation_confirm(const String &p_path);
306+
void _move_confirm();
302307
void _overwrite_dialog_action(bool p_overwrite);
303308
void _convert_dialog_action();
304309
Vector<String> _check_existing();

0 commit comments

Comments
 (0)