diff options
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 15 | ||||
-rw-r--r-- | src/widgets/itemviews/qheaderview_p.h | 2 |
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; |