summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Roubinsky <chaosus89@gmail.com>2020-06-11 08:30:04 +0300
committerGitHub <noreply@github.com>2020-06-11 08:30:04 +0300
commitc2b43403b4850b679bcf2524eac5bc2d52eec8f2 (patch)
tree12a6b26bcf78857aabf3ece839ad1aea24a0e575
parentffbea8aad11e8427b7a7f4929aedeee618baa133 (diff)
parentf6ed4656130228112b45f3b3b89ccfcc6ddabbdd (diff)
Merge pull request #39438 from Chaosus/fix_custom_property_editor
Fix custom property editor layout
-rw-r--r--editor/property_editor.cpp29
-rw-r--r--editor/property_editor.h2
2 files changed, 27 insertions, 4 deletions
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index c6efcc944b..49b9ca167b 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -326,6 +326,9 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
menu->set_size(Size2(1, 1) * EDSCALE);
for (int i = 0; i < MAX_VALUE_EDITORS; i++) {
+ if (i < MAX_VALUE_EDITORS / 4) {
+ value_hboxes[i]->hide();
+ }
value_editor[i]->hide();
value_label[i]->hide();
if (i < 4) {
@@ -1701,6 +1704,14 @@ void CustomPropertyEditor::config_value_editors(int p_amount, int p_columns, int
set_size(Size2(cell_margin + p_label_w + (cell_width + cell_margin + p_label_w) * p_columns, cell_margin + (cell_height + cell_margin) * rows) * EDSCALE);
for (int i = 0; i < MAX_VALUE_EDITORS; i++) {
+ if (i < MAX_VALUE_EDITORS / 4) {
+ if (i <= p_amount / 4) {
+ value_hboxes[i]->show();
+ } else {
+ value_hboxes[i]->hide();
+ }
+ }
+
int c = i % p_columns;
int r = i / p_columns;
@@ -1729,13 +1740,23 @@ CustomPropertyEditor::CustomPropertyEditor() {
read_only = false;
updating = false;
+ value_vbox = memnew(VBoxContainer);
+ add_child(value_vbox);
+
for (int i = 0; i < MAX_VALUE_EDITORS; i++) {
- value_editor[i] = memnew(LineEdit);
- add_child(value_editor[i]);
+ if (i < MAX_VALUE_EDITORS / 4) {
+ value_hboxes[i] = memnew(HBoxContainer);
+ value_vbox->add_child(value_hboxes[i]);
+ value_hboxes[i]->hide();
+ }
+ int hbox_idx = i / 4;
value_label[i] = memnew(Label);
- add_child(value_label[i]);
- value_editor[i]->hide();
+ value_hboxes[hbox_idx]->add_child(value_label[i]);
value_label[i]->hide();
+ value_editor[i] = memnew(LineEdit);
+ value_hboxes[hbox_idx]->add_child(value_editor[i]);
+ value_editor[i]->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ value_editor[i]->hide();
value_editor[i]->connect("text_entered", callable_mp(this, &CustomPropertyEditor::_modified));
value_editor[i]->connect("focus_entered", callable_mp(this, &CustomPropertyEditor::_focus_enter));
value_editor[i]->connect("focus_exited", callable_mp(this, &CustomPropertyEditor::_focus_exit));
diff --git a/editor/property_editor.h b/editor/property_editor.h
index 5b7db3b83f..75c6fd372b 100644
--- a/editor/property_editor.h
+++ b/editor/property_editor.h
@@ -100,6 +100,8 @@ class CustomPropertyEditor : public PopupPanel {
List<String> field_names;
int hint;
String hint_text;
+ HBoxContainer *value_hboxes[MAX_VALUE_EDITORS / 4];
+ VBoxContainer *value_vbox;
LineEdit *value_editor[MAX_VALUE_EDITORS];
int focused_value_editor;
Label *value_label[MAX_VALUE_EDITORS];