diff --git a/src/app/ui/color_sliders.cpp b/src/app/ui/color_sliders.cpp index 2b1baed90..ee70e6d18 100644 --- a/src/app/ui/color_sliders.cpp +++ b/src/app/ui/color_sliders.cpp @@ -230,6 +230,7 @@ ColorSliders::ColorSliders() , m_items(int(Channel::Channels)) , m_grid(3, false) , m_mode(Mode::Absolute) + , m_lockSlider(-1) , m_lockEntry(-1) , m_color(app::Color::fromMask()) { @@ -389,12 +390,18 @@ void ColorSliders::addSlider(const Channel channel, void ColorSliders::setAbsSliderValue(const Channel i, int value) { + if (m_lockSlider == i) + return; + m_items[i].absSlider->setValue(value); updateEntryText(i); } void ColorSliders::setRelSliderValue(const Channel i, int value) { + if (m_lockSlider == i) + return; + m_items[i].relSlider->setValue(value); updateEntryText(i); } @@ -427,6 +434,8 @@ void ColorSliders::syncRelHsvHslSliders() void ColorSliders::onSliderChange(const Channel i) { + base::ScopedValue lock(m_lockSlider, i, m_lockSlider); + updateEntryText(i); onControlChange(i); } diff --git a/src/app/ui/color_sliders.h b/src/app/ui/color_sliders.h index ffc1c3e82..8a0a16e89 100644 --- a/src/app/ui/color_sliders.h +++ b/src/app/ui/color_sliders.h @@ -85,6 +85,7 @@ namespace app { std::vector m_items; ui::Grid m_grid; Mode m_mode; + int m_lockSlider; int m_lockEntry; app::Color m_color; };