slider: improved dragging behavior when min/max are set
This commit is contained in:
@@ -121,7 +121,7 @@ void SliderBase::ForceLabelUpdate()
|
||||
const QVariant &SliderBase::Value() const
|
||||
{
|
||||
if (IsDragging()) {
|
||||
return temp_dragged_value_;
|
||||
return clamped_temp_dragged_value_;
|
||||
}
|
||||
|
||||
return value_;
|
||||
@@ -288,22 +288,17 @@ void SliderBase::LadderDragged(int value, double multiplier)
|
||||
temp_dragged_value_ = drag_val;
|
||||
}
|
||||
|
||||
QVariant clamped = ClampValue(temp_dragged_value_);
|
||||
clamped_temp_dragged_value_ = ClampValue(temp_dragged_value_);
|
||||
|
||||
if (clamped != temp_dragged_value_) {
|
||||
temp_dragged_value_ = clamped;
|
||||
dragged_diff_ = temp_dragged_value_.toDouble() - value_.toDouble();
|
||||
}
|
||||
UpdateLabel(clamped_temp_dragged_value_);
|
||||
|
||||
UpdateLabel(temp_dragged_value_);
|
||||
|
||||
drag_ladder_->SetValue(ValueToString(temp_dragged_value_));
|
||||
drag_ladder_->SetValue(ValueToString(clamped_temp_dragged_value_));
|
||||
|
||||
if (!Config::Current()[QStringLiteral("UseSliderLadders")].toBool()) {
|
||||
RepositionLadder();
|
||||
}
|
||||
|
||||
emit ValueChanged(temp_dragged_value_);
|
||||
emit ValueChanged(clamped_temp_dragged_value_);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -322,10 +317,10 @@ void SliderBase::LadderReleased()
|
||||
// No-op
|
||||
break;
|
||||
case kInteger:
|
||||
SetValue(temp_dragged_value_.toInt());
|
||||
SetValue(clamped_temp_dragged_value_.toInt());
|
||||
break;
|
||||
case kFloat:
|
||||
SetValue(temp_dragged_value_.toDouble());
|
||||
SetValue(clamped_temp_dragged_value_.toDouble());
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ private:
|
||||
double dragged_diff_;
|
||||
|
||||
QVariant temp_dragged_value_;
|
||||
QVariant clamped_temp_dragged_value_;
|
||||
|
||||
QVariant offset_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user