aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickgridview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquickgridview.cpp')
-rw-r--r--src/quick/items/qquickgridview.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp
index 0a1f7681d6..7105b507a3 100644
--- a/src/quick/items/qquickgridview.cpp
+++ b/src/quick/items/qquickgridview.cpp
@@ -400,7 +400,7 @@ int QQuickGridViewPrivate::snapIndex() const
if (item->index == -1)
continue;
qreal itemTop = item->position();
- FxGridItemSG *hItem = static_cast<FxGridItemSG*>(highlight);
+ FxGridItemSG *hItem = static_cast<FxGridItemSG*>(highlight.get());
if (itemTop >= hItem->rowPos()-rowSize()/2 && itemTop < hItem->rowPos()+rowSize()/2) {
FxGridItemSG *gridItem = static_cast<FxGridItemSG*>(item);
index = gridItem->index;
@@ -700,10 +700,9 @@ void QQuickGridViewPrivate::createHighlight(bool onDestruction)
{
bool changed = false;
if (highlight) {
- if (trackedItem == highlight)
+ if (trackedItem == highlight.get())
trackedItem = nullptr;
- delete highlight;
- highlight = nullptr;
+ highlight.reset();
delete highlightXAnimator;
delete highlightYAnimator;
@@ -720,7 +719,8 @@ void QQuickGridViewPrivate::createHighlight(bool onDestruction)
if (currentItem) {
QQuickItem *item = createHighlightItem();
if (item) {
- FxGridItemSG *newHighlight = new FxGridItemSG(item, q, true);
+ std::unique_ptr<FxGridItemSG> newHighlight
+ = std::make_unique<FxGridItemSG>(item, q, true);
newHighlight->trackGeometry(true);
if (autoHighlight)
resetHighlightPosition();
@@ -731,7 +731,7 @@ void QQuickGridViewPrivate::createHighlight(bool onDestruction)
highlightYAnimator->target = QQmlProperty(item, QLatin1String("y"));
highlightYAnimator->userDuration = highlightMoveDuration;
- highlight = newHighlight;
+ highlight = std::move(newHighlight);
changed = true;
}
}
@@ -762,7 +762,7 @@ void QQuickGridViewPrivate::resetHighlightPosition()
{
if (highlight && currentItem) {
FxGridItemSG *cItem = static_cast<FxGridItemSG*>(currentItem);
- static_cast<FxGridItemSG*>(highlight)->setPosition(cItem->colPos(), cItem->rowPos());
+ static_cast<FxGridItemSG *>(highlight.get())->setPosition(cItem->colPos(), cItem->rowPos());
}
}
@@ -2101,7 +2101,8 @@ void QQuickGridView::viewportMoved(Qt::Orientations orient)
if (pos != d->highlight->position()) {
d->highlightXAnimator->stop();
d->highlightYAnimator->stop();
- static_cast<FxGridItemSG*>(d->highlight)->setPosition(static_cast<FxGridItemSG*>(d->highlight)->colPos(), pos);
+ FxGridItemSG *sgHighlight = static_cast<FxGridItemSG *>(d->highlight.get());
+ sgHighlight->setPosition(sgHighlight->colPos(), pos);
} else {
d->updateHighlight();
}
@@ -2110,7 +2111,10 @@ void QQuickGridView::viewportMoved(Qt::Orientations orient)
int idx = d->snapIndex();
if (idx >= 0 && idx != d->currentIndex) {
d->updateCurrent(idx);
- if (d->currentItem && static_cast<FxGridItemSG*>(d->currentItem)->colPos() != static_cast<FxGridItemSG*>(d->highlight)->colPos() && d->autoHighlight) {
+ if (d->currentItem
+ && static_cast<FxGridItemSG*>(d->currentItem)->colPos()
+ != static_cast<FxGridItemSG*>(d->highlight.get())->colPos()
+ && d->autoHighlight) {
if (d->flow == FlowLeftToRight)
d->highlightXAnimator->to = d->currentItem->itemX();
else