┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kitemlistview.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2012-01-19 19:52:51 +0100
committerFrank Reininghaus <[email protected]>2012-01-19 19:52:51 +0100
commit8b73ea3061eec0b0b9f11db6965ee77b487c0633 (patch)
treee0ba39088316902840b102bfd492d124280d648d /src/kitemviews/kitemlistview.cpp
parent7dc1741277b1cb6b9cb1f3c0ee754b32ad347a87 (diff)
Do not make items invisible when turning off previews
This commit fixes a problem in KItemListView::doLayout(): This function assumed that firstVisibleIndex is a constant. However, if the view is scrolled to the bottom with previews enabled, and then previews are disabled (and the icon size is much smaller without previews), this function changes the scroll offset, which also changes the the first visible index. Using the unchanged variable causes trouble later on (i.e., it makes items which are actually inside the view area invisible). lastVisibleIndex is not needed before the scroll offset change and is const after that, so its calculation is moved a few lines down. BUG: 291841 FIXED-IN: 4.8.1 REVIEW: 103731
Diffstat (limited to 'src/kitemviews/kitemlistview.cpp')
-rw-r--r--src/kitemviews/kitemlistview.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index b6af42849..281fe96f8 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -1292,8 +1292,7 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha
return;
}
- const int firstVisibleIndex = m_layouter->firstVisibleIndex();
- const int lastVisibleIndex = m_layouter->lastVisibleIndex();
+ int firstVisibleIndex = m_layouter->firstVisibleIndex();
if (firstVisibleIndex < 0) {
emitOffsetChanges();
return;
@@ -1306,8 +1305,11 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha
const qreal maxOffsetToShowFullRange = maximumScrollOffset() - visibleOffsetRange;
if (scrollOffset() > maxOffsetToShowFullRange) {
m_layouter->setScrollOffset(qMax(qreal(0), maxOffsetToShowFullRange));
+ firstVisibleIndex = m_layouter->firstVisibleIndex();
}
+ const int lastVisibleIndex = m_layouter->lastVisibleIndex();
+
// Determine all items that are completely invisible and might be
// reused for items that just got (at least partly) visible.
// Items that do e.g. an animated moving of their position are not