@@ -444,6 +444,27 @@ void VerticalJournal::releaseItem(const ViewItem &item)
447+void VerticalJournal::calculateImplicitHeight()
449+ m_implicitHeightDirty = false;
451+ int lastModelIndex = -1;
452+ qreal bottomMostY = 0;
453+ Q_FOREACH(const auto &column, m_columnVisibleItems) {
454+ if (!column.isEmpty()) {
455+ const ViewItem &item = column.last();
456+ lastModelIndex = qMax(lastModelIndex, item.m_modelIndex);
457+ bottomMostY = qMax(bottomMostY, item.y() + item.height() + m_verticalSpacing);
460+ if (lastModelIndex >= 0) {
461+ const double averageHeight = bottomMostY / (lastModelIndex + 1);
462+ setImplicitHeight(bottomMostY + averageHeight * (model()->rowCount() - lastModelIndex - 1));
464+ setImplicitHeight(0);
447#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
468#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
448void VerticalJournal::itemCreated(int modelIndex, QQuickItem *item)
469void VerticalJournal::itemCreated(int modelIndex, QQuickItem *item)
@@ -521,23 +542,7 @@ void VerticalJournal::updatePolish()
523 if (m_implicitHeightDirty) {
544 if (m_implicitHeightDirty) {
524− m_implicitHeightDirty = false;
545+ calculateImplicitHeight();
526− int lastModelIndex = -1;
527− qreal bottomMostY = 0;
528− Q_FOREACH(const auto &column, m_columnVisibleItems) {
529− if (!column.isEmpty()) {
530− const ViewItem &item = column.last();
531− lastModelIndex = qMax(lastModelIndex, item.m_modelIndex);
532− bottomMostY = qMax(bottomMostY, item.y() + item.height() + m_verticalSpacing);
535− if (lastModelIndex >= 0) {
536− const double averageHeight = bottomMostY / (lastModelIndex + 1);
537− setImplicitHeight(bottomMostY + averageHeight * (model()->rowCount() - lastModelIndex - 1));
539− setImplicitHeight(0);