From 4ab4de78102672eefc33f583cebf6e370f0c3b17 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Mon, 18 May 2020 22:44:08 +0100 Subject: [PATCH] LibGUI: Add ability to hide GUI::TabWidget's tab bar --- Libraries/LibGUI/TabWidget.cpp | 13 ++++++++++++- Libraries/LibGUI/TabWidget.h | 6 +++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Libraries/LibGUI/TabWidget.cpp b/Libraries/LibGUI/TabWidget.cpp index 1f5e3e724e..e4d3fbb799 100644 --- a/Libraries/LibGUI/TabWidget.cpp +++ b/Libraries/LibGUI/TabWidget.cpp @@ -147,6 +147,9 @@ Gfx::Rect TabWidget::container_rect() const void TabWidget::paint_event(PaintEvent& event) { + if (!m_bar_visible) + return; + Painter painter(*this); painter.add_clip_rect(event.rect()); @@ -206,6 +209,14 @@ int TabWidget::uniform_tab_width() const return max(tab_width, minimum_tab_width); } +void TabWidget::set_bar_visible(bool bar_visible) +{ + m_bar_visible = bar_visible; + if (m_active_widget) + m_active_widget->set_relative_rect(child_rect_for_size(size())); + update_bar(); +} + Gfx::Rect TabWidget::button_rect(int index) const { int x_offset = 2; @@ -346,7 +357,7 @@ void TabWidget::activate_previous_tab() set_active_widget(m_tabs.at(index).widget); } -void TabWidget::keydown_event(KeyEvent & event) +void TabWidget::keydown_event(KeyEvent& event) { if (event.ctrl() && event.key() == Key_Tab) { if (event.shift()) diff --git a/Libraries/LibGUI/TabWidget.h b/Libraries/LibGUI/TabWidget.h index dc9aac9689..d2ebd063ea 100644 --- a/Libraries/LibGUI/TabWidget.h +++ b/Libraries/LibGUI/TabWidget.h @@ -49,7 +49,7 @@ public: const Widget* active_widget() const { return m_active_widget.ptr(); } void set_active_widget(Widget*); - int bar_height() const { return 21; } + int bar_height() const { return m_bar_visible ? 21 : 0; } int container_padding() const { return m_container_padding; } void set_container_padding(int padding) { m_container_padding = padding; } @@ -79,6 +79,9 @@ public: void set_uniform_tabs(bool uniform_tabs) { m_uniform_tabs = uniform_tabs; } int uniform_tab_width() const; + void set_bar_visible(bool bar_visible); + bool is_bar_visible() const { return m_bar_visible; }; + Function on_change; Function on_middle_click; @@ -114,6 +117,7 @@ private: int m_container_padding { 2 }; Gfx::TextAlignment m_text_alignment { Gfx::TextAlignment::Center }; bool m_uniform_tabs { false }; + bool m_bar_visible { true }; }; }