summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2020-02-15 02:18:24 +0100
committerHugo Locurcio <hugo.locurcio@hugo.pro>2020-02-15 02:38:51 +0100
commitcc615fee5f88d543fb5877ddd0207b832772f7fe (patch)
treee535a7900e9e5059c49cce2cf4d3d25cae185047 /editor
parent7724b842f61e570fcfb1254b12df8c9dc30375c6 (diff)
Add a margin to EditorSpinSlider to visually line up the edited number
This means clicking on an EditorSpinSlider to edit its value will no longer cause the number to be visually offset while it's being edited.
Diffstat (limited to 'editor')
-rw-r--r--editor/editor_spin_slider.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp
index bb8bcdfe6c..bdd5c57b43 100644
--- a/editor/editor_spin_slider.cpp
+++ b/editor/editor_spin_slider.cpp
@@ -31,6 +31,7 @@
#include "editor_spin_slider.h"
#include "core/math/expression.h"
#include "core/os/input.h"
+#include "editor_node.h"
#include "editor_scale.h"
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) {
updown_offset = -1;