From 8dbcbea89191402bdc05a51d23a563d1092b3142 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Thu, 6 Jan 2022 09:42:29 -0800 Subject: [PATCH] sliderladder: don't switch rungs if wrapped around screen --- app/widget/slider/base/sliderladder.cpp | 5 ++++- app/widget/slider/base/sliderladder.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/widget/slider/base/sliderladder.cpp b/app/widget/slider/base/sliderladder.cpp index ec0700eb7..b85ed4d95 100644 --- a/app/widget/slider/base/sliderladder.cpp +++ b/app/widget/slider/base/sliderladder.cpp @@ -79,6 +79,7 @@ SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QString if (UsingLadders()) { drag_start_x_ = -1; + wrap_count_ = 0; } else { #if defined(Q_OS_MAC) CGAssociateMouseAndMouseCursorPosition(false); @@ -145,7 +146,7 @@ void SliderLadder::TimerUpdate() if (UsingLadders()) { - bool is_under_mouse = (now_pos >= ladder_left && now_pos <= ladder_right); + bool is_under_mouse = (now_pos >= ladder_left && now_pos <= ladder_right && wrap_count_ == 0); if (drag_start_x_ != -1 && (is_under_mouse || (drag_start_x_ < ladder_left && now_pos > ladder_right) @@ -202,8 +203,10 @@ void SliderLadder::TimerUpdate() } if (now_pos == left || now_pos == right) { if (now_pos == left) { + wrap_count_--; now_pos = right-1; } else { + wrap_count_++; now_pos = left+1; } QCursor::setPos(now_pos, QCursor::pos().y()); diff --git a/app/widget/slider/base/sliderladder.h b/app/widget/slider/base/sliderladder.h index 04ca77b20..919cccc9f 100644 --- a/app/widget/slider/base/sliderladder.h +++ b/app/widget/slider/base/sliderladder.h @@ -87,6 +87,7 @@ private: int drag_start_x_; int drag_start_y_; + int wrap_count_; QList elements_;