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