summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r--src/widgets/itemviews/qheaderview.cpp15
-rw-r--r--src/widgets/itemviews/qheaderview_p.h2
2 files changed, 16 insertions, 1 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index 23245a7733..0cd80f2e0a 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -456,7 +456,7 @@ void QHeaderView::setOffset(int newOffset)
d->viewport->scroll(isRightToLeft() ? -ndelta : ndelta, 0);
else
d->viewport->scroll(0, ndelta);
- if (d->state == QHeaderViewPrivate::ResizeSection) {
+ if (d->state == QHeaderViewPrivate::ResizeSection && !d->preventCursorChangeInSetOffset) {
QPoint cursorPos = QCursor::pos();
if (d->orientation == Qt::Horizontal)
QCursor::setPos(cursorPos.x() + ndelta, cursorPos.y());
@@ -827,6 +827,9 @@ void QHeaderView::swapSections(int first, int second)
ResizeMode secondMode = d->headerSectionResizeMode(second);
int secondLogical = d->logicalIndex(second);
+ if (d->state == QHeaderViewPrivate::ResizeSection)
+ d->preventCursorChangeInSetOffset = true;
+
d->createSectionItems(second, second, firstSize, firstMode);
d->createSectionItems(first, first, secondSize, secondMode);
@@ -876,6 +879,9 @@ void QHeaderView::resizeSection(int logical, int size)
if (visual == -1)
return;
+ if (d->state == QHeaderViewPrivate::ResizeSection && !d->cascadingResizing && logical != d->section)
+ d->preventCursorChangeInSetOffset = true;
+
int oldSize = d->headerSectionSize(visual);
if (oldSize == size)
return;
@@ -1716,6 +1722,9 @@ void QHeaderView::sectionsInserted(const QModelIndex &parent,
d->invalidateCachedSizeHint();
+ if (d->state == QHeaderViewPrivate::ResizeSection)
+ d->preventCursorChangeInSetOffset = true;
+
// add the new sections
int insertAt = logicalFirst;
int insertCount = logicalLast - logicalFirst + 1;
@@ -1849,6 +1858,9 @@ void QHeaderViewPrivate::_q_sectionsRemoved(const QModelIndex &parent,
int oldCount = q->count();
int changeCount = logicalLast - logicalFirst + 1;
+ if (state == QHeaderViewPrivate::ResizeSection)
+ preventCursorChangeInSetOffset = true;
+
updateHiddenSections(logicalFirst, logicalLast);
if (visualIndices.isEmpty() && logicalIndices.isEmpty()) {
@@ -2268,6 +2280,7 @@ void QHeaderView::mousePressEvent(QMouseEvent *e)
d->originalSize = sectionSize(handle);
d->state = QHeaderViewPrivate::ResizeSection;
d->section = handle;
+ d->preventCursorChangeInSetOffset = false;
}
d->firstPos = pos;
diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h
index cca81b0c22..fe1de2b832 100644
--- a/src/widgets/itemviews/qheaderview_p.h
+++ b/src/widgets/itemviews/qheaderview_p.h
@@ -84,6 +84,7 @@ public:
pressed(-1),
hover(-1),
length(0),
+ preventCursorChangeInSetOffset(false),
movableSections(false),
clickableSections(false),
highlightSelected(false),
@@ -266,6 +267,7 @@ public:
int hover;
int length;
+ bool preventCursorChangeInSetOffset;
bool movableSections;
bool clickableSections;
bool highlightSelected;