summaryrefslogtreecommitdiff
path: root/src/viewmarkingscrollbar.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-31 23:36:14 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:38:18 +0100
commit87dac464d9ec488737b16839b0f06586eadb837e (patch)
tree3502cdcef4e27742f3b3ae1031371dafb15b2714 /src/viewmarkingscrollbar.cpp
parentfff41be8455e588d181c7349678dff6fe29be76b (diff)
Fix position of markers in scrollbar for non-flat models.
Diffstat (limited to 'src/viewmarkingscrollbar.cpp')
-rw-r--r--src/viewmarkingscrollbar.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/viewmarkingscrollbar.cpp b/src/viewmarkingscrollbar.cpp
index 2452d0e3..ed17120b 100644
--- a/src/viewmarkingscrollbar.cpp
+++ b/src/viewmarkingscrollbar.cpp
@@ -1,4 +1,5 @@
#include "viewmarkingscrollbar.h"
+#include "modelutils.h"
#include <QStyle>
#include <QStyleOptionSlider>
#include <QPainter>
@@ -27,11 +28,13 @@ void ViewMarkingScrollBar::paintEvent(QPaintEvent *event)
QRect handleRect = style()->subControlRect(QStyle::CC_ScrollBar, &styleOption, QStyle::SC_ScrollBarSlider, this);
QRect innerRect = style()->subControlRect(QStyle::CC_ScrollBar, &styleOption, QStyle::SC_ScrollBarGroove, this);
+ auto indices = flatIndex(m_Model, 0, QModelIndex());
+
painter.translate(innerRect.topLeft() + QPoint(0, 3));
- qreal scale = static_cast<qreal>(innerRect.height() - 3) / static_cast<qreal>(m_Model->rowCount());
+ qreal scale = static_cast<qreal>(innerRect.height() - 3) / static_cast<qreal>(indices.size());
- for (int i = 0; i < m_Model->rowCount(); ++i) {
- QVariant data = m_Model->data(m_Model->index(i, 0), m_Role);
+ for (int i = 0; i < indices.size(); ++i) {
+ QVariant data = indices[i].data(m_Role);
if (data.isValid()) {
QColor col = data.value<QColor>();
painter.setPen(col);