QHeaderView 5.0 - correct drop on manual QHeaderView sectionmove
authorThorbjørn Lund Martsum <tmartsum@gmail.com>
Thu, 1 Nov 2012 15:33:25 +0000 (16:33 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 2 Nov 2012 15:25:22 +0000 (16:25 +0100)
This fixes an error in the calculation of the exact drop position
when an user is moving a section in QHeaderView.

Before we compared a mouse-position local to the widget
(pos) with a summed length of sections (posThreshold).

However we need to consider/substract the headers offset to make
the posThreshold comparable to the local mouse position.

This solves e.g.
Task-number: QTBUG-14814

Change-Id: If0281cf0c7b98316474f18e8eaa32c6d062dda56
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
src/widgets/itemviews/qheaderview.cpp

index c6b95af..541d40d 100644 (file)
@@ -2332,7 +2332,7 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e)
                 int visual = visualIndexAt(pos);
                 if (visual == -1)
                     return;
-                int posThreshold = d->headerSectionPosition(visual) + d->headerSectionSize(visual) / 2;
+                int posThreshold = d->headerSectionPosition(visual) - d->offset + d->headerSectionSize(visual) / 2;
                 int moving = visualIndex(d->section);
                 if (visual < moving) {
                     if (pos < posThreshold)