Resolves tdf#140360 - Provide option to turn off sidebar's minimum width

Boolean option Sidebar:General:MinimumWidth introduced defaulting
to true; if false the sidebar width is under full user control

Change-Id: Iab1413a83adf90461feb5d6416aad174439392ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116715
Tested-by: Jenkins
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
(cherry picked from commit f43fdcad400b6ff51f0810d923fe75d5a2cfde0c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117414
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/include/sfx2/sidebar/SidebarController.hxx b/include/sfx2/sidebar/SidebarController.hxx
index cd4f329..0ff5985 100644
--- a/include/sfx2/sidebar/SidebarController.hxx
+++ b/include/sfx2/sidebar/SidebarController.hxx
@@ -185,6 +185,7 @@ private:
    /// Use a combination of SwitchFlag_* as value.
    sal_Int32 mnRequestedForceFlags;
    sal_Int32 mnMaximumSidebarWidth;
    bool mbMinimumSidebarWidth;
    OUString msCurrentDeckId;
    AsynchronousCall maPropertyChangeForwarder;
    AsynchronousCall maContextChangeUpdate;
diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs
index 6ed1d79..c54c3d6 100644
--- a/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs
@@ -242,6 +242,13 @@
        </info>
        <value>500</value>
      </prop>
      <prop oor:name="MinimumWidth" oor:type="xs:boolean" oor:nillable="false">
        <info>
          <desc>Minimum width the sidebar can have. If true, the minumum width
          is calculated from the largest deck.</desc>
        </info>
        <value>true</value>
      </prop>
    </group>
    <group oor:name="Content">
      <info>
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index 98c8acb..c91381d 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -136,6 +136,7 @@ SidebarController::SidebarController (
      maRequestedContext(),
      mnRequestedForceFlags(SwitchFlag_NoForce),
      mnMaximumSidebarWidth(officecfg::Office::UI::Sidebar::General::MaximumWidth::get()),
      mbMinimumSidebarWidth(officecfg::Office::UI::Sidebar::General::MinimumWidth::get()),
      msCurrentDeckId(gsDefaultDeckId),
      maPropertyChangeForwarder([this](){ return this->BroadcastPropertyChange(); }),
      maContextChangeUpdate([this](){ return this->UpdateConfigurations(); }),
@@ -376,7 +377,7 @@ void SAL_CALL SidebarController::requestLayout()
    if (mpCurrentDeck && !mpCurrentDeck->isDisposed())
    {
        mpCurrentDeck->RequestLayout();
        nMinimalWidth = mpCurrentDeck->GetMinimalWidth();
        nMinimalWidth = mbMinimumSidebarWidth ? mpCurrentDeck->GetMinimalWidth() : 0;
    }
    RestrictWidth(nMinimalWidth);
}
@@ -471,7 +472,7 @@ void SidebarController::NotifyResize()
        VclPtr<DeckTitleBar> pTitleBar = mpCurrentDeck->GetTitleBar();
        if (pTitleBar && pTitleBar->IsVisible())
            pTitleBar->SetCloserVisible(CanModifyChildWindowWidth());
        nMinimalWidth = mpCurrentDeck->GetMinimalWidth();
        nMinimalWidth = mbMinimumSidebarWidth ? mpCurrentDeck->GetMinimalWidth() : 0;
    }

    RestrictWidth(nMinimalWidth);