Merge pull request #16432 from Ovnuniarchos/master

SpinBoxes calculate correctly their width before first redraw.
This commit is contained in:
Rémi Verschelde 2018-02-13 15:46:39 +01:00 committed by GitHub
commit 8d75b27405
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View file

@ -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);
}
}

View file

@ -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);