mirror of
https://github.com/RGBCube/serenity
synced 2025-05-25 15:55:07 +00:00
LibGUI: Don't recalcuate color from hue if it was not set by hue
Basically, setting the hue is numerically sensitive when the value or saturation are low.
This commit is contained in:
parent
9670d9ad50
commit
1720030625
1 changed files with 7 additions and 2 deletions
|
@ -68,6 +68,7 @@ public:
|
||||||
Function<void(Color)> on_pick;
|
Function<void(Color)> on_pick;
|
||||||
void set_color(Color);
|
void set_color(Color);
|
||||||
void set_hue(double);
|
void set_hue(double);
|
||||||
|
void set_hue_from_pick(double);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ColorField(Color color);
|
ColorField(Color color);
|
||||||
|
@ -469,7 +470,7 @@ CustomColorWidget::CustomColorWidget(Color color)
|
||||||
auto slider_width = 24 + (m_color_slider->frame_thickness() * 2);
|
auto slider_width = 24 + (m_color_slider->frame_thickness() * 2);
|
||||||
m_color_slider->set_preferred_size(slider_width, size);
|
m_color_slider->set_preferred_size(slider_width, size);
|
||||||
m_color_slider->on_pick = [this](double value) {
|
m_color_slider->on_pick = [this](double value) {
|
||||||
m_color_field->set_hue(value);
|
m_color_field->set_hue_from_pick(value);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -538,9 +539,13 @@ void ColorField::set_hue(double hue)
|
||||||
auto color = Color::from_hsv(hsv);
|
auto color = Color::from_hsv(hsv);
|
||||||
color.set_alpha(m_color.alpha());
|
color.set_alpha(m_color.alpha());
|
||||||
set_color(color);
|
set_color(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColorField::set_hue_from_pick(double hue)
|
||||||
|
{
|
||||||
|
set_hue(hue);
|
||||||
if (on_pick)
|
if (on_pick)
|
||||||
on_pick(color);
|
on_pick(m_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColorField::pick_color_at_position(GUI::MouseEvent& event)
|
void ColorField::pick_color_at_position(GUI::MouseEvent& event)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue