if (m_itemSize.isEmpty()) {
// The items are not aligned in a grid but either as columns or rows.
- startMovingAnim = !supportsItemExpanding();
+ startMovingAnim = true;
} else {
// When having a grid the moving-animation should only be started, if it is done within
// one row in the vertical scroll-orientation or one column in the horizontal scroll-orientation.
const QPointF mappedPos = widget->mapFromItem(this, pos);
const QRectF rect = itemRect(widget->index());
if (mappedPos.y() >= 0 && mappedPos.y() <= rect.height()) {
+ if (m_model->supportsDropping(widget->index())) {
+ const int gap = qMax(4, m_styleOption.padding);
+ if (mappedPos.y() >= gap && mappedPos.y() <= rect.height() - gap) {
+ return -1;
+ }
+ }
+
const bool isAboveItem = (mappedPos.y () < rect.height() / 2);
const qreal y = isAboveItem ? rect.top() : rect.bottom();