Animation Bezier Editor - fixed vertical zoom around mouse

Fixed vertical zoom so it zooms around the mouse cursor not around the center of the window.
This commit is contained in:
Valentin Zagura 2019-09-03 00:15:34 +01:00
parent 8b15ac770c
commit e33f13840d

View file

@ -628,6 +628,7 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
Ref<InputEventMouseButton> mb = p_event; Ref<InputEventMouseButton> mb = p_event;
if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_WHEEL_DOWN) { if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_WHEEL_DOWN) {
float v_zoom_orig = v_zoom;
if (mb->get_command()) { if (mb->get_command()) {
timeline->get_zoom()->set_value(timeline->get_zoom()->get_value() * 1.05); timeline->get_zoom()->set_value(timeline->get_zoom()->get_value() * 1.05);
} else { } else {
@ -635,10 +636,12 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
v_zoom *= 1.2; v_zoom *= 1.2;
} }
} }
v_scroll = v_scroll + (mb->get_position().y - get_size().y / 2) * (v_zoom - v_zoom_orig);
update(); update();
} }
if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_WHEEL_UP) { if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_WHEEL_UP) {
float v_zoom_orig = v_zoom;
if (mb->get_command()) { if (mb->get_command()) {
timeline->get_zoom()->set_value(timeline->get_zoom()->get_value() / 1.05); timeline->get_zoom()->set_value(timeline->get_zoom()->get_value() / 1.05);
} else { } else {
@ -646,6 +649,7 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
v_zoom /= 1.2; v_zoom /= 1.2;
} }
} }
v_scroll = v_scroll + (mb->get_position().y - get_size().y / 2) * (v_zoom - v_zoom_orig);
update(); update();
} }