int viewportWidth = listView->viewport()->width() - listView->spacing();
- int itemHeight = biggestItemSize.height();
- int itemWidth = biggestItemSize.width();
+ int itemHeight;
+ int itemWidth;
+
+ if (listView->gridSize().isEmpty())
+ {
+ itemHeight = biggestItemSize.height();
+ itemWidth = biggestItemSize.width();
+ }
+ else
+ {
+ itemHeight = listView->gridSize().height();
+ itemWidth = listView->gridSize().width();
+ }
+
int itemWidthPlusSeparation = listView->spacing() + itemWidth;
int elementsPerRow = viewportWidth / itemWidthPlusSeparation;
if (!elementsPerRow)
row * itemHeight);
retRect.setWidth(itemWidth);
- retRect.setHeight(itemHeight);
+
+ if (listView->gridSize().isEmpty())
+ {
+ retRect.setHeight(listView->sizeHintForIndex(proxyModel->mapFromSource(index)).height());
+ }
+ else
+ {
+ retRect.setHeight(qMin(listView->sizeHintForIndex(proxyModel->mapFromSource(index)).height(),
+ listView->gridSize().height()));
+ }
return retRect;
}
int viewportWidth = listView->viewport()->width() - listView->spacing();
- int itemHeight = biggestItemSize.height();
- int itemWidth = biggestItemSize.width();
+ int itemHeight;
+ int itemWidth;
+
+ if (listView->gridSize().isEmpty())
+ {
+ itemHeight = biggestItemSize.height();
+ itemWidth = biggestItemSize.width();
+ }
+ else
+ {
+ itemHeight = listView->gridSize().height();
+ itemWidth = listView->gridSize().width();
+ }
+
int itemWidthPlusSeparation = listView->spacing() + itemWidth;
int elementsPerRow = viewportWidth / itemWidthPlusSeparation;
void KCategorizedView::Private::updateScrollbars()
{
- int lastItemBottom = cachedRectIndex(lastIndex).bottom() +
- listView->spacing() - listView->viewport()->height();
+ int lastItemBottom = cachedRectIndex(lastIndex).top() +
+ listView->spacing() + (listView->gridSize().isEmpty() ? 0 : listView->gridSize().height()) - listView->viewport()->height();
listView->verticalScrollBar()->setSingleStep(listView->viewport()->height() / 10);
listView->verticalScrollBar()->setPageStep(listView->viewport()->height());
}
// Redraw categories
- int i = 0;
QStyleOptionViewItem otherOption;
foreach (const QString &category, d->categories)
{
const QModelIndex current = selectionModel()->currentIndex();
int viewportWidth = viewport()->width() - spacing();
- int itemHeight = d->biggestItemSize.height();
- int itemWidth = d->biggestItemSize.width();
+ int itemWidth;
+
+ if (gridSize().isEmpty())
+ {
+ itemWidth = d->biggestItemSize.width();
+ }
+ else
+ {
+ itemWidth = gridSize().width();
+ }
+
int itemWidthPlusSeparation = spacing() + itemWidth;
int elementsPerRow = viewportWidth / itemWidthPlusSeparation;