Fixes rounding error display in Slider control (#6477)
Signed-off-by: John Jones-Steele <82226755+jjjoness@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
366a7118ab
commit
219653a75b
@@ -243,7 +243,7 @@ SliderDoubleCombo::SliderDoubleCombo(QWidget* parent)
|
||||
|
||||
InitialiseSliderCombo(this, layout, m_spinbox, m_slider);
|
||||
|
||||
connect(m_slider, &SliderDouble::valueChanged, this, &SliderDoubleCombo::setValue);
|
||||
connect(m_slider, &SliderDouble::valueChanged, this, &SliderDoubleCombo::setValueSlider);
|
||||
connect(m_spinbox, QOverload<double>::of(&DoubleSpinBox::valueChanged), this, &SliderDoubleCombo::setValue);
|
||||
connect(m_slider, &SliderDouble::sliderReleased, this, &SliderDoubleCombo::editingFinished);
|
||||
connect(m_spinbox, &DoubleSpinBox::editingFinished, this, &SliderDoubleCombo::editingFinished);
|
||||
@@ -254,7 +254,7 @@ SliderDoubleCombo::~SliderDoubleCombo()
|
||||
{
|
||||
}
|
||||
|
||||
void SliderDoubleCombo::setValue(double value)
|
||||
void SliderDoubleCombo::setValueSlider(double value)
|
||||
{
|
||||
const bool doEmit = m_value != value;
|
||||
m_value = value;
|
||||
@@ -264,10 +264,34 @@ void SliderDoubleCombo::setValue(double value)
|
||||
|
||||
if (doEmit)
|
||||
{
|
||||
// We don't want to update the slider from setValue as this
|
||||
// causes rounding errors in the tooltip hint.
|
||||
m_fromSlider = true;
|
||||
Q_EMIT valueChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void SliderDoubleCombo::setValue(double value)
|
||||
{
|
||||
const bool doEmit = m_value != value;
|
||||
m_value = value;
|
||||
|
||||
updateSpinBox();
|
||||
if (!m_fromSlider)
|
||||
{
|
||||
updateSlider();
|
||||
|
||||
if (doEmit)
|
||||
{
|
||||
Q_EMIT valueChanged();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_fromSlider = false;
|
||||
}
|
||||
}
|
||||
|
||||
SliderDouble* SliderDoubleCombo::slider() const
|
||||
{
|
||||
return m_slider;
|
||||
|
||||
@@ -151,6 +151,8 @@ namespace AzQtComponents
|
||||
|
||||
//! Sets the current value.
|
||||
void setValue(double value);
|
||||
//! Sets the current value.
|
||||
void setValueSlider(double value);
|
||||
//! Return the current value.
|
||||
Q_REQUIRED_RESULT double value() const;
|
||||
|
||||
@@ -235,5 +237,6 @@ namespace AzQtComponents
|
||||
double m_softMinimum = 0.0;
|
||||
double m_softMaximum = 100.0;
|
||||
double m_value = 0.0;
|
||||
bool m_fromSlider{ false };
|
||||
};
|
||||
} // namespace AzQtComponents
|
||||
|
||||
Reference in New Issue
Block a user