mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-01 19:13:43 +00:00
Adjust alpha color slider to make it work as percentage or value as specified by the preference settings
This commit is contained in:
parent
b10390625f
commit
fdafc585c2
@ -13,6 +13,8 @@
|
||||
#include "app/color_spaces.h"
|
||||
#include "app/color_utils.h"
|
||||
#include "app/modules/gfx.h"
|
||||
#include "app/ui/alpha_entry.h"
|
||||
#include "app/ui/alpha_slider.h"
|
||||
#include "app/ui/color_sliders.h"
|
||||
#include "app/ui/expr_entry.h"
|
||||
#include "app/ui/skin/skin_slider_property.h"
|
||||
@ -141,19 +143,25 @@ namespace {
|
||||
|
||||
private:
|
||||
int minValue() const {
|
||||
if (m_absSlider->isVisible())
|
||||
return m_absSlider->getMinValue();
|
||||
else if (m_relSlider->isVisible())
|
||||
return m_relSlider->getMinValue();
|
||||
auto slider = (m_absSlider->isVisible() ? m_absSlider : m_relSlider);
|
||||
|
||||
if (slider->isVisible()) {
|
||||
int min;
|
||||
slider->getSliderThemeInfo(&min, nullptr, nullptr);
|
||||
return min;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
int maxValue() const {
|
||||
if (m_absSlider->isVisible())
|
||||
return m_absSlider->getMaxValue();
|
||||
else if (m_relSlider->isVisible())
|
||||
return m_relSlider->getMaxValue();
|
||||
auto slider = (m_absSlider->isVisible() ? m_absSlider : m_relSlider);
|
||||
|
||||
if (slider->isVisible()) {
|
||||
int max;
|
||||
slider->getSliderThemeInfo(nullptr, &max, nullptr);
|
||||
return max;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
@ -373,7 +381,9 @@ void ColorSliders::addSlider(const Channel channel,
|
||||
ASSERT(!item.label);
|
||||
item.label = new Label(labelText);
|
||||
item.box = new HBox();
|
||||
item.absSlider = new Slider(absMin, absMax, 0);
|
||||
item.absSlider = (channel != Channel::Alpha
|
||||
? new Slider(absMin, absMax, 0)
|
||||
: new AlphaSlider(0, AlphaSlider::Type::ALPHA));
|
||||
item.relSlider = new Slider(relMin, relMax, 0);
|
||||
item.entry = new ColorEntry(item.absSlider, item.relSlider);
|
||||
|
||||
@ -468,8 +478,7 @@ void ColorSliders::onEntryChange(const Channel i)
|
||||
Slider* slider = (m_mode == Mode::Absolute ?
|
||||
m_items[i].absSlider:
|
||||
m_items[i].relSlider);
|
||||
value = std::clamp(value, slider->getMinValue(), slider->getMaxValue());
|
||||
slider->setValue(value);
|
||||
slider->updateValue(value);
|
||||
|
||||
onControlChange(i);
|
||||
}
|
||||
@ -494,7 +503,10 @@ void ColorSliders::updateEntryText(const Channel i)
|
||||
Slider* slider = (m_mode == Mode::Absolute ? m_items[i].absSlider:
|
||||
m_items[i].relSlider);
|
||||
|
||||
m_items[i].entry->setTextf("%d", slider->getValue());
|
||||
int value;
|
||||
slider->getSliderThemeInfo(nullptr, nullptr, &value);
|
||||
|
||||
m_items[i].entry->setTextf("%d", value);
|
||||
if (m_items[i].entry->hasFocus())
|
||||
m_items[i].entry->selectAllText();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user