mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-14 04:19:12 +00:00
Listen to palette changes in ColorSelector.
This commit is contained in:
parent
12de365e6f
commit
e74bebcc79
@ -79,6 +79,10 @@ void ColorButton::setColor(const Color& color)
|
||||
{
|
||||
m_color = color;
|
||||
|
||||
// Change the color in its related frame
|
||||
if (m_frame)
|
||||
m_frame->setColor(m_color, ColorSelector::DoNotChangeType);
|
||||
|
||||
// Emit signal
|
||||
Change(color);
|
||||
|
||||
@ -232,7 +236,7 @@ void ColorButton::openSelectorDialog()
|
||||
m_frame->ColorChange.connect(&ColorButton::onFrameColorChange, this);
|
||||
}
|
||||
|
||||
m_frame->setColor(m_color);
|
||||
m_frame->setColor(m_color, ColorSelector::ChangeType);
|
||||
m_frame->open_window();
|
||||
|
||||
x = MID(0, this->rc->x1, JI_SCREEN_W-jrect_w(m_frame->rc));
|
||||
|
@ -99,15 +99,21 @@ ColorSelector::ColorSelector()
|
||||
selectColorType(Color::RgbType);
|
||||
setPreferredSize(gfx::Size(300*jguiscale(), getPreferredSize().h));
|
||||
|
||||
m_onPaletteChangeSlot =
|
||||
App::instance()->PaletteChange.connect(&ColorSelector::onPaletteChange, this);
|
||||
|
||||
initTheme();
|
||||
}
|
||||
|
||||
ColorSelector::~ColorSelector()
|
||||
{
|
||||
App::instance()->PaletteChange.disconnect(m_onPaletteChangeSlot);
|
||||
delete m_onPaletteChangeSlot;
|
||||
|
||||
getPin()->getParent()->removeChild(getPin());
|
||||
}
|
||||
|
||||
void ColorSelector::setColor(const Color& color)
|
||||
void ColorSelector::setColor(const Color& color, SetColorOptions options)
|
||||
{
|
||||
m_color = color;
|
||||
|
||||
@ -120,7 +126,8 @@ void ColorSelector::setColor(const Color& color)
|
||||
if (!m_disableHexUpdate)
|
||||
m_hexColorEntry.setColor(m_color);
|
||||
|
||||
selectColorType(m_color.getType());
|
||||
if (options == ChangeType)
|
||||
selectColorType(m_color.getType());
|
||||
}
|
||||
|
||||
Color ColorSelector::getColor() const
|
||||
@ -165,6 +172,12 @@ void ColorSelector::onColorTypeButtonClick(Event& ev)
|
||||
}
|
||||
}
|
||||
|
||||
void ColorSelector::onPaletteChange()
|
||||
{
|
||||
setColor(getColor(), DoNotChangeType);
|
||||
invalidate();
|
||||
}
|
||||
|
||||
void ColorSelector::findBestfitIndex(const Color& color)
|
||||
{
|
||||
// Find bestfit palette entry
|
||||
@ -180,7 +193,7 @@ void ColorSelector::findBestfitIndex(const Color& color)
|
||||
|
||||
void ColorSelector::setColorWithSignal(const Color& color)
|
||||
{
|
||||
setColor(color);
|
||||
setColor(color, ChangeType);
|
||||
|
||||
// Fire ColorChange signal
|
||||
ColorChange(color);
|
||||
|
@ -33,10 +33,15 @@
|
||||
class ColorSelector : public PopupFramePin
|
||||
{
|
||||
public:
|
||||
enum SetColorOptions {
|
||||
ChangeType,
|
||||
DoNotChangeType
|
||||
};
|
||||
|
||||
ColorSelector();
|
||||
~ColorSelector();
|
||||
|
||||
void setColor(const Color& color);
|
||||
void setColor(const Color& color, SetColorOptions options);
|
||||
Color getColor() const;
|
||||
|
||||
// Signals
|
||||
@ -47,6 +52,7 @@ protected:
|
||||
void onColorSlidersChange(ColorSlidersChangeEvent& ev);
|
||||
void onColorHexEntryChange(const Color& color);
|
||||
void onColorTypeButtonClick(Event& ev);
|
||||
void onPaletteChange();
|
||||
|
||||
private:
|
||||
void selectColorType(Color::Type type);
|
||||
@ -68,6 +74,7 @@ private:
|
||||
HsvSliders m_hsvSliders;
|
||||
GraySlider m_graySlider;
|
||||
Label m_maskLabel;
|
||||
Signal0<void>::SlotType* m_onPaletteChangeSlot;
|
||||
|
||||
// This variable is used to avoid updating the m_hexColorEntry text
|
||||
// when the color change is generated from a
|
||||
|
Loading…
x
Reference in New Issue
Block a user