tdf#138430 schedule a reformat if we turned off the scrollbar
Change-Id: Ida7d7419f0513624071b31820660add93ac78615
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106445
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/include/svtools/valueset.hxx b/include/svtools/valueset.hxx
index a80c167..7753546 100644
--- a/include/svtools/valueset.hxx
+++ b/include/svtools/valueset.hxx
@@ -254,7 +254,7 @@ private:
SVT_DLLPRIVATE void QueueReformat();
SVT_DLLPRIVATE void SetFirstLine(sal_uInt16 nNewFirstLine); // set mnFirstLine and update scrollbar to match
SVT_DLLPRIVATE void RecalcScrollBar();
SVT_DLLPRIVATE void TurnOffScrollBar();
SVT_DLLPRIVATE bool TurnOffScrollBar();
SVT_DLLPRIVATE void TurnOnScrollBar();
DECL_DLLPRIVATE_LINK(ImplScrollHdl, weld::ScrolledWindow&, void);
diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index e81aeb2..c9a94de 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -549,14 +549,15 @@ void ValueSet::RemoveItem( sal_uInt16 nItemId )
QueueReformat();
}
void ValueSet::TurnOffScrollBar()
bool ValueSet::TurnOffScrollBar()
{
if (mxScrolledWindow->get_vpolicy() == VclPolicyType::NEVER)
return;
return false;
mxScrolledWindow->set_vpolicy(VclPolicyType::NEVER);
weld::DrawingArea* pDrawingArea = GetDrawingArea();
Size aPrefSize(pDrawingArea->get_preferred_size());
pDrawingArea->set_size_request(aPrefSize.Width() + GetScrollWidth(), aPrefSize.Height());
return true;
}
void ValueSet::TurnOnScrollBar()
@@ -571,11 +572,16 @@ void ValueSet::TurnOnScrollBar()
void ValueSet::RecalcScrollBar()
{
// reset scrolled window state to initial value
// so it will get configured to the right adjustment
WinBits nStyle = GetStyle();
if (mxScrolledWindow && (nStyle & WB_VSCROLL))
TurnOffScrollBar();
if (!mxScrolledWindow)
return;
const bool bScrollAllowed = GetStyle() & WB_VSCROLL;
if (!bScrollAllowed)
return;
// reset scrolled window state to initial value so it will get configured
// to the right adjustment on the next format which we toggle on to happen
// if the scrolledwindow wasn't in its initial state already
if (TurnOffScrollBar())
mbFormat = true;
}
void ValueSet::Clear()