}
}
+void KListView::Private::drawDraggedItems()
+{
+ int dx;
+ int dy;
+ QRect rectToUpdate;
+ QRect currentRect;
+ foreach (const QModelIndex &index, listView->selectionModel()->selectedIndexes())
+ {
+ dx = mousePosition.x() - initialPressPosition.x() + listView->horizontalOffset();
+ dy = mousePosition.y() - initialPressPosition.y() + listView->verticalOffset();
+
+ currentRect = visualRect(index);
+ currentRect.adjust(dx, dy, dx, dy);
+
+ rectToUpdate = rectToUpdate.united(currentRect);
+ }
+
+ listView->viewport()->update(lastDraggedItemsRect);
+
+ lastDraggedItemsRect = rectToUpdate;
+
+ listView->viewport()->update(rectToUpdate);
+}
+
//==============================================================================
}
d->dragLeftViewport = false;
+
+ d->drawDraggedItems();
}
void KListView::dragLeaveEvent(QDragLeaveEvent *event)
void updateScrollbars();
/**
- * This method will draw dragged items
+ * This method will draw dragged items in the painting operation
*/
void drawDraggedItems(QPainter *painter);
+ /**
+ * This method will determine which rect needs to be updated because of a
+ * dragging operation
+ */
+ void drawDraggedItems();
+
// Attributes
bool isDragging;
bool dragLeftViewport;
QModelIndex hovered;
+ QString hoveredCategory;
QPoint initialPressPosition;
QPoint mousePosition;
QItemSelection lastSelection;
QHash<QString, QRect> categoriesPosition;
QStringList categories;
QModelIndexList intersectedIndexes;
- QString hoveredCategory;
+ QRect lastDraggedItemsRect;
// Attributes for speed reasons
KSortFilterProxyModel *proxyModel;