From 28df2ede063336332516101f8887905e7c08683f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 30 Oct 2020 16:47:00 +0100 Subject: [PATCH] LibGUI: Use ToolBarButton helper class inside ToolBar --- Libraries/LibGUI/ToolBar.cpp | 39 ++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/Libraries/LibGUI/ToolBar.cpp b/Libraries/LibGUI/ToolBar.cpp index f398da6d86..fb667c0417 100644 --- a/Libraries/LibGUI/ToolBar.cpp +++ b/Libraries/LibGUI/ToolBar.cpp @@ -53,27 +53,36 @@ ToolBar::~ToolBar() { } +class ToolBarButton final : public Button { + C_OBJECT(ToolBarButton); + +public: + virtual ~ToolBarButton() override { } + +private: + explicit ToolBarButton(Action& action) + { + if (action.group() && action.group()->is_exclusive()) + set_exclusive(true); + set_action(action); + set_tooltip(action.text()); + set_focus_policy(FocusPolicy::TabFocus); + if (action.icon()) + set_icon(action.icon()); + else + set_text(action.text()); + set_button_style(Gfx::ButtonStyle::CoolBar); + set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed); + } +}; + void ToolBar::add_action(Action& action) { auto item = make(); item->type = Item::Type::Action; item->action = action; - auto& button = add