aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@jollamobile.com>2014-07-23 17:51:37 +1000
committerMartin Jones <martin.jones@jollamobile.com>2014-07-25 02:58:24 +0200
commit39c144f44be76ccc7bdec540a7b7ec00cf0fdc5d (patch)
tree65a49bcc2b84b6594f2a2127d632cc48fbdc7edb /src
parent79f262711c053608c7b0d775a8c7031368ddd17f (diff)
Don't recreate header and footer unnecessarily
The only time that they need to be recreated is if the orientation changes (even then, a good implementation could handle it, but no point requiring that now). Task-number: QTBUG-40375 Change-Id: Id0215fb812724827bb139cda8f8dc6208c703852 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickgridview.cpp2
-rw-r--r--src/quick/items/qquickitemview.cpp14
-rw-r--r--src/quick/items/qquickitemview_p_p.h2
-rw-r--r--src/quick/items/qquicklistview.cpp2
4 files changed, 11 insertions, 9 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp
index d5ca3a128e..c9a051c9bb 100644
--- a/src/quick/items/qquickgridview.cpp
+++ b/src/quick/items/qquickgridview.cpp
@@ -1616,7 +1616,7 @@ void QQuickGridView::setFlow(Flow flow)
}
setContentX(0);
setContentY(0);
- d->regenerate();
+ d->regenerate(true);
emit flowChanged();
}
}
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index 94abbd0954..ff8c69a9c0 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -1783,18 +1783,20 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to)
emit q->countChanged();
}
-void QQuickItemViewPrivate::regenerate()
+void QQuickItemViewPrivate::regenerate(bool orientationChanged)
{
Q_Q(QQuickItemView);
if (q->isComponentComplete()) {
currentChanges.reset();
- delete header;
- header = 0;
- delete footer;
- footer = 0;
+ if (orientationChanged) {
+ delete header;
+ header = 0;
+ delete footer;
+ footer = 0;
+ }
+ clear();
updateHeader();
updateFooter();
- clear();
updateViewport();
setPosition(contentStartOffset());
refill();
diff --git a/src/quick/items/qquickitemview_p_p.h b/src/quick/items/qquickitemview_p_p.h
index a0d17b3bf9..297b9a1471 100644
--- a/src/quick/items/qquickitemview_p_p.h
+++ b/src/quick/items/qquickitemview_p_p.h
@@ -184,7 +184,7 @@ public:
virtual void clear();
virtual void updateViewport();
- void regenerate();
+ void regenerate(bool orientationChanged=false);
void layout();
virtual void animationFinished(QAbstractAnimationJob *);
void refill();
diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp
index c496eab3c5..e5b9f9cf59 100644
--- a/src/quick/items/qquicklistview.cpp
+++ b/src/quick/items/qquicklistview.cpp
@@ -2070,7 +2070,7 @@ void QQuickListView::setOrientation(QQuickListView::Orientation orientation)
setFlickableDirection(HorizontalFlick);
setContentY(0);
}
- d->regenerate();
+ d->regenerate(true);
emit orientationChanged();
}
}