mirror of
https://github.com/godotengine/godot.git
synced 2025-12-07 22:00:10 +00:00
Merge pull request #113541 from Rindbee/fix-no-scan-after-dir-creation-and-deletion
Fix the issue of no scan after dir creation and/or deletion
This commit is contained in:
commit
9449e8ccad
4 changed files with 29 additions and 2 deletions
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include "editor_file_dialog.h"
|
#include "editor_file_dialog.h"
|
||||||
|
|
||||||
|
#include "core/config/project_settings.h"
|
||||||
#include "editor/docks/filesystem_dock.h"
|
#include "editor/docks/filesystem_dock.h"
|
||||||
#include "editor/file_system/dependency_editor.h"
|
#include "editor/file_system/dependency_editor.h"
|
||||||
#include "editor/settings/editor_settings.h"
|
#include "editor/settings/editor_settings.h"
|
||||||
|
|
@ -92,6 +93,26 @@ void EditorFileDialog::_validate_property(PropertyInfo &p_property) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorFileDialog::_dir_contents_changed() {
|
||||||
|
bool scan_required = false;
|
||||||
|
switch (get_access()) {
|
||||||
|
case FileDialog::ACCESS_RESOURCES: {
|
||||||
|
scan_required = true;
|
||||||
|
} break;
|
||||||
|
case FileDialog::ACCESS_USERDATA: {
|
||||||
|
// Directories within the project dir are unlikely to be accessed.
|
||||||
|
} break;
|
||||||
|
case FileDialog::ACCESS_FILESYSTEM: {
|
||||||
|
// Directories within the project dir may still be accessed.
|
||||||
|
const String localized_path = ProjectSettings::get_singleton()->localize_path(get_current_dir());
|
||||||
|
scan_required = localized_path.is_resource_file();
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
if (scan_required) {
|
||||||
|
EditorFileSystem::get_singleton()->scan_changes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void EditorFileDialog::_notification(int p_what) {
|
void EditorFileDialog::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_VISIBILITY_CHANGED: {
|
case NOTIFICATION_VISIBILITY_CHANGED: {
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ class EditorFileDialog : public FileDialog {
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void _item_menu_id_pressed(int p_option) override;
|
virtual void _item_menu_id_pressed(int p_option) override;
|
||||||
|
virtual void _dir_contents_changed() override;
|
||||||
|
|
||||||
virtual bool _should_use_native_popup() const override;
|
virtual bool _should_use_native_popup() const override;
|
||||||
virtual bool _should_hide_file(const String &p_file) const override;
|
virtual bool _should_hide_file(const String &p_file) const override;
|
||||||
|
|
|
||||||
|
|
@ -1064,8 +1064,11 @@ void FileDialog::_file_list_select_first() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileDialog::_delete_confirm() {
|
void FileDialog::_delete_confirm() {
|
||||||
OS::get_singleton()->move_to_trash(_get_item_path(_get_selected_file_idx()));
|
Error err = OS::get_singleton()->move_to_trash(_get_item_path(_get_selected_file_idx()));
|
||||||
invalidate();
|
if (err == OK) {
|
||||||
|
invalidate();
|
||||||
|
_dir_contents_changed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileDialog::_filename_filter_selected() {
|
void FileDialog::_filename_filter_selected() {
|
||||||
|
|
@ -1537,6 +1540,7 @@ FileDialog::Access FileDialog::get_access() const {
|
||||||
void FileDialog::_make_dir_confirm() {
|
void FileDialog::_make_dir_confirm() {
|
||||||
Error err = dir_access->make_dir(new_dir_name->get_text().strip_edges());
|
Error err = dir_access->make_dir(new_dir_name->get_text().strip_edges());
|
||||||
if (err == OK) {
|
if (err == OK) {
|
||||||
|
_dir_contents_changed();
|
||||||
_change_dir(new_dir_name->get_text().strip_edges());
|
_change_dir(new_dir_name->get_text().strip_edges());
|
||||||
update_filters();
|
update_filters();
|
||||||
_push_history();
|
_push_history();
|
||||||
|
|
|
||||||
|
|
@ -368,6 +368,7 @@ protected:
|
||||||
|
|
||||||
bool _can_use_native_popup() const;
|
bool _can_use_native_popup() const;
|
||||||
virtual void _item_menu_id_pressed(int p_option);
|
virtual void _item_menu_id_pressed(int p_option);
|
||||||
|
virtual void _dir_contents_changed() {}
|
||||||
|
|
||||||
virtual bool _should_use_native_popup() const;
|
virtual bool _should_use_native_popup() const;
|
||||||
virtual bool _should_hide_file(const String &p_file) const { return false; }
|
virtual bool _should_hide_file(const String &p_file) const { return false; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue