From 70690c5b54bbd7763823d1632b348ed1462b2cb0 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Mon, 29 May 2023 18:09:24 -0700 Subject: [PATCH] sliderladder: detect if wrap didn't work Wayland doesn't let us control the cursor so this code would break --- app/widget/slider/base/sliderladder.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/widget/slider/base/sliderladder.cpp b/app/widget/slider/base/sliderladder.cpp index 589f85662..048160df5 100644 --- a/app/widget/slider/base/sliderladder.cpp +++ b/app/widget/slider/base/sliderladder.cpp @@ -210,6 +210,9 @@ void SliderLadder::TimerUpdate() int right = screen_->geometry().right(); int width = right - left; if (now_pos <= left || now_pos >= right) { + int orig_now_pos = now_pos; + int orig_wrap = wrap_count_; + if (now_pos <= left) { wrap_count_--; now_pos += width; @@ -217,7 +220,13 @@ void SliderLadder::TimerUpdate() wrap_count_++; now_pos -= width; } - QCursor::setPos(now_pos, QCursor::pos().y()); + + QPoint p(now_pos, QCursor::pos().y()); + QCursor::setPos(p); + if (QCursor::pos() != p) { + wrap_count_ = orig_wrap; + now_pos = orig_now_pos; + } } }