diff --git a/Applications/PixelPaint/ToolboxWidget.cpp b/Applications/PixelPaint/ToolboxWidget.cpp index ee4cd0a88e..c6e6399282 100644 --- a/Applications/PixelPaint/ToolboxWidget.cpp +++ b/Applications/PixelPaint/ToolboxWidget.cpp @@ -38,6 +38,7 @@ #include #include #include +#include namespace PixelPaint { @@ -55,12 +56,14 @@ public: builder.append(")"); set_tooltip(builder.to_string()); - m_action = GUI::Action::create_checkable(name, shortcut, [this](auto& action) { - if (action.is_checked()) - m_toolbox.on_tool_selection(m_tool); - else - m_toolbox.on_tool_selection(nullptr); - }); + m_action = GUI::Action::create_checkable( + name, shortcut, [this](auto& action) { + if (action.is_checked()) + m_toolbox.on_tool_selection(m_tool); + else + m_toolbox.on_tool_selection(nullptr); + }, + toolbox.window()); m_tool->set_action(m_action); set_action(*m_action); @@ -101,6 +104,17 @@ ToolboxWidget::ToolboxWidget() m_action_group.set_exclusive(true); m_action_group.set_unchecking_allowed(false); + deferred_invoke([this](auto&) { + setup_tools(); + }); +} + +ToolboxWidget::~ToolboxWidget() +{ +} + +void ToolboxWidget::setup_tools() +{ auto add_tool = [&](const StringView& name, const StringView& icon_name, const GUI::Shortcut& shortcut, NonnullOwnPtr tool) -> ToolButton& { m_tools.append(tool.ptr()); auto& button = add(*this, name, shortcut, move(tool)); @@ -122,8 +136,4 @@ ToolboxWidget::ToolboxWidget() add_tool("Ellipse", "circle", { Mod_Ctrl | Mod_Shift, Key_E }, make()); } -ToolboxWidget::~ToolboxWidget() -{ -} - } diff --git a/Applications/PixelPaint/ToolboxWidget.h b/Applications/PixelPaint/ToolboxWidget.h index 93a5b70552..23794179f6 100644 --- a/Applications/PixelPaint/ToolboxWidget.h +++ b/Applications/PixelPaint/ToolboxWidget.h @@ -50,6 +50,8 @@ public: private: friend class ToolButton; + void setup_tools(); + explicit ToolboxWidget(); GUI::ActionGroup m_action_group; Vector m_tools;