From 6a018270461646536d8516be722ab45f0f475c93 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 29 Apr 2020 19:06:56 +0200 Subject: [PATCH] LibGUI: Exit ColorPicker (successfully) when double-clicking a color It feels natural that if I double click a color button, the dialog closes successfully and "returns" that color. --- Libraries/LibGUI/ColorPicker.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Libraries/LibGUI/ColorPicker.cpp b/Libraries/LibGUI/ColorPicker.cpp index 85cd780d3b..e82027e99a 100644 --- a/Libraries/LibGUI/ColorPicker.cpp +++ b/Libraries/LibGUI/ColorPicker.cpp @@ -50,11 +50,13 @@ public: 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 }; }; @@ -310,7 +312,7 @@ void ColorPicker::create_color_button(Widget& container, unsigned rgb) { Color color = Color::from_rgb(rgb); - auto& widget = container.add(color); + auto& widget = container.add(*this, color); widget.set_size_policy(SizePolicy::Fill, SizePolicy::Fill); widget.on_click = [this](Color color) { for (auto& value : m_color_widgets) { @@ -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() @@ -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);