summaryrefslogtreecommitdiffstats
path: root/editor/editor_node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor_node.cpp')
-rw-r--r--editor/editor_node.cpp46
1 files changed, 31 insertions, 15 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index f154cbd1e2..6899a35ded 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -825,6 +825,7 @@ void EditorNode::_notification(int p_what) {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("docks/filesystem")) {
HashSet<String> updated_textfile_extensions;
+ HashSet<String> updated_other_file_extensions;
bool extensions_match = true;
const Vector<String> textfile_ext = ((String)(EDITOR_GET("docks/filesystem/textfile_extensions"))).split(",", false);
for (const String &E : textfile_ext) {
@@ -833,9 +834,17 @@ void EditorNode::_notification(int p_what) {
extensions_match = false;
}
}
+ const Vector<String> other_file_ext = ((String)(EDITOR_GET("docks/filesystem/other_file_extensions"))).split(",", false);
+ for (const String &E : other_file_ext) {
+ updated_other_file_extensions.insert(E);
+ if (extensions_match && !other_file_extensions.has(E)) {
+ extensions_match = false;
+ }
+ }
- if (!extensions_match || updated_textfile_extensions.size() < textfile_extensions.size()) {
+ if (!extensions_match || updated_textfile_extensions.size() < textfile_extensions.size() || updated_other_file_extensions.size() < other_file_extensions.size()) {
textfile_extensions = updated_textfile_extensions;
+ other_file_extensions = updated_other_file_extensions;
EditorFileSystem::get_singleton()->scan();
}
}
@@ -1326,6 +1335,9 @@ Error EditorNode::load_resource(const String &p_resource, bool p_ignore_broken_d
res = ResourceLoader::load(p_resource, "", ResourceFormatLoader::CACHE_MODE_REUSE, &err);
} else if (textfile_extensions.has(p_resource.get_extension())) {
res = ScriptEditor::get_singleton()->open_file(p_resource);
+ } else if (other_file_extensions.has(p_resource.get_extension())) {
+ OS::get_singleton()->shell_open(ProjectSettings::get_singleton()->globalize_path(p_resource));
+ return OK;
}
ERR_FAIL_COND_V(!res.is_valid(), ERR_CANT_OPEN);
@@ -5240,8 +5252,8 @@ void EditorNode::_copy_warning(const String &p_str) {
}
void EditorNode::_save_editor_layout() {
- if (waiting_for_first_scan) {
- return; // Scanning, do not touch docks.
+ if (!load_editor_layout_done) {
+ return;
}
Ref<ConfigFile> config;
config.instantiate();
@@ -5297,22 +5309,22 @@ void EditorNode::_load_editor_layout() {
if (overridden_default_layout >= 0) {
_layout_menu_option(overridden_default_layout);
}
- return;
- }
-
- ep.step(TTR("Loading docks..."), 1, true);
- editor_dock_manager->load_docks_from_config(config, "docks");
+ } else {
+ ep.step(TTR("Loading docks..."), 1, true);
+ editor_dock_manager->load_docks_from_config(config, "docks");
- ep.step(TTR("Reopening scenes..."), 2, true);
- _load_open_scenes_from_config(config);
+ ep.step(TTR("Reopening scenes..."), 2, true);
+ _load_open_scenes_from_config(config);
- ep.step(TTR("Loading central editor layout..."), 3, true);
- _load_central_editor_layout_from_config(config);
+ ep.step(TTR("Loading central editor layout..."), 3, true);
+ _load_central_editor_layout_from_config(config);
- ep.step(TTR("Loading plugin window layout..."), 4, true);
- editor_data.set_plugin_window_layout(config);
+ ep.step(TTR("Loading plugin window layout..."), 4, true);
+ editor_data.set_plugin_window_layout(config);
- ep.step(TTR("Editor layout ready."), 5, true);
+ ep.step(TTR("Editor layout ready."), 5, true);
+ }
+ load_editor_layout_done = true;
}
void EditorNode::_save_central_editor_layout_to_config(Ref<ConfigFile> p_config_file) {
@@ -6980,6 +6992,10 @@ EditorNode::EditorNode() {
for (const String &E : textfile_ext) {
textfile_extensions.insert(E);
}
+ const Vector<String> other_file_ext = ((String)(EDITOR_GET("docks/filesystem/other_file_extensions"))).split(",", false);
+ for (const String &E : other_file_ext) {
+ other_file_extensions.insert(E);
+ }
resource_preview = memnew(EditorResourcePreview);
add_child(resource_preview);