Browse Source

Merge pull request #16432 from Ovnuniarchos/master

SpinBoxes calculate correctly their width before first redraw.
Rémi Verschelde 7 years ago
parent
commit
8d75b27405
2 changed files with 13 additions and 5 deletions
  1. 11 5
      scene/gui/spin_box.cpp
  2. 2 0
      scene/gui/spin_box.h

+ 11 - 5
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);
 	}
 }

+ 2 - 0
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);