Merge pull request #31442 from KoBeWi/grounded_grabber
Update Slider grabber position when using mouse wheel
This commit is contained in:
commit
d154e55f45
1 changed files with 31 additions and 25 deletions
|
@ -47,42 +47,48 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Ref<InputEventMouseButton> mb = p_event;
|
Ref<InputEventMouseButton> mb = p_event;
|
||||||
if (mb.is_valid() && mb->get_button_index() == BUTTON_LEFT) {
|
if (mb.is_valid()) {
|
||||||
|
|
||||||
if (mb->is_pressed()) {
|
if (mb->get_button_index() == BUTTON_LEFT) {
|
||||||
|
if (mb->is_pressed()) {
|
||||||
|
|
||||||
if (updown_offset != -1 && mb->get_position().x > updown_offset) {
|
if (updown_offset != -1 && mb->get_position().x > updown_offset) {
|
||||||
//there is an updown, so use it.
|
//there is an updown, so use it.
|
||||||
if (mb->get_position().y < get_size().height / 2) {
|
if (mb->get_position().y < get_size().height / 2) {
|
||||||
set_value(get_value() + get_step());
|
set_value(get_value() + get_step());
|
||||||
|
} else {
|
||||||
|
set_value(get_value() - get_step());
|
||||||
|
}
|
||||||
|
return;
|
||||||
} else {
|
} else {
|
||||||
set_value(get_value() - get_step());
|
|
||||||
|
grabbing_spinner_attempt = true;
|
||||||
|
grabbing_spinner_dist_cache = 0;
|
||||||
|
pre_grab_value = get_value();
|
||||||
|
grabbing_spinner = false;
|
||||||
|
grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
grabbing_spinner_attempt = true;
|
if (grabbing_spinner_attempt) {
|
||||||
grabbing_spinner_dist_cache = 0;
|
|
||||||
pre_grab_value = get_value();
|
|
||||||
grabbing_spinner = false;
|
|
||||||
grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (grabbing_spinner_attempt) {
|
if (grabbing_spinner) {
|
||||||
|
|
||||||
if (grabbing_spinner) {
|
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
|
||||||
|
Input::get_singleton()->warp_mouse_position(grabbing_spinner_mouse_pos);
|
||||||
|
update();
|
||||||
|
} else {
|
||||||
|
_focus_entered();
|
||||||
|
}
|
||||||
|
|
||||||
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
|
grabbing_spinner = false;
|
||||||
Input::get_singleton()->warp_mouse_position(grabbing_spinner_mouse_pos);
|
grabbing_spinner_attempt = false;
|
||||||
update();
|
|
||||||
} else {
|
|
||||||
_focus_entered();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
grabbing_spinner = false;
|
|
||||||
grabbing_spinner_attempt = false;
|
|
||||||
}
|
}
|
||||||
|
} else if (mb->get_button_index() == BUTTON_WHEEL_UP || mb->get_button_index() == BUTTON_WHEEL_DOWN) {
|
||||||
|
|
||||||
|
if (grabber->is_visible())
|
||||||
|
call_deferred("update");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue