From 51064f44f590e3fa5bdf20f4d83029a19731e292 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 13 Apr 2021 23:47:58 +1000 Subject: [PATCH] slider: use cursor-less drag when no multipliers are active --- app/widget/slider/sliderbase.cpp | 9 +++++++-- app/widget/slider/sliderbase.h | 2 ++ app/widget/slider/sliderladder.cpp | 11 ++++++++--- app/widget/slider/sliderladder.h | 2 ++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/widget/slider/sliderbase.cpp b/app/widget/slider/sliderbase.cpp index ce568cbb7..447fd57f4 100644 --- a/app/widget/slider/sliderbase.cpp +++ b/app/widget/slider/sliderbase.cpp @@ -212,6 +212,11 @@ QString SliderBase::GetFormat() const } } +bool SliderBase::UsingLadders() const +{ + return ladder_element_count_ > 0 && Config::Current()[QStringLiteral("UseSliderLadders")].toBool(); +} + void SliderBase::UpdateLabel(const QVariant &v) { if (tristate_) { @@ -303,7 +308,7 @@ void SliderBase::LadderDragged(int value, double multiplier) drag_ladder_->SetValue(ValueToString(clamped_temp_dragged_value_)); - if (!Config::Current()[QStringLiteral("UseSliderLadders")].toBool()) { + if (!UsingLadders()) { RepositionLadder(); } @@ -394,7 +399,7 @@ void SliderBase::ResetValue() void SliderBase::RepositionLadder() { if (drag_ladder_) { - if (Config::Current()[QStringLiteral("UseSliderLadders")].toBool()) { + if (UsingLadders()) { drag_ladder_->move(QCursor::pos() - QPoint(drag_ladder_->width()/2, drag_ladder_->height()/2)); } else { QPoint label_global_pos = label_->mapToGlobal(label_->pos()); diff --git a/app/widget/slider/sliderbase.h b/app/widget/slider/sliderbase.h index c4aca58c7..d0987794e 100644 --- a/app/widget/slider/sliderbase.h +++ b/app/widget/slider/sliderbase.h @@ -101,6 +101,8 @@ private: QString GetFormat() const; + bool UsingLadders() const; + SliderLabel* label_; FocusableLineEdit* editor_; diff --git a/app/widget/slider/sliderladder.cpp b/app/widget/slider/sliderladder.cpp index af630dedf..f25f55217 100644 --- a/app/widget/slider/sliderladder.cpp +++ b/app/widget/slider/sliderladder.cpp @@ -76,7 +76,7 @@ SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QWidget* drag_timer_.setInterval(10); connect(&drag_timer_, &QTimer::timeout, this, &SliderLadder::TimerUpdate); - if (Config::Current()[QStringLiteral("UseSliderLadders")].toBool()) { + if (UsingLadders()) { drag_start_x_ = -1; } else { #if defined(Q_OS_MAC) @@ -94,7 +94,7 @@ SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QWidget* SliderLadder::~SliderLadder() { - if (Config::Current()[QStringLiteral("UseSliderLadders")].toBool()) { + if (UsingLadders()) { } else { #if defined(Q_OS_MAC) @@ -142,7 +142,7 @@ void SliderLadder::TimerUpdate() int ladder_right = this->x() + this->width() - 1; int now_pos = QCursor::pos().x(); - if (Config::Current()[QStringLiteral("UseSliderLadders")].toBool()) { + if (UsingLadders()) { bool is_under_mouse = (now_pos >= ladder_left && now_pos <= ladder_right); @@ -226,6 +226,11 @@ void SliderLadder::TimerUpdate() } } +bool SliderLadder::UsingLadders() const +{ + return elements_.size() > 1; +} + SliderLadderElement::SliderLadderElement(const double &multiplier, QWidget *parent) : QWidget(parent), multiplier_(multiplier), diff --git a/app/widget/slider/sliderladder.h b/app/widget/slider/sliderladder.h index ca67c303d..ffd4a6ced 100644 --- a/app/widget/slider/sliderladder.h +++ b/app/widget/slider/sliderladder.h @@ -83,6 +83,8 @@ signals: void Released(); private: + bool UsingLadders() const; + int drag_start_x_; int drag_start_y_;