aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMason Ashbridge2016-08-24 03:17:54 -0400
committerRémi Verschelde2016-09-01 08:43:59 +0200
commit07caf4438dc3a05dec32c96d93065a1a8b2ea248 (patch)
tree3b2f15e207b8fd77c20281898f6a5e4e6e6ab37b
parent6df46803a7c2a32a91286ae91d0ad9529053c44d (diff)
downloadgodot-07caf4438dc3a05dec32c96d93065a1a8b2ea248.tar.gz
godot-07caf4438dc3a05dec32c96d93065a1a8b2ea248.tar.zst
godot-07caf4438dc3a05dec32c96d93065a1a8b2ea248.zip
Slider value accounts for grabber offset
(cherry picked from commit fb54ba63975a748b2a0dc9d68a94e4e27d0a8c7f)
-rw-r--r--scene/gui/slider.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp
index d5d14ad64..3b9ca40bd 100644
--- a/scene/gui/slider.cpp
+++ b/scene/gui/slider.cpp
@@ -47,12 +47,15 @@ void Slider::_input_event(InputEvent p_event) {
if (mb.button_index==BUTTON_LEFT) {
if (mb.pressed) {
+ Ref<Texture> grabber = get_icon(mouse_inside||has_focus()?"grabber_hilite":"grabber");
grab.pos=orientation==VERTICAL?mb.y:mb.x;
- double max = orientation==VERTICAL ? get_size().height : get_size().width ;
+ double grab_width = (double)grabber->get_size().width;
+ double grab_height = (double)grabber->get_size().height;
+ double max = orientation==VERTICAL ? get_size().height - grab_height : get_size().width - grab_width;
if (orientation==VERTICAL)
- set_unit_value( 1 - ((double)grab.pos / max) );
+ set_unit_value( 1 - (((double)grab.pos - (grab_height / 2.0)) / max) );
else
- set_unit_value((double)grab.pos / max);
+ set_unit_value(((double)grab.pos - (grab_width/2.0)) / max);
grab.active=true;
grab.uvalue=get_unit_value();
} else {