summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorEmmanuel Barroga <emmanuelbarroga@gmail.com>2019-10-21 16:42:17 -0700
committerEmmanuel Barroga <emmanuelbarroga@gmail.com>2019-10-21 16:42:17 -0700
commit53d6d37fcf719067129fd0c2957154ff6a058ba9 (patch)
tree7dd8e4d33aed2efd9486a0496d5bd790fd386ad3 /scene
parent3564547208030264a28cc55232992aab3cbdad94 (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.cpp6
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()) {