summaryrefslogtreecommitdiff
path: root/Userland/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries')
-rw-r--r--Userland/Libraries/LibGUI/Toolbar.cpp11
-rw-r--r--Userland/Libraries/LibGUI/Toolbar.h3
2 files changed, 14 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGUI/Toolbar.cpp b/Userland/Libraries/LibGUI/Toolbar.cpp
index 5380af356a..daca0bd235 100644
--- a/Userland/Libraries/LibGUI/Toolbar.cpp
+++ b/Userland/Libraries/LibGUI/Toolbar.cpp
@@ -27,6 +27,7 @@ Toolbar::Toolbar(Orientation orientation, int button_size)
, m_button_size(button_size)
{
REGISTER_BOOL_PROPERTY("collapsible", is_collapsible, set_collapsible);
+ REGISTER_BOOL_PROPERTY("grouped", is_grouped, set_grouped);
if (m_orientation == Orientation::Horizontal)
set_fixed_height(button_size);
@@ -202,6 +203,16 @@ ErrorOr<void> Toolbar::update_overflow_menu()
return {};
}
+ if (m_grouped) {
+ for (size_t i = marginal_index.value(); i > 0; --i) {
+ auto& item = m_items.at(i);
+ if (item.type == Item::Type::Separator)
+ break;
+ item.widget->set_visible(false);
+ marginal_index = i;
+ }
+ }
+
if (!m_overflow_action)
TRY(create_overflow_objects());
m_overflow_action->set_enabled(true);
diff --git a/Userland/Libraries/LibGUI/Toolbar.h b/Userland/Libraries/LibGUI/Toolbar.h
index 177578e799..8a9ec2cf1b 100644
--- a/Userland/Libraries/LibGUI/Toolbar.h
+++ b/Userland/Libraries/LibGUI/Toolbar.h
@@ -27,6 +27,8 @@ public:
bool is_collapsible() const { return m_collapsible; }
void set_collapsible(bool b) { m_collapsible = b; }
+ bool is_grouped() const { return m_grouped; }
+ void set_grouped(bool b) { m_grouped = b; }
virtual Optional<UISize> calculated_preferred_size() const override;
virtual Optional<UISize> calculated_min_size() const override;
@@ -58,6 +60,7 @@ private:
const Gfx::Orientation m_orientation;
int m_button_size { 24 };
bool m_collapsible { false };
+ bool m_grouped { false };
};
}