瀏覽代碼

Merge pull request #36231 from Calinou/editorspinslider-add-left-margin

Add a margin to EditorSpinSlider to visually line up the edited number
Rémi Verschelde 5 年之前
父節點
當前提交
8aad43e0c1
共有 1 個文件被更改,包括 14 次插入0 次删除
  1. 14 0
      editor/editor_spin_slider.cpp

+ 14 - 0
editor/editor_spin_slider.cpp

@@ -31,6 +31,7 @@
 #include "editor_spin_slider.h"
 #include "editor_spin_slider.h"
 #include "core/math/expression.h"
 #include "core/math/expression.h"
 #include "core/os/input.h"
 #include "core/os/input.h"
+#include "editor_node.h"
 #include "editor_scale.h"
 #include "editor_scale.h"
 
 
 String EditorSpinSlider::get_tooltip(const Point2 &p_pos) const {
 String EditorSpinSlider::get_tooltip(const Point2 &p_pos) const {
@@ -185,6 +186,19 @@ void EditorSpinSlider::_notification(int p_what) {
 		}
 		}
 	}
 	}
 
 
+	if (p_what == NOTIFICATION_READY) {
+		// Add a left margin to the stylebox to make the number align with the Label
+		// when it's edited. The LineEdit "focus" stylebox uses the "normal" stylebox's
+		// default margins.
+		Ref<StyleBoxFlat> stylebox =
+				EditorNode::get_singleton()->get_theme_base()->get_stylebox("normal", "LineEdit")->duplicate();
+		// EditorSpinSliders with a label have more space on the left, so add an
+		// higher margin to match the location where the text begins.
+		// The margin values below were determined by empirical testing.
+		stylebox->set_default_margin(MARGIN_LEFT, (get_label() != String() ? 23 : 16) * EDSCALE);
+		value_input->add_style_override("normal", stylebox);
+	}
+
 	if (p_what == NOTIFICATION_DRAW) {
 	if (p_what == NOTIFICATION_DRAW) {
 
 
 		updown_offset = -1;
 		updown_offset = -1;