summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-06-14 19:54:20 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-06-15 13:16:05 +0200
commit3a3ab9c95c37bdd84fdceac82349621368e1bee1 (patch)
tree5abb07dbb1b703273648b8c6198696a7148cbc27 /svtools
parent220761aefb5014109877c8baac226f8acb9d3bed (diff)
Related: tdf#132966 scrollbar not tracking valueset cursor position
Change-Id: I408d872f89da67cd91f0282c1624fd33ddc6c538 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96298 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 5cce65171b12cd652d6a9857a9c0bad1c608a65c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96333
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/control/valueset.cxx18
1 files changed, 14 insertions, 4 deletions
diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index 40f2280cda5d..4329d415f9a1 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -696,6 +696,16 @@ void ValueSet::RecalculateItemSizes()
}
}
+void ValueSet::SetFirstLine(sal_uInt16 nNewFirstLine)
+{
+ if (nNewFirstLine != mnFirstLine)
+ {
+ mnFirstLine = nNewFirstLine;
+ if (mxScrolledWindow)
+ mxScrolledWindow->vadjustment_set_value(mnFirstLine);
+ }
+}
+
void ValueSet::SelectItem( sal_uInt16 nItemId )
{
size_t nItemPos = 0;
@@ -731,12 +741,12 @@ void ValueSet::SelectItem( sal_uInt16 nItemId )
sal_uInt16 nNewLine = static_cast<sal_uInt16>(nItemPos / mnCols);
if ( nNewLine < mnFirstLine )
{
- mnFirstLine = nNewLine;
+ SetFirstLine(nNewLine);
bNewLine = true;
}
else if ( nNewLine > o3tl::make_unsigned(mnFirstLine+mnVisLines-1) )
{
- mnFirstLine = static_cast<sal_uInt16>(nNewLine-mnVisLines+1);
+ SetFirstLine(static_cast<sal_uInt16>(nNewLine-mnVisLines+1));
bNewLine = true;
}
}
@@ -924,12 +934,12 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext)
if (mnLines <= mnVisLines)
{
- mnFirstLine = 0;
+ SetFirstLine(0);
}
else
{
if (mnFirstLine > o3tl::make_unsigned(mnLines - mnVisLines))
- mnFirstLine = static_cast<sal_uInt16>(mnLines - mnVisLines);
+ SetFirstLine(static_cast<sal_uInt16>(mnLines - mnVisLines));
}
// calculate item size