From 6b8b1cabae3d17c0ad36c067ffb42cb03d9f5c8f Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Sun, 3 Mar 2019 16:00:29 -0300 Subject: [PATCH] Add a warning when using plain Container, as many users seem to misunderstand what this is. --- scene/gui/container.cpp | 13 +++++++++++++ scene/gui/container.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/scene/gui/container.cpp b/scene/gui/container.cpp index 25793217736..7f1ca58d584 100644 --- a/scene/gui/container.cpp +++ b/scene/gui/container.cpp @@ -169,6 +169,19 @@ void Container::_notification(int p_what) { } } +String Container::get_configuration_warning() const { + + String warning = Control::get_configuration_warning(); + + if (get_class() == "Container" && get_script().is_null()) { + if (warning != String()) { + warning += "\n"; + } + warning += TTR("Container by itself serves no purpose unless a script configures it's children placement behavior.\nIf you dont't intend to add a script, then please use a plain 'Control' node instead."); + } + return warning; +} + void Container::_bind_methods() { ClassDB::bind_method(D_METHOD("_sort_children"), &Container::_sort_children); diff --git a/scene/gui/container.h b/scene/gui/container.h index 0b014137f49..80d3f6ee5d6 100644 --- a/scene/gui/container.h +++ b/scene/gui/container.h @@ -57,6 +57,8 @@ public: void fit_child_in_rect(Control *p_child, const Rect2 &p_rect); + virtual String get_configuration_warning() const; + Container(); };