| 139 | } |
| 140 | |
| 141 | void InstanceView::updateScrollbar() |
| 142 | { |
| 143 | int previousScroll = verticalScrollBar()->value(); |
| 144 | if (m_groups.isEmpty()) { |
| 145 | verticalScrollBar()->setRange(0, 0); |
| 146 | } else { |
| 147 | int totalHeight = 0; |
| 148 | // top margin |
| 149 | totalHeight += m_categoryMargin; |
| 150 | int itemScroll = 0; |
| 151 | for (auto category : m_groups) { |
| 152 | category->m_verticalPosition = totalHeight; |
| 153 | totalHeight += category->totalHeight() + m_categoryMargin; |
| 154 | if (!itemScroll && category->totalHeight() != 0) { |
| 155 | itemScroll = category->contentHeight() / category->numRows(); |
| 156 | } |
| 157 | } |
| 158 | // do not divide by zero |
| 159 | if (itemScroll == 0) |
| 160 | itemScroll = 64; |
| 161 | |
| 162 | totalHeight += m_bottomMargin; |
| 163 | verticalScrollBar()->setSingleStep(itemScroll); |
| 164 | const int rowsPerPage = qMax(viewport()->height() / itemScroll, 1); |
| 165 | verticalScrollBar()->setPageStep(rowsPerPage * itemScroll); |
| 166 | |
| 167 | verticalScrollBar()->setRange(0, totalHeight - height()); |
| 168 | } |
| 169 | |
| 170 | verticalScrollBar()->setValue(qMin(previousScroll, verticalScrollBar()->maximum())); |
| 171 | } |
| 172 | |
| 173 | void InstanceView::updateGeometries() |
| 174 | { |
nothing calls this directly
no test coverage detected