diff options
Diffstat (limited to 'editor/filesystem_dock.cpp')
-rw-r--r-- | editor/filesystem_dock.cpp | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 2da36bfc22..2e88540fc4 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -79,6 +79,15 @@ Control *FileSystemList::make_custom_tooltip(const String &p_text) const { } void FileSystemList::_line_editor_submit(const String &p_text) { + if (popup_edit_commited) { + return; // Already processed by _text_editor_popup_modal_close + } + + if (popup_editor->get_hide_reason() == Popup::HIDE_REASON_CANCELED) { + return; // ESC pressed, app focus lost, or forced close from code. + } + + popup_edit_commited = true; // End edit popup processing. popup_editor->hide(); emit_signal(SNAME("item_edited")); @@ -127,6 +136,7 @@ bool FileSystemList::edit_selected() { line_editor->set_text(name); line_editor->select(0, name.rfind(".")); + popup_edit_commited = false; // Start edit popup processing. popup_editor->popup(); popup_editor->child_controls_changed(); line_editor->grab_focus(); @@ -138,8 +148,12 @@ String FileSystemList::get_edit_text() { } void FileSystemList::_text_editor_popup_modal_close() { + if (popup_edit_commited) { + return; // Already processed by _text_editor_popup_modal_close + } + if (popup_editor->get_hide_reason() == Popup::HIDE_REASON_CANCELED) { - return; + return; // ESC pressed, app focus lost, or forced close from code. } _line_editor_submit(line_editor->get_text()); @@ -313,7 +327,7 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory _sort_file_info_list(file_list); // Build the tree. - const int icon_size = get_theme_constant(SNAME("class_icon_size"), SNAME("Editor")); + const int icon_size = get_theme_constant(SNAME("class_icon_size"), EditorStringName(Editor)); for (const FileInfo &fi : file_list) { TreeItem *file_item = tree->create_item(subdirectory_item); @@ -538,10 +552,10 @@ void FileSystemDock::_notification(int p_what) { EditorFileSystem::get_singleton()->connect("filesystem_changed", callable_mp(this, &FileSystemDock::_fs_changed)); EditorResourcePreview::get_singleton()->connect("preview_invalidated", callable_mp(this, &FileSystemDock::_preview_invalidated)); - button_file_list_display_mode->connect("pressed", callable_mp(this, &FileSystemDock::_toggle_file_display)); + button_file_list_display_mode->connect(SceneStringName(pressed), callable_mp(this, &FileSystemDock::_toggle_file_display)); files->connect("item_activated", callable_mp(this, &FileSystemDock::_file_list_activate_file)); - button_hist_next->connect("pressed", callable_mp(this, &FileSystemDock::_fw_history)); - button_hist_prev->connect("pressed", callable_mp(this, &FileSystemDock::_bw_history)); + button_hist_next->connect(SceneStringName(pressed), callable_mp(this, &FileSystemDock::_fw_history)); + button_hist_prev->connect(SceneStringName(pressed), callable_mp(this, &FileSystemDock::_bw_history)); file_list_popup->connect("id_pressed", callable_mp(this, &FileSystemDock::_file_list_rmb_option)); tree_popup->connect("id_pressed", callable_mp(this, &FileSystemDock::_tree_rmb_option)); current_path_line_edit->connect("text_submitted", callable_mp(this, &FileSystemDock::_navigate_to_path).bind(false)); @@ -3265,7 +3279,7 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, const Vect if (p_paths.size() == 1) { const String &fpath = p_paths[0]; - bool added_separator = false; + [[maybe_unused]] bool added_separator = false; if (favorites_list.has(fpath)) { TreeItem *favorites_item = tree->get_root()->get_first_child(); @@ -3959,14 +3973,14 @@ FileSystemDock::FileSystemDock() { toolbar_hbc->add_child(current_path_line_edit); button_reload = memnew(Button); - button_reload->connect("pressed", callable_mp(this, &FileSystemDock::_rescan)); + button_reload->connect(SceneStringName(pressed), callable_mp(this, &FileSystemDock::_rescan)); button_reload->set_focus_mode(FOCUS_NONE); button_reload->set_tooltip_text(TTR("Re-Scan Filesystem")); button_reload->hide(); toolbar_hbc->add_child(button_reload); button_toggle_display_mode = memnew(Button); - button_toggle_display_mode->connect("pressed", callable_mp(this, &FileSystemDock::_change_split_mode)); + button_toggle_display_mode->connect(SceneStringName(pressed), callable_mp(this, &FileSystemDock::_change_split_mode)); button_toggle_display_mode->set_focus_mode(FOCUS_NONE); button_toggle_display_mode->set_tooltip_text(TTR("Change Split Mode")); button_toggle_display_mode->set_theme_type_variation("FlatMenuButton"); @@ -3974,7 +3988,7 @@ FileSystemDock::FileSystemDock() { button_dock_placement = memnew(Button); button_dock_placement->set_flat(true); - button_dock_placement->connect("pressed", callable_mp(this, &FileSystemDock::_change_bottom_dock_placement)); + button_dock_placement->connect(SceneStringName(pressed), callable_mp(this, &FileSystemDock::_change_bottom_dock_placement)); button_dock_placement->hide(); toolbar_hbc->add_child(button_dock_placement); @@ -4023,8 +4037,8 @@ FileSystemDock::FileSystemDock() { tree->connect("item_mouse_selected", callable_mp(this, &FileSystemDock::_tree_rmb_select)); tree->connect("empty_clicked", callable_mp(this, &FileSystemDock::_tree_empty_click)); tree->connect("nothing_selected", callable_mp(this, &FileSystemDock::_tree_empty_selected)); - tree->connect("gui_input", callable_mp(this, &FileSystemDock::_tree_gui_input)); - tree->connect("mouse_exited", callable_mp(this, &FileSystemDock::_tree_mouse_exited)); + tree->connect(SceneStringName(gui_input), callable_mp(this, &FileSystemDock::_tree_gui_input)); + tree->connect(SceneStringName(mouse_exited), callable_mp(this, &FileSystemDock::_tree_mouse_exited)); tree->connect("item_edited", callable_mp(this, &FileSystemDock::_rename_operation_confirm)); file_list_vb = memnew(VBoxContainer); @@ -4053,7 +4067,7 @@ FileSystemDock::FileSystemDock() { files->set_select_mode(ItemList::SELECT_MULTI); SET_DRAG_FORWARDING_GCD(files, FileSystemDock); files->connect("item_clicked", callable_mp(this, &FileSystemDock::_file_list_item_clicked)); - files->connect("gui_input", callable_mp(this, &FileSystemDock::_file_list_gui_input)); + files->connect(SceneStringName(gui_input), callable_mp(this, &FileSystemDock::_file_list_gui_input)); files->connect("multi_selected", callable_mp(this, &FileSystemDock::_file_multi_selected)); files->connect("empty_clicked", callable_mp(this, &FileSystemDock::_file_list_empty_clicked)); files->connect("item_edited", callable_mp(this, &FileSystemDock::_rename_operation_confirm)); @@ -4093,7 +4107,7 @@ FileSystemDock::FileSystemDock() { overwrite_dialog = memnew(ConfirmationDialog); add_child(overwrite_dialog); overwrite_dialog->set_ok_button_text(TTR("Overwrite")); - overwrite_dialog->add_button(TTR("Keep Both"), true)->connect("pressed", callable_mp(this, &FileSystemDock::_overwrite_dialog_action).bind(false)); + overwrite_dialog->add_button(TTR("Keep Both"), true)->connect(SceneStringName(pressed), callable_mp(this, &FileSystemDock::_overwrite_dialog_action).bind(false)); overwrite_dialog->connect("confirmed", callable_mp(this, &FileSystemDock::_overwrite_dialog_action).bind(true)); VBoxContainer *overwrite_dialog_vb = memnew(VBoxContainer); |