include/vcl/weld.hxx          |    2 +-
 vcl/inc/salvtables.hxx        |    2 ++
 vcl/source/app/salvtables.cxx |   11 +++++++++++
 vcl/unx/gtk3/gtkinst.cxx      |   12 ++++++++++++
 4 files changed, 26 insertions(+), 1 deletion(-)

New commits:
commit c8642c0ebe4ca16bc06b1b08f9419e4a1a94ba96
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Jun 3 11:10:45 2022 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Jun 3 14:53:34 2022 +0200

    allow to dynamically show/hide notebook tabs
    
    Change-Id: I19681d9bfcd91e205e684674d1ec8f0058c1eb91
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135350
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 528405643716..054b817975bd 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -477,11 +477,11 @@ public:
     }
     virtual void set_tab_label_text(const OString& rIdent, const OUString& 
rLabel) = 0;
     virtual OUString get_tab_label_text(const OString& rIdent) const = 0;
+    virtual void set_show_tabs(bool bShow) = 0;
     virtual int get_n_pages() const = 0;
     virtual weld::Container* get_page(const OString& rIdent) const = 0;
 
     void connect_leave_page(const Link<const OString&, bool>& rLink) { 
m_aLeavePageHdl = rLink; }
-
     void connect_enter_page(const Link<const OString&, void>& rLink) { 
m_aEnterPageHdl = rLink; }
 };
 
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 9628744fb087..e7c637e93b96 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1078,6 +1078,8 @@ public:
 
     virtual void set_tab_label_text(const OString& rIdent, const OUString& 
rText) override;
 
+    virtual void set_show_tabs(bool bShow) override;
+
     virtual ~SalInstanceNotebook() override;
 };
 
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index ba759d0fa3d5..df7d70636ea8 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2569,6 +2569,11 @@ void SalInstanceNotebook::set_tab_label_text(const 
OString& rIdent, const OUStri
     return m_xNotebook->SetPageText(m_xNotebook->GetPageId(rIdent), rText);
 }
 
+void SalInstanceNotebook::set_show_tabs(bool bShow)
+{
+    m_xNotebook->set_property("show-tabs", OUString::boolean(bShow));
+}
+
 SalInstanceNotebook::~SalInstanceNotebook()
 {
     for (auto& rItem : m_aAddedPages)
@@ -2692,6 +2697,12 @@ public:
         return m_xNotebook->GetPageText(rIdent);
     }
 
+    virtual void set_show_tabs(bool /*bShow*/) override
+    {
+        // if someone needs this they will have to to implement it in 
VerticalTabControl
+        assert(false && "not implemented");
+    }
+
     virtual ~SalInstanceVerticalNotebook() override
     {
         m_xNotebook->SetActivatePageHdl(Link<VerticalTabControl*, void>());
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 6536a0b3ffea..efc6c290d02c 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -9101,6 +9101,18 @@ public:
         }
     }
 
+    virtual void set_show_tabs(bool bShow) override
+    {
+        if (m_bOverFlowBoxActive)
+        {
+            unsplit_notebooks();
+            reset_split_data();
+        }
+
+        gtk_notebook_set_show_tabs(m_pNotebook, bShow);
+        gtk_notebook_set_show_tabs(m_pOverFlowNotebook, bShow);
+    }
+
     virtual void disable_notify_events() override
     {
         g_signal_handler_block(m_pNotebook, m_nSwitchPageSignalId);

Reply via email to