--- a/src/hbwidgets/itemviews/hblistview.cpp Thu Jul 15 14:03:49 2010 +0100
+++ b/src/hbwidgets/itemviews/hblistview.cpp Thu Jul 22 16:36:53 2010 +0100
@@ -29,7 +29,6 @@
#include "hblistlayout_p.h"
#include "hblistviewitem.h"
#include "hblistitemcontainer_p.h"
-#include "hblistitemcontainer_p.h"
#include "hbscrollbar.h"
#include <hbwidgetfeedback.h>
#include "hbmodeliterator.h"
@@ -202,7 +201,7 @@
/*!
Returns true if view is in arrange mode. False otherwise.
- */
+*/
bool HbListView::arrangeMode() const
{
Q_D(const HbListView);
@@ -210,8 +209,8 @@
}
/*!
- * Returns the view item being dragged. This is NULL if no item is being dragged.
- */
+ Returns the view item being dragged. This is NULL if no item is being dragged.
+*/
HbAbstractViewItem *HbListView::draggedItem() const
{
Q_D( const HbListView );
@@ -233,25 +232,12 @@
{
Q_D(HbListView);
if (arrangeMode != d->mArrangeMode) {
- if (arrangeMode == true) {
- if (d->mSelectionMode != HbAbstractItemView::NoSelection
- || !d->mModelIterator->model()
- || !(d->mModelIterator->model()->supportedDropActions().testFlag(Qt::MoveAction))) {
- return false;
+ if (d->mSelectionMode != HbAbstractItemView::NoSelection
+ || !d->mModelIterator->model()
+ || !(d->mModelIterator->model()->supportedDropActions().testFlag(Qt::MoveAction))) {
+ return false;
}
- verticalScrollBar()->setInteractive(true);
- } else {
- verticalScrollBar()->setInteractive(false);
- }
- d->mArrangeMode = arrangeMode;
- d->mAnimateItems = !d->mArrangeMode;
-
- if (d->mArrangeMode == true) {
- d->mOriginalFriction = d->mFrictionEnabled;
- setFrictionEnabled(false);
- } else {
- setFrictionEnabled(d->mOriginalFriction);
- }
+ d->arrangeModeSetup(arrangeMode);
}
return true;
}
@@ -317,14 +303,20 @@
/*!
\reimp
+
+ Derived implementations must respect the d->mMoveOngoing flag and not perform
+ any view actions when the flag is set.
*/
void HbListView::rowsInserted(const QModelIndex &parent, int start, int end)
{
Q_D(HbListView);
+ if (d->mMoveOngoing)
+ return;
+
if (parent == d->mModelIterator->rootIndex()) {
HbAbstractItemView::rowsInserted(parent, start, end);
- if (!d->mArrangeMode && d->animationEnabled(true)) {
+ if (d->animationEnabled(true)) {
d->startAppearEffect("viewitem", "appear", parent, start, end);
}
}
@@ -332,11 +324,17 @@
/*!
\reimp
+
+ Derived implementations must respect the d->mMoveOngoing flag and not perform
+ any view actions when the flag is set.
*/
void HbListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
{
Q_D(HbListView);
+ if (d->mMoveOngoing)
+ return;
+
if (parent == d->mModelIterator->rootIndex()) {
for (int i = start; i <= end; i++) {
HbAbstractViewItem* item = viewItem(i);
@@ -345,7 +343,7 @@
d->mDraggedItem = 0;
}
- if (!d->mArrangeMode && d->animationEnabled(false)) {
+ if (d->animationEnabled(false)) {
d->mItemsAboutToBeDeleted.append(item);
}
}
@@ -355,10 +353,17 @@
/*!
\reimp
+
+ Derived implementations must respect the d->mMoveOngoing flag and not perform
+ any view actions when the flag is set.
*/
void HbListView::rowsRemoved(const QModelIndex &parent, int start, int end)
{
Q_D(HbListView);
+
+ if (d->mMoveOngoing)
+ return;
+
if (parent == d->mModelIterator->rootIndex()) {
if (d->animationEnabled(false)) {
for (int i = 0; i < d->mItemsAboutToBeDeleted.count(); i++) {