From 753ae7403fb333f6b2edf44ddae1d67135ed9e28 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Fri, 10 Dec 2021 11:19:10 +0800 Subject: Add drag start/end signals for Slider --- scene/gui/slider.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'scene') diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp index f8cabe172c..11fdd40ecb 100644 --- a/scene/gui/slider.cpp +++ b/scene/gui/slider.cpp @@ -70,8 +70,13 @@ void Slider::gui_input(const Ref &p_event) { } grab.active = true; grab.uvalue = get_as_ratio(); + + emit_signal(SNAME("drag_started")); } else { grab.active = false; + + const bool value_changed = !Math::is_equal_approx((double)grab.uvalue, get_as_ratio()); + emit_signal(SNAME("drag_ended"), value_changed); } } else if (scrollable) { if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_UP) { @@ -264,6 +269,9 @@ void Slider::_bind_methods() { ClassDB::bind_method(D_METHOD("set_scrollable", "scrollable"), &Slider::set_scrollable); ClassDB::bind_method(D_METHOD("is_scrollable"), &Slider::is_scrollable); + ADD_SIGNAL(MethodInfo("drag_started")); + ADD_SIGNAL(MethodInfo("drag_ended", PropertyInfo(Variant::BOOL, "value_changed"))); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editable"), "set_editable", "is_editable"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scrollable"), "set_scrollable", "is_scrollable"); ADD_PROPERTY(PropertyInfo(Variant::INT, "tick_count", PROPERTY_HINT_RANGE, "0,4096,1"), "set_ticks", "get_ticks"); -- cgit v1.2.3