From e623e73f63e44364f4f9c90e05137d373ee2cad6 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 24 Nov 2021 22:23:59 +0100 Subject: [PATCH] LibGUI: Add GUI::Toolbar::try_add_separator() This is a fallible variant of add_separator() that returns ErrorOr. --- Userland/Libraries/LibGUI/Toolbar.cpp | 17 +++++++++++++---- Userland/Libraries/LibGUI/Toolbar.h | 2 ++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibGUI/Toolbar.cpp b/Userland/Libraries/LibGUI/Toolbar.cpp index 29c02ed4bb..ec2aab9741 100644 --- a/Userland/Libraries/LibGUI/Toolbar.cpp +++ b/Userland/Libraries/LibGUI/Toolbar.cpp @@ -111,12 +111,21 @@ GUI::Button& Toolbar::add_action(Action& action) return *button; } +ErrorOr Toolbar::try_add_separator() +{ + // NOTE: Grow the m_items capacity before potentially adding a child widget. + TRY(m_items.try_ensure_capacity(m_items.size() + 1)); + + auto item = TRY(adopt_nonnull_own_or_enomem(new (nothrow) Item)); + item->type = Item::Type::Separator; + TRY(try_add(m_orientation == Gfx::Orientation::Horizontal ? Gfx::Orientation::Vertical : Gfx::Orientation::Horizontal)); + m_items.unchecked_append(move(item)); + return {}; +} + void Toolbar::add_separator() { - auto item = make(); - item->type = Item::Type::Separator; - add(m_orientation == Gfx::Orientation::Horizontal ? Gfx::Orientation::Vertical : Gfx::Orientation::Horizontal); - m_items.append(move(item)); + MUST(try_add_separator()); } void Toolbar::paint_event(PaintEvent& event) diff --git a/Userland/Libraries/LibGUI/Toolbar.h b/Userland/Libraries/LibGUI/Toolbar.h index 91fba6b029..8070867d2b 100644 --- a/Userland/Libraries/LibGUI/Toolbar.h +++ b/Userland/Libraries/LibGUI/Toolbar.h @@ -18,6 +18,8 @@ public: virtual ~Toolbar() override; ErrorOr> try_add_action(GUI::Action&); + ErrorOr try_add_separator(); + GUI::Button& add_action(GUI::Action&); void add_separator();