┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-05-26 13:40:48 +0200
committerPeter Penz <[email protected]>2012-05-26 13:41:30 +0200
commit073f8cae13f2637c0bf2f5611295e103418d52ff (patch)
tree08eadfa6f69f036a04945b2c6e512bfb8207e018 /src/kitemviews
parentf7622d323926017b9acc4d42f05abdc4bd5ca456 (diff)
Further preperations for drag & drop support in the places panel
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kitemlistcontroller.cpp19
-rw-r--r--src/kitemviews/kitemlistview.cpp11
2 files changed, 20 insertions, 10 deletions
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index 645b2d34a..1b9c53ccf 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -795,12 +795,10 @@ bool KItemListController::dragMoveEvent(QGraphicsSceneDragDropEvent* event, cons
if (m_model->supportsDropping(index)) {
newHoveredWidget->setHovered(true);
} else if (m_model->sortRole().isEmpty()) {
- // The model supports the inserting of items on
- // the given index as no sort-role has been
- // specified. Assure that a drag-indicator
+ // The model supports inserting of items on
+ // the given index. Assure that a drop-indicator
// is shown by the view.
- const int dropIndex = m_view->showDropIndicator(pos);
- Q_UNUSED(dropIndex); // TODO
+ m_view->showDropIndicator(pos);
}
emit itemHovered(index);
@@ -825,8 +823,15 @@ bool KItemListController::dropEvent(QGraphicsSceneDragDropEvent* event, const QT
m_view->setAutoScroll(false);
const QPointF pos = transform.map(event->pos());
- const int index = m_view->itemAt(pos);
- emit itemDropEvent(index, event);
+ if (m_model->sortRole().isEmpty()) {
+ // The model supports inserting of items on
+ // a given index.
+ const int dropIndex = m_view->showDropIndicator(pos);
+ m_view->hideDropIndicator();
+ emit itemDropEvent(dropIndex, event);
+ } else {
+ emit itemDropEvent(m_view->itemAt(pos), event);
+ }
return true;
}
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index 1586c9d96..ee69c8990 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -2313,15 +2313,20 @@ int KItemListView::showDropIndicator(const QPointF& pos)
const QPointF mappedPos = widget->mapFromItem(this, pos);
const QRectF rect = itemRect(widget->index());
if (mappedPos.y() >= 0 && mappedPos.y() <= rect.height()) {
- const qreal y = (mappedPos.y () < rect.height() / 2) ?
- rect.top() : rect.bottom();
+ const bool isAboveItem = (mappedPos.y () < rect.height() / 2);
+ const qreal y = isAboveItem ? rect.top() : rect.bottom();
const QRectF draggingInsertIndicator(rect.left(), y, rect.width(), 1);
if (m_dropIndicator != draggingInsertIndicator) {
m_dropIndicator = draggingInsertIndicator;
update();
}
- return widget->index();
+
+ int index = widget->index();
+ if (!isAboveItem) {
+ ++index;
+ }
+ return index;
}
}