Browse Source

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)
Hugo Locurcio 4 years ago
parent
commit
f1bbb4fe3f

+ 2 - 4
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);

+ 4 - 4
editor/editor_properties_array_dict.h

@@ -84,8 +84,8 @@ class EditorPropertyArray : public EditorProperty {
 	bool updating;
 
 	Ref<EditorPropertyArrayObject> 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<EditorPropertyDictionaryObject> object;
-	int page_len;
-	int page_idx;
+	int page_len = 20;
+	int page_idx = 0;
 	int changing_type_idx;
 	Button *edit;
 	VBoxContainer *vbox;

+ 4 - 0
editor/editor_settings.cpp

@@ -371,6 +371,10 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> 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);