tdf#147868 Disable add sheet when structure is protected

Using "Tools > Protect Spreadsheet Structure...", it is possible to
protect the structure of a spreadsheet document. Without this patch in
place, the [+] (add new sheet) button is clickable but it does not work.
This is confusing for the user, so it was decided that the button should
be disabled when the structure is protected.

This patch disables the [+] button just after the structure is protected
using the above toggle menu option. The menu option becomes checked, and
the [+] button gets disabled immediately. After choosing the same toggle
menu option again, the check mark goes away, and the [+] button becomes
enabled immediately.

In this patch, GetDocument().IsDocEditable() is used to check if the
document structure is protected. The argument for this choice is that
the same function is used when renaming a sheet with
ScDocFunc::RenameTable().

Change-Id: If812d94841d3efd98d7ef898cc1f4b2f1387130b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137365
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
(cherry picked from commit e2b7f59c745a79542b15937bc824c7afe9969cde)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137333
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
diff --git a/include/svtools/tabbar.hxx b/include/svtools/tabbar.hxx
index 8735e07..948e60b 100644
--- a/include/svtools/tabbar.hxx
+++ b/include/svtools/tabbar.hxx
@@ -496,6 +496,7 @@ public:
    void            SetSelectHdl( const Link<TabBar*,void>& rLink ) { maSelectHdl = rLink; }
    void            SetSplitHdl( const Link<TabBar*,void>& rLink ) { maSplitHdl = rLink; }
    void            SetScrollAreaContextHdl( const Link<const CommandEvent&,void>& rLink ) { maScrollAreaContextHdl = rLink; }
    void            SetAddButtonEnabled(bool bAddButtonEnabled);

    // accessibility
    virtual css::uno::Reference<css::accessibility::XAccessible> CreateAccessible() override;
diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx
index d83d420..6db05da 100644
--- a/sc/source/ui/view/tabview5.cxx
+++ b/sc/source/ui/view/tabview5.cxx
@@ -383,6 +383,7 @@ void ScTabView::UpdateLayerLocks()
        pDrawView->SetLayerLocked( pLayer->GetName(), bProt || bShared );
        pDrawView->SetLayerVisible( pLayer->GetName(), false);
    }
    pTabControl->SetAddButtonEnabled(aViewData.GetDocument().IsDocEditable());
}

void ScTabView::DrawDeselectAll()
diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx
index a62d0ae..dd49bda0 100644
--- a/svtools/source/control/tabbar.cxx
+++ b/svtools/source/control/tabbar.cxx
@@ -2494,6 +2494,11 @@ tools::Rectangle TabBar::GetPageArea() const
                     Size(mnLastOffX - mnOffX + 1, GetSizePixel().Height() - mnOffY));
}

void TabBar::SetAddButtonEnabled(bool bAddButtonEnabled)
{
    mpImpl->mxButtonBox->m_xAddButton->set_sensitive(bAddButtonEnabled);
}

css::uno::Reference<css::accessibility::XAccessible> TabBar::CreateAccessible()
{
    return mpImpl->maAccessibleFactory.getFactory().createAccessibleTabBar(*this);