mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
Fix maximum value for scroll bar when deleting items in Details View
The problem was that the view heigt minus the header height was subtracted from maximumScrollOffset() to determine the maximum value of the scroll offset of the top of the view. However, the top of the view is the part that is hiden behind the header. Therefore, the full view height must be subtracted from maximumScrollOffset. The remaining bits of bug 319951 were fixed by other recent commits. Thanks to Emmanuel Pescosta for helping to track down the problem! BUG: 319951 FIXED-IN: 4.11.0 REVIEW: 111486
This commit is contained in:
parent
08c2f7f5fb
commit
55a989626d
|
@ -257,6 +257,7 @@ void KItemListContainer::updateScrollOffsetScrollBar()
|
|||
QScrollBar* scrollOffsetScrollBar = 0;
|
||||
int singleStep = 0;
|
||||
int pageStep = 0;
|
||||
int maximum = 0;
|
||||
if (view->scrollOrientation() == Qt::Vertical) {
|
||||
smoothScroller = m_verticalSmoothScroller;
|
||||
scrollOffsetScrollBar = verticalScrollBar();
|
||||
|
@ -264,15 +265,21 @@ void KItemListContainer::updateScrollOffsetScrollBar()
|
|||
// We cannot use view->size().height() because this height might
|
||||
// include the header widget, which is not part of the scrolled area.
|
||||
pageStep = view->verticalPageStep();
|
||||
|
||||
// However, the total height of the view must be considered for the
|
||||
// maximum value of the scroll bar. Note that the view's scrollOffset()
|
||||
// refers to the offset of the top part of the view, which might be
|
||||
// hidden behind the header.
|
||||
maximum = qMax(0, int(view->maximumScrollOffset() - view->size().height()));
|
||||
} else {
|
||||
smoothScroller = m_horizontalSmoothScroller;
|
||||
scrollOffsetScrollBar = horizontalScrollBar();
|
||||
singleStep = view->itemSize().width();
|
||||
pageStep = view->size().width();
|
||||
maximum = qMax(0, int(view->maximumScrollOffset() - view->size().width()));
|
||||
}
|
||||
|
||||
const int value = view->scrollOffset();
|
||||
const int maximum = qMax(0, int(view->maximumScrollOffset() - pageStep));
|
||||
if (smoothScroller->requestScrollBarUpdate(maximum)) {
|
||||
const bool updatePolicy = (scrollOffsetScrollBar->maximum() > 0 && maximum == 0)
|
||||
|| horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOn;
|
||||
|
|
Loading…
Reference in a new issue