diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-03-14 11:35:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-14 11:35:46 +0100 |
commit | 55d9c31dcb1703d105185a88c3c60c099f67a51d (patch) | |
tree | d28d20047c73984478dd73db107594e0d6789637 | |
parent | 61155b5e299635c0b55cc63187296ce9cd8a4c6d (diff) | |
parent | 919b097b9e61098815a00a26e47c56f26b0abe38 (diff) |
Merge pull request #46943 from jmb462/fix-editor-slider-grabber-zoomed-bad-position
Fix EditorSpinSlider grabber zoom issues (Fix #46632)
-rw-r--r-- | editor/editor_spin_slider.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp index 618d953c56..bbabc08ea4 100644 --- a/editor/editor_spin_slider.cpp +++ b/editor/editor_spin_slider.cpp @@ -175,7 +175,9 @@ void EditorSpinSlider::_grabber_gui_input(const Ref<InputEvent> &p_event) { return; } - float grabbing_ofs = (grabber->get_transform().xform(mm->get_position()).x - grabbing_from) / float(grabber_range); + float scale_x = get_global_transform_with_canvas().get_scale().x; + ERR_FAIL_COND(Math::is_zero_approx(scale_x)); + float grabbing_ofs = (grabber->get_transform().xform(mm->get_position()).x - grabbing_from) / float(grabber_range) / scale_x; set_as_ratio(grabbing_ratio + grabbing_ofs); update(); } @@ -300,8 +302,10 @@ void EditorSpinSlider::_notification(int p_what) { grabber->set_texture(grabber_tex); } + Vector2 scale = get_global_transform_with_canvas().get_scale(); + grabber->set_scale(scale); grabber->set_size(Size2(0, 0)); - grabber->set_position(get_global_position() + grabber_rect.position + grabber_rect.size * 0.5 - grabber->get_size() * 0.5); + grabber->set_position(get_global_position() + (grabber_rect.position + grabber_rect.size * 0.5 - grabber->get_size() * 0.5) * scale); if (mousewheel_over_grabber) { Input::get_singleton()->warp_mouse_position(grabber->get_position() + grabber_rect.size); |