sc/source/ui/view/tabview.cxx | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-)
New commits: commit f2b97ecf340e1fd714c636060ae09382518a2b46 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Mar 21 14:30:38 2023 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Mar 21 20:21:36 2023 +0000 unmerge default and ScrollType::Drag cases for calc scrollbars before: commit 8c4e8818fe9f5ac1f6cdf908299cc109d67f1e50 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Aug 4 16:38:47 2022 +0100 nDelta overwritten on all branches except default the default case was different to the Drag case, and tdf#152406 uncovers a problem using the Drag case for scroll wheel, so undo the merge of default of Drag. Change-Id: I7471191d5e1f50f74563e8bcbcb82127d94edf2d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149228 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx index 9142393a9152..dea6dbb7810d 100644 --- a/sc/source/ui/view/tabview.cxx +++ b/sc/source/ui/view/tabview.cxx @@ -1170,7 +1170,6 @@ void ScTabView::ScrollHdl(ScrollAdaptor* pScroll) if ( pScroll == aVScrollBottom.get() ) nDelta = aViewData.VisibleCellsY( SC_SPLIT_BOTTOM ); if (nDelta==0) nDelta=1; break; - default: // added to avoid warnings case ScrollType::Drag: { // only scroll in the correct direction, do not jitter around hidden ranges @@ -1182,31 +1181,30 @@ void ScTabView::ScrollHdl(ScrollAdaptor* pScroll) tools::Long nScrollPos = GetScrollBarPos( *pScroll ) + nScrollMin; nDelta = nScrollPos - nViewPos; - - // tdf#152406 Disable anti-jitter code for scroll wheel events - // After moving thousands of columns to the right via - // horizontal scroll wheel or trackpad swipe events, most - // vertical scroll wheel or trackpad swipe events will trigger - // the anti-jitter code because nScrollPos and nPrevDragPos - // will be equal and nDelta will be overriden and set to zero. - // So, only use the anti-jitter code for mouse drag events. - if ( eType == ScrollType::Drag ) + if ( nScrollPos > nPrevDragPos ) { - if ( nScrollPos > nPrevDragPos ) - { - if (nDelta<0) nDelta=0; - } - else if ( nScrollPos < nPrevDragPos ) - { - if (nDelta>0) nDelta=0; - } - else - nDelta = 0; + if (nDelta<0) nDelta=0; } - + else if ( nScrollPos < nPrevDragPos ) + { + if (nDelta>0) nDelta=0; + } + else + nDelta = 0; nPrevDragPos = nScrollPos; } break; + default: + // Note tdf#152406 no anti-jitter code, unlike ScrollType::Drag, + // for scroll wheel events. + // After moving thousands of columns to the right via horizontal + // scroll wheel or trackpad swipe events, most vertical scroll + // wheel or trackpad swipe events would trigger the anti-jitter + // code because nScrollPos and nPrevDragPos would be equal and + // nDelta will be overriden and set to zero. So, only use the + // anti-jitter code for mouse drag events. + nDelta = GetScrollBarPos(*pScroll) - nViewPos; + break; } if (nDelta)