From c87fd45a9faa2fec10fbb6780477ec7eb7bee27b Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Mon, 3 Jan 2022 12:55:57 -0800 Subject: [PATCH] ladder: implement screen wrapping --- app/widget/slider/base/sliderladder.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/widget/slider/base/sliderladder.cpp b/app/widget/slider/base/sliderladder.cpp index c5a376932..ec0700eb7 100644 --- a/app/widget/slider/base/sliderladder.cpp +++ b/app/widget/slider/base/sliderladder.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -191,6 +192,23 @@ void SliderLadder::TimerUpdate() } emit DraggedByValue(now_pos - drag_start_x_, elements_.at(active_element_)->GetMultiplier()); + + // Determine if cursor is at desktop edge, if so wrap around to other side + int left = 0; + int right = 0; + foreach (QScreen *screen, qApp->screens()) { + left = qMin(left, screen->geometry().left()); + right = qMax(right, screen->geometry().right()); + } + if (now_pos == left || now_pos == right) { + if (now_pos == left) { + now_pos = right-1; + } else { + now_pos = left+1; + } + QCursor::setPos(now_pos, QCursor::pos().y()); + } + drag_start_x_ = now_pos; }