diff options
author | Tomasz Chabora <kobewi4e@gmail.com> | 2020-09-30 12:00:21 +0200 |
---|---|---|
committer | kobewi <kobewi4e@gmail.com> | 2021-02-19 18:32:24 +0100 |
commit | 84da090a6907fef7451eb7914ba3179f582d4380 (patch) | |
tree | b714340aa695c89285aff29420b9efcd6840b80d /scene/gui/control.cpp | |
parent | 3c65550816b1f9ca0d4a12411a4d596ae8e7726b (diff) |
Warn when setting Control size inside ready()
Diffstat (limited to 'scene/gui/control.cpp')
-rw-r--r-- | scene/gui/control.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 0e28c942f1..0c104bf318 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -456,6 +456,10 @@ bool Control::is_layout_rtl() const { } } +void Control::_clear_size_warning() { + data.size_warning = false; +} + //moved theme configuration here, so controls can set up even if still not inside active scene void Control::add_child_notify(Node *p_child) { @@ -503,7 +507,9 @@ void Control::_notification(int p_notification) { } break; case NOTIFICATION_EXIT_TREE: { get_viewport()->_gui_remove_control(this); - + } break; + case NOTIFICATION_READY: { + connect("ready", callable_mp(this, &Control::_clear_size_warning), varray(), CONNECT_DEFERRED | CONNECT_ONESHOT); } break; case NOTIFICATION_ENTER_CANVAS: { @@ -1702,6 +1708,11 @@ void Control::set_rect(const Rect2 &p_rect) { } void Control::_set_size(const Size2 &p_size) { +#ifdef DEBUG_ENABLED + if (data.size_warning) { + WARN_PRINT("Adjusting the size of Control nodes before they are fully initialized is unreliable. Consider deferring it with set_deferred()."); + } +#endif set_size(p_size); } |