From f1bbb4fe3f0005cc364aeb6892dfb65e1af5ab20 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 1 Jan 2021 19:41:11 +0100 Subject: [PATCH] Increase the page size for array/dictionary editors to 20 With smaller arrays/dictionaries, this makes it possible to view all of an array/dictionary's items on a single page. Larger values could be used, but make switching between node selections quite slow, especially on low-end CPUs. They could also be problematic with complex resource inspectors for arrays/dictionaries that contain Resources. This closes https://github.com/godotengine/godot-proposals/issues/2058. (cherry picked from commit d97d65b18494fe20aea4802031196a441bd59f97) --- editor/editor_properties_array_dict.cpp | 6 ++---- editor/editor_properties_array_dict.h | 8 ++++---- editor/editor_settings.cpp | 4 ++++ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp index aded384949..6463c1b9e1 100644 --- a/editor/editor_properties_array_dict.cpp +++ b/editor/editor_properties_array_dict.cpp @@ -504,8 +504,7 @@ void EditorPropertyArray::_bind_methods() { EditorPropertyArray::EditorPropertyArray() { object.instance(); - page_idx = 0; - page_len = 10; + page_len = int(EDITOR_GET("interface/inspector/max_array_dictionary_items_per_page")); edit = memnew(Button); edit->set_flat(true); edit->set_h_size_flags(SIZE_EXPAND_FILL); @@ -1000,8 +999,7 @@ void EditorPropertyDictionary::_bind_methods() { EditorPropertyDictionary::EditorPropertyDictionary() { object.instance(); - page_idx = 0; - page_len = 10; + page_len = int(EDITOR_GET("interface/inspector/max_array_dictionary_items_per_page")); edit = memnew(Button); edit->set_flat(true); edit->set_h_size_flags(SIZE_EXPAND_FILL); diff --git a/editor/editor_properties_array_dict.h b/editor/editor_properties_array_dict.h index 96edb396b9..14675354ba 100644 --- a/editor/editor_properties_array_dict.h +++ b/editor/editor_properties_array_dict.h @@ -84,8 +84,8 @@ class EditorPropertyArray : public EditorProperty { bool updating; Ref object; - int page_len; - int page_idx; + int page_len = 20; + int page_idx = 0; int changing_type_idx; Button *edit; VBoxContainer *vbox; @@ -124,8 +124,8 @@ class EditorPropertyDictionary : public EditorProperty { bool updating; Ref object; - int page_len; - int page_idx; + int page_len = 20; + int page_idx = 0; int changing_type_idx; Button *edit; VBoxContainer *vbox; diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 1c1002190f..0da97bd7df 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -371,6 +371,10 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { _initial_set("interface/editor/save_each_scene_on_quit", true); // Regression _initial_set("interface/editor/quit_confirmation", true); + // Inspector + _initial_set("interface/inspector/max_array_dictionary_items_per_page", 20); + hints["interface/inspector/max_array_dictionary_items_per_page"] = PropertyInfo(Variant::INT, "interface/inspector/max_array_dictionary_items_per_page", PROPERTY_HINT_RANGE, "10,100,1", PROPERTY_USAGE_DEFAULT); + // Theme _initial_set("interface/theme/preset", "Default"); hints["interface/theme/preset"] = PropertyInfo(Variant::STRING, "interface/theme/preset", PROPERTY_HINT_ENUM, "Default,Alien,Arc,Godot 2,Grey,Light,Solarized (Dark),Solarized (Light),Custom", PROPERTY_USAGE_DEFAULT);