浏览代码

Merge pull request #31916 from puthre/bezier_editor_zoom

Animation Bezier Editor - fixed vertical zoom around mouse
Rémi Verschelde 6 年之前
父节点
当前提交
2ee0ca3d43
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      editor/animation_bezier_editor.cpp

+ 4 - 0
editor/animation_bezier_editor.cpp

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