Skip to content

Commit

Permalink
LibGUI: Exit ColorPicker (successfully) when double-clicking a color
Browse files Browse the repository at this point in the history
It feels natural that if I double click a color button, the dialog
closes successfully and "returns" that color.
  • Loading branch information
awesomekling committed Apr 29, 2020
1 parent 57fe4d1 commit 6a01827
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions Libraries/LibGUI/ColorPicker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,13 @@ class ColorButton : public AbstractButton {

protected:
virtual void click() override;
virtual void doubleclick_event(GUI::MouseEvent&) override;
virtual void paint_event(PaintEvent&) override;

private:
explicit ColorButton(Color color = {});
explicit ColorButton(ColorPicker& picker, Color color = {});

ColorPicker& m_picker;
Color m_color;
bool m_selected { false };
};
Expand Down Expand Up @@ -310,7 +312,7 @@ void ColorPicker::create_color_button(Widget& container, unsigned rgb)
{
Color color = Color::from_rgb(rgb);

auto& widget = container.add<ColorButton>(color);
auto& widget = container.add<ColorButton>(*this, color);
widget.set_size_policy(SizePolicy::Fill, SizePolicy::Fill);
widget.on_click = [this](Color color) {
for (auto& value : m_color_widgets) {
Expand All @@ -328,10 +330,10 @@ void ColorPicker::create_color_button(Widget& container, unsigned rgb)
m_color_widgets.append(&widget);
}

ColorButton::ColorButton(Color color)
ColorButton::ColorButton(ColorPicker& picker, Color color)
: m_picker(picker)
{
m_color = color;
m_selected = false;
}

ColorButton::~ColorButton()
Expand All @@ -343,6 +345,13 @@ void ColorButton::set_selected(bool selected)
m_selected = selected;
}

void ColorButton::doubleclick_event(GUI::MouseEvent&)
{
click();
m_selected = true;
m_picker.done(Dialog::ExecOK);
}

void ColorButton::paint_event(PaintEvent& event)
{
Painter painter(*this);
Expand Down

0 comments on commit 6a01827

Please sign in to comment.