diff options
author | Emmanuel Barroga <emmanuelbarroga@gmail.com> | 2019-10-21 16:42:17 -0700 |
---|---|---|
committer | Emmanuel Barroga <emmanuelbarroga@gmail.com> | 2019-10-21 16:42:17 -0700 |
commit | 53d6d37fcf719067129fd0c2957154ff6a058ba9 (patch) | |
tree | 7dd8e4d33aed2efd9486a0496d5bd790fd386ad3 /scene | |
parent | 3564547208030264a28cc55232992aab3cbdad94 (diff) |
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".
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/spin_box.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp index 172c366c41..bf067898e6 100644 --- a/scene/gui/spin_box.cpp +++ b/scene/gui/spin_box.cpp @@ -108,21 +108,21 @@ void SpinBox::_gui_input(const Ref<InputEvent> &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()) { |