From ecff0116714c41155cf8ce3396ee9597342b1458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Tue, 4 Feb 2025 08:49:42 +0200 Subject: [PATCH] [FileDialog] Update filename/buttons state when first item is selected on folder/filter change. --- scene/gui/file_dialog.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index b9450fd77f0..30acde0d31c 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -664,9 +664,11 @@ void FileDialog::_tree_selected() { } else { set_ok_button_text(ETR("Open")); } - } else if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY) { + } else if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY || !dir_access->file_exists(file->get_text())) { file->set_text(""); - set_ok_button_text(ETR("Select This Folder")); + if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY) { + set_ok_button_text(ETR("Select This Folder")); + } } get_ok_button()->set_disabled(_is_open_should_be_disabled()); @@ -931,6 +933,7 @@ void FileDialog::update_file_list() { // Select the first file from list if nothing is selected. if (tree->get_root() && tree->get_root()->get_first_child() && tree->get_selected() == nullptr) { tree->get_root()->get_first_child()->select(0); + _tree_selected(); } } } @@ -949,6 +952,7 @@ void FileDialog::_filename_filter_changed() { void FileDialog::_tree_select_first() { if (tree->get_root() && tree->get_root()->get_first_child()) { tree->get_root()->get_first_child()->select(0); + _tree_selected(); } }