From 53d6d37fcf719067129fd0c2957154ff6a058ba9 Mon Sep 17 00:00:00 2001 From: Emmanuel Barroga Date: Mon, 21 Oct 2019 16:42:17 -0700 Subject: [PATCH] Fixes spinbox not releasing focus on value change Trying to release focus of the spinbox's lineedit would not work when done in the "value_changed" callback. The reason is because the "value_change" signal is called first, then the "get_focus" method is called next. This causes the spinbox to get_focus after you try to release focus within the "value_changed" callback. To resolve this, spinbox should get focus first and then emit "value_changed". --- scene/gui/spin_box.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp index 172c366c41c2..bf067898e65b 100644 --- a/scene/gui/spin_box.cpp +++ b/scene/gui/spin_box.cpp @@ -108,21 +108,21 @@ void SpinBox::_gui_input(const Ref &p_event) { case BUTTON_LEFT: { + line_edit->grab_focus(); + set_value(get_value() + (up ? get_step() : -get_step())); range_click_timer->set_wait_time(0.6); range_click_timer->set_one_shot(true); range_click_timer->start(); - line_edit->grab_focus(); - drag.allowed = true; drag.capture_pos = mb->get_position(); } break; case BUTTON_RIGHT: { - set_value((up ? get_max() : get_min())); line_edit->grab_focus(); + set_value((up ? get_max() : get_min())); } break; case BUTTON_WHEEL_UP: { if (line_edit->has_focus()) {