diff options
author | Yuri Sizov <yuris@humnom.net> | 2023-12-19 13:02:04 +0100 |
---|---|---|
committer | Yuri Sizov <yuris@humnom.net> | 2023-12-19 13:02:04 +0100 |
commit | 547374b07a20a145149bc036c93a25c0c56236fa (patch) | |
tree | 294bdaedcaf6ca573b45f5e0f65b35afe39ab311 | |
parent | d8a65b3f460e0a1007aad422c0edef360740d80a (diff) | |
parent | 187bb61e7b87a3a17aa3f10761bd5aec955fde51 (diff) | |
download | redot-engine-547374b07a20a145149bc036c93a25c0c56236fa.tar.gz |
Merge pull request #85473 from miv391/fix-horizontal-mouse-wheeling-in-2d-view
Fix horizontal scroll in editor's 2D view
-rw-r--r-- | scene/gui/view_panner.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/scene/gui/view_panner.cpp b/scene/gui/view_panner.cpp index c61fa1d9b8..438a228c4f 100644 --- a/scene/gui/view_panner.cpp +++ b/scene/gui/view_panner.cpp @@ -43,12 +43,14 @@ bool ViewPanner::gui_input(const Ref<InputEvent> &p_event, Rect2 p_canvas_rect) if (scroll_vec != Vector2() && mb->is_pressed()) { if (control_scheme == SCROLL_PANS) { if (mb->is_ctrl_pressed()) { - // Compute the zoom factor. - float zoom_factor = mb->get_factor() <= 0 ? 1.0 : mb->get_factor(); - zoom_factor = ((scroll_zoom_factor - 1.0) * zoom_factor) + 1.0; - float zoom = (scroll_vec.x + scroll_vec.y) > 0 ? 1.0 / scroll_zoom_factor : scroll_zoom_factor; - zoom_callback.call(zoom, mb->get_position(), p_event); - return true; + if (scroll_vec.y != 0) { + // Compute the zoom factor. + float zoom_factor = mb->get_factor() <= 0 ? 1.0 : mb->get_factor(); + zoom_factor = ((scroll_zoom_factor - 1.0) * zoom_factor) + 1.0; + float zoom = scroll_vec.y > 0 ? 1.0 / scroll_zoom_factor : scroll_zoom_factor; + zoom_callback.call(zoom, mb->get_position(), p_event); + return true; + } } else { Vector2 panning = scroll_vec * mb->get_factor(); if (pan_axis == PAN_AXIS_HORIZONTAL) { @@ -73,11 +75,11 @@ bool ViewPanner::gui_input(const Ref<InputEvent> &p_event, Rect2 p_canvas_rect) } pan_callback.call(-panning * scroll_speed, p_event); return true; - } else if (!mb->is_shift_pressed()) { + } else if (!mb->is_shift_pressed() && scroll_vec.y != 0) { // Compute the zoom factor. float zoom_factor = mb->get_factor() <= 0 ? 1.0 : mb->get_factor(); zoom_factor = ((scroll_zoom_factor - 1.0) * zoom_factor) + 1.0; - float zoom = (scroll_vec.x + scroll_vec.y) > 0 ? 1.0 / scroll_zoom_factor : scroll_zoom_factor; + float zoom = scroll_vec.y > 0 ? 1.0 / scroll_zoom_factor : scroll_zoom_factor; zoom_callback.call(zoom, mb->get_position(), p_event); return true; } |