tdf#138430 toolbar bullet dropdown should have a scrolledwindow
as should the matching dialog pages
Change-Id: Ib327d3c02d1bc5ae11a6a76d52c9e17803f05534
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106436
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx
index c271eba..b921e6c 100644
--- a/cui/source/tabpages/numpages.cxx
+++ b/cui/source/tabpages/numpages.cxx
@@ -163,7 +163,7 @@ SvxSingleNumPickTabPage::SvxSingleNumPickTabPage(weld::Container* pPage, weld::D
, bModified(false)
, bPreset(false)
, nNumItemId(SID_ATTR_NUMBERING_RULE)
, m_xExamplesVS(new SvxNumValueSet(nullptr))
, m_xExamplesVS(new SvxNumValueSet(m_xBuilder->weld_scrolled_window("valuesetwin")))
, m_xExamplesVSWin(new weld::CustomWeld(*m_xBuilder, "valueset", *m_xExamplesVS))
{
SetExchangeSupport();
@@ -342,7 +342,7 @@ SvxBulletPickTabPage::SvxBulletPickTabPage(weld::Container* pPage, weld::DialogC
, bModified(false)
, bPreset(false)
, nNumItemId(SID_ATTR_NUMBERING_RULE)
, m_xExamplesVS(new SvxNumValueSet(nullptr))
, m_xExamplesVS(new SvxNumValueSet(m_xBuilder->weld_scrolled_window("valuesetwin")))
, m_xExamplesVSWin(new weld::CustomWeld(*m_xBuilder, "valueset", *m_xExamplesVS))
{
SetExchangeSupport();
@@ -491,7 +491,7 @@ SvxNumPickTabPage::SvxNumPickTabPage(weld::Container* pPage, weld::DialogControl
, nNumItemId(SID_ATTR_NUMBERING_RULE)
, bModified(false)
, bPreset(false)
, m_xExamplesVS(new SvxNumValueSet(nullptr))
, m_xExamplesVS(new SvxNumValueSet(m_xBuilder->weld_scrolled_window("valuesetwin")))
, m_xExamplesVSWin(new weld::CustomWeld(*m_xBuilder, "valueset", *m_xExamplesVS))
{
SetExchangeSupport();
diff --git a/include/svtools/valueset.hxx b/include/svtools/valueset.hxx
index b27885d..d5c991d 100644
--- a/include/svtools/valueset.hxx
+++ b/include/svtools/valueset.hxx
@@ -256,7 +256,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 4070630..8e67956 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -539,14 +539,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()
@@ -561,11 +562,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()
diff --git a/svx/source/tbxctrls/bulletsnumbering.cxx b/svx/source/tbxctrls/bulletsnumbering.cxx
index 430ca19..d30a6aa 100644
--- a/svx/source/tbxctrls/bulletsnumbering.cxx
+++ b/svx/source/tbxctrls/bulletsnumbering.cxx
@@ -68,7 +68,7 @@ NumberingPopup::NumberingPopup(NumberingToolBoxControl& rController,
: WeldToolbarPopup(rController.getFrameInterface(), pParent, "svx/ui/numberingwindow.ui", "NumberingWindow")
, mePageType(ePageType)
, mrController(rController)
, mxValueSet(new SvxNumValueSet(nullptr))
, mxValueSet(new SvxNumValueSet(m_xBuilder->weld_scrolled_window("valuesetwin")))
, mxValueSetWin(new weld::CustomWeld(*m_xBuilder, "valueset", *mxValueSet))
, mxMoreButton(m_xBuilder->weld_button("more"))
{