Skip to content

Commit 4f827e6

Browse files
committed
Merge pull request #95169 from Calinou/editorspinslider-float-step-1-slider
Make EditorSpinSlider display a slider for floats with a step of 1.0
2 parents 96a6dc2 + 57700b0 commit 4f827e6

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

doc/classes/EditorSpinSlider.xml

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
<tutorials>
1111
</tutorials>
1212
<members>
13+
<member name="editing_integer" type="bool" setter="set_editing_integer" getter="is_editing_integer" default="false">
14+
If [code]true[/code], the [EditorSpinSlider] is considered to be editing an integer value. If [code]false[/code], the [EditorSpinSlider] is considered to be editing a floating-point value. This is used to determine whether a slider should be drawn. The slider is only drawn for floats; integers use up-down arrows similar to [SpinBox] instead.
15+
</member>
1316
<member name="flat" type="bool" setter="set_flat" getter="is_flat" default="false">
1417
If [code]true[/code], the slider will not draw background.
1518
</member>

editor/editor_properties.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1343,6 +1343,7 @@ void EditorPropertyInteger::setup(int64_t p_min, int64_t p_max, int64_t p_step,
13431343
EditorPropertyInteger::EditorPropertyInteger() {
13441344
spin = memnew(EditorSpinSlider);
13451345
spin->set_flat(true);
1346+
spin->set_editing_integer(true);
13461347
add_child(spin);
13471348
add_focusable(spin);
13481349
spin->connect(SceneStringName(value_changed), callable_mp(this, &EditorPropertyInteger::_value_changed));

editor/gui/editor_spin_slider.cpp

+18-1
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ void EditorSpinSlider::_draw_spin_slider() {
376376
TS->free_rid(num_rid);
377377

378378
if (!hide_slider) {
379-
if (get_step() == 1) {
379+
if (editing_integer) {
380380
Ref<Texture2D> updown2 = read_only ? theme_cache.updown_disabled_icon : theme_cache.updown_icon;
381381
int updown_vofs = (size.height - updown2->get_height()) / 2;
382382
if (rtl) {
@@ -530,6 +530,19 @@ bool EditorSpinSlider::is_hiding_slider() const {
530530
return hide_slider;
531531
}
532532

533+
void EditorSpinSlider::set_editing_integer(bool p_editing_integer) {
534+
if (p_editing_integer == editing_integer) {
535+
return;
536+
}
537+
538+
editing_integer = p_editing_integer;
539+
queue_redraw();
540+
}
541+
542+
bool EditorSpinSlider::is_editing_integer() const {
543+
return editing_integer;
544+
}
545+
533546
void EditorSpinSlider::set_label(const String &p_label) {
534547
label = p_label;
535548
queue_redraw();
@@ -689,11 +702,15 @@ void EditorSpinSlider::_bind_methods() {
689702
ClassDB::bind_method(D_METHOD("set_hide_slider", "hide_slider"), &EditorSpinSlider::set_hide_slider);
690703
ClassDB::bind_method(D_METHOD("is_hiding_slider"), &EditorSpinSlider::is_hiding_slider);
691704

705+
ClassDB::bind_method(D_METHOD("set_editing_integer", "editing_integer"), &EditorSpinSlider::set_editing_integer);
706+
ClassDB::bind_method(D_METHOD("is_editing_integer"), &EditorSpinSlider::is_editing_integer);
707+
692708
ADD_PROPERTY(PropertyInfo(Variant::STRING, "label"), "set_label", "get_label");
693709
ADD_PROPERTY(PropertyInfo(Variant::STRING, "suffix"), "set_suffix", "get_suffix");
694710
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "read_only"), "set_read_only", "is_read_only");
695711
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flat"), "set_flat", "is_flat");
696712
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_slider"), "set_hide_slider", "is_hiding_slider");
713+
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editing_integer"), "set_editing_integer", "is_editing_integer");
697714

698715
ADD_SIGNAL(MethodInfo("grabbed"));
699716
ADD_SIGNAL(MethodInfo("ungrabbed"));

editor/gui/editor_spin_slider.h

+4
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class EditorSpinSlider : public Range {
7171

7272
bool hide_slider = false;
7373
bool flat = false;
74+
bool editing_integer = false;
7475

7576
void _grab_start();
7677
void _grab_end();
@@ -113,6 +114,9 @@ class EditorSpinSlider : public Range {
113114
void set_hide_slider(bool p_hide);
114115
bool is_hiding_slider() const;
115116

117+
void set_editing_integer(bool p_editing_integer);
118+
bool is_editing_integer() const;
119+
116120
void set_read_only(bool p_enable);
117121
bool is_read_only() const;
118122

0 commit comments

Comments
 (0)