From 48097f6df364b040848fb8963f15738d760a72ed Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Tue, 10 Jan 2017 01:49:55 -0300 Subject: Removed the set_child_rect() in AcceptDialog. AcceptDialog now works as a container! --- scene/gui/color_picker.cpp | 2 +- scene/gui/color_ramp_edit.cpp | 2 +- scene/gui/dialogs.cpp | 55 +++++++++++++++++++++---------------------- scene/gui/dialogs.h | 7 +----- scene/gui/file_dialog.cpp | 4 ++-- 5 files changed, 32 insertions(+), 38 deletions(-) (limited to 'scene/gui') diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 9c30b333b0..ac8ce68564 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -683,7 +683,7 @@ ColorPickerButton::ColorPickerButton() { popup = memnew( PopupPanel ); picker = memnew( ColorPicker ); popup->add_child(picker); - popup->set_child_rect(picker); + picker->connect("color_changed",this,"_color_changed"); add_child(popup); } diff --git a/scene/gui/color_ramp_edit.cpp b/scene/gui/color_ramp_edit.cpp index 5b474ebc25..c3ed3d821d 100644 --- a/scene/gui/color_ramp_edit.cpp +++ b/scene/gui/color_ramp_edit.cpp @@ -37,7 +37,7 @@ ColorRampEdit::ColorRampEdit(){ popup = memnew( PopupPanel ); picker = memnew( ColorPicker ); popup->add_child(picker); - popup->set_child_rect(picker); + add_child(popup); checker = Ref(memnew( ImageTexture )); diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index 9e8a3f7bd6..cc6fe7cae8 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -203,7 +203,7 @@ void AcceptDialog::_notification(int p_what) { cancel_pressed(); } if (p_what==NOTIFICATION_RESIZED) { - _update_child_rect(); + _update_child_rects(); } } @@ -233,7 +233,7 @@ void AcceptDialog::set_text(String p_text) { label->set_text(p_text); minimum_size_changed(); - _update_child_rect(); + _update_child_rects(); } void AcceptDialog::set_hide_on_ok(bool p_hide) { @@ -253,7 +253,9 @@ void AcceptDialog::register_text_enter(Node *p_line_edit) { p_line_edit->connect("text_entered", this,"_builtin_text_entered"); } -void AcceptDialog::_update_child_rect() { +void AcceptDialog::_update_child_rects() { + + Size2 label_size=label->get_minimum_size(); if (label->get_text().empty()) { label_size.height = 0; @@ -265,10 +267,17 @@ void AcceptDialog::_update_child_rect() { Vector2 cpos(margin,margin+label_size.height); Vector2 csize(size.x-margin*2,size.y-margin*3-hminsize.y-label_size.height); - if (child) { + for(int i=0;icast_to(); + if (!c) + continue; + + if (c==hbc || c==label || c==get_close_button()) + continue; + + c->set_pos(cpos); + c->set_size(csize); - child->set_pos(cpos); - child->set_size(csize); } cpos.y+=csize.y+margin; @@ -283,13 +292,23 @@ Size2 AcceptDialog::get_minimum_size() const { int margin = get_constant("margin","Dialogs"); Size2 minsize = label->get_combined_minimum_size(); - if (child) { - Size2 cminsize = child->get_combined_minimum_size(); + + for(int i=0;icast_to(); + if (!c) + continue; + + if (c==hbc || c==label || c==const_cast(this)->get_close_button()) + continue; + + Size2 cminsize = c->get_combined_minimum_size(); minsize.x=MAX(cminsize.x,minsize.x); minsize.y=MAX(cminsize.y,minsize.y); + } + Size2 hminsize = hbc->get_combined_minimum_size(); minsize.x = MAX(hminsize.x,minsize.x); minsize.y+=hminsize.y; @@ -302,23 +321,6 @@ Size2 AcceptDialog::get_minimum_size() const { } -void AcceptDialog::set_child_rect(Control *p_child) { - - ERR_FAIL_COND(p_child->get_parent()!=this); - - //p_child->set_area_as_parent_rect(get_constant("margin","Dialogs")); - child=p_child; - minimum_size_changed(); - _update_child_rect(); -} - -void AcceptDialog::remove_child_notify(Node *p_child) { - - if (p_child==child) { - child=NULL; - } -} - void AcceptDialog::_custom_action(const String& p_action) { emit_signal("custom_action",p_action); @@ -371,7 +373,6 @@ void AcceptDialog::_bind_methods() { ClassDB::bind_method(_MD("_custom_action"),&AcceptDialog::_custom_action); ClassDB::bind_method(_MD("set_text","text"),&AcceptDialog::set_text); ClassDB::bind_method(_MD("get_text"),&AcceptDialog::get_text); - ClassDB::bind_method(_MD("set_child_rect","child:Control"),&AcceptDialog::set_child_rect); ADD_SIGNAL( MethodInfo("confirmed") ); ADD_SIGNAL( MethodInfo("custom_action",PropertyInfo(Variant::STRING,"action")) ); @@ -418,8 +419,6 @@ AcceptDialog::AcceptDialog() { hide_on_ok=true; set_title(RTR("Alert!")); - - child=NULL; } diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h index b76ab8299c..c7beeea7a3 100644 --- a/scene/gui/dialogs.h +++ b/scene/gui/dialogs.h @@ -91,7 +91,6 @@ class AcceptDialog : public WindowDialog { GDCLASS(AcceptDialog,WindowDialog); - Control *child; HBoxContainer *hbc; Label *label; Button *ok; @@ -103,13 +102,11 @@ class AcceptDialog : public WindowDialog { void _ok_pressed(); void _close_pressed(); void _builtin_text_entered(const String& p_text); - void _update_child_rect(); + void _update_child_rects(); static bool swap_ok_cancel; - virtual void remove_child_notify(Node *p_child); - protected: @@ -140,8 +137,6 @@ public: void set_text(String p_text); String get_text() const; - void set_child_rect(Control *p_child); - AcceptDialog(); ~AcceptDialog(); diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index 6828ae3980..df08c7ea56 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -764,7 +764,7 @@ FileDialog::FileDialog() { VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); - set_child_rect(vbc); + mode=MODE_SAVE_FILE; set_title(RTR("Save a File")); @@ -828,7 +828,7 @@ FileDialog::FileDialog() { makedialog->set_title(RTR("Create Folder")); VBoxContainer *makevb= memnew( VBoxContainer ); makedialog->add_child(makevb); - makedialog->set_child_rect(makevb); + makedirname = memnew( LineEdit ); makevb->add_margin_child(RTR("Name:"),makedirname); add_child(makedialog); -- cgit v1.2.3