diff options
| author | Ovnuniarchos | 2018-02-05 22:42:30 +0100 |
|---|---|---|
| committer | Hein-Pieter van Braam | 2018-02-19 22:13:46 +0100 |
| commit | eda94419dfb596399c474c7e0911ef40ed58e16d (patch) | |
| tree | 16ee7e9ac2cbb3e1977744438dca56b1e88bec36 | |
| parent | e6252bda5ecc429caac2fd7fc07bbeceb9545feb (diff) | |
| download | godot-eda94419dfb596399c474c7e0911ef40ed58e16d.tar.gz godot-eda94419dfb596399c474c7e0911ef40ed58e16d.tar.zst godot-eda94419dfb596399c474c7e0911ef40ed58e16d.zip | |
SpinBoxes calculate correctly their width before first redraw.
(cherry picked from commit fe1ca3c6e649ac599029b71f4508f840fa91f208)
| -rw-r--r-- | scene/gui/spin_box.cpp | 16 | ||||
| -rw-r--r-- | scene/gui/spin_box.h | 2 |
2 files changed, 13 insertions, 5 deletions
diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp index 3c5d524d8..145981d49 100644 --- a/scene/gui/spin_box.cpp +++ b/scene/gui/spin_box.cpp @@ -185,17 +185,22 @@ void SpinBox::_line_edit_focus_exit() { _text_entered(line_edit->get_text()); } +inline void SpinBox::_adjust_width_for_icon(const Ref<Texture> icon) { + + int w = icon->get_width(); + if (w != last_w) { + line_edit->set_margin(MARGIN_RIGHT, -w); + last_w = w; + } +} + void SpinBox::_notification(int p_what) { if (p_what == NOTIFICATION_DRAW) { Ref<Texture> updown = get_icon("updown"); - int w = updown->get_width(); - if (w != last_w) { - line_edit->set_margin(MARGIN_RIGHT, -w); - last_w = w; - } + _adjust_width_for_icon(updown); RID ci = get_canvas_item(); Size2i size = get_size(); @@ -207,6 +212,7 @@ void SpinBox::_notification(int p_what) { //_value_changed(0); } else if (p_what == NOTIFICATION_ENTER_TREE) { + _adjust_width_for_icon(get_icon("updown")); _value_changed(0); } } diff --git a/scene/gui/spin_box.h b/scene/gui/spin_box.h index b8565ec08..8863f44be 100644 --- a/scene/gui/spin_box.h +++ b/scene/gui/spin_box.h @@ -62,6 +62,8 @@ class SpinBox : public Range { void _line_edit_focus_exit(); + inline void _adjust_width_for_icon(const Ref<Texture> icon); + protected: void _gui_input(const Ref<InputEvent> &p_event); |
