From 3b8f04c0f345ddd4588321d2e43b6ff132774f40 Mon Sep 17 00:00:00 2001 From: Marek Kochanowicz Date: Wed, 5 Feb 2014 11:44:08 +0100 Subject: [PATCH] Allow multi-item drag. --- apps/opencs/view/world/table.cpp | 42 +++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/apps/opencs/view/world/table.cpp b/apps/opencs/view/world/table.cpp index e7ae62e02..ff0eabf27 100644 --- a/apps/opencs/view/world/table.cpp +++ b/apps/opencs/view/world/table.cpp @@ -415,22 +415,36 @@ void CSVWorld::Table::recordFilterChanged (boost::shared_ptr fi void CSVWorld::Table::mouseMoveEvent (QMouseEvent* event) { - if (event->buttons() & Qt::LeftButton) - { - QModelIndexList selectedRows = selectionModel()->selectedRows(); + if (event->buttons() & Qt::LeftButton) + { + QModelIndexList selectedRows = selectionModel()->selectedRows(); - if (selectedRows.size() == 0) - { - return; - } + if (selectedRows.size() == 0) + { + return; + } - if (selectedRows.size() == 1) //tmp solution - { - CSMWorld::TableMimeData *mime = new CSMWorld::TableMimeData(getUniversalId(selectedRows.begin()->row())); - QDrag *drag = new QDrag(this); - drag->setMimeData(mime); - drag->setPixmap(QString::fromStdString(mime->getIcon())); + QDrag* drag = new QDrag (this); + CSMWorld::TableMimeData* mime = NULL; + + if (selectedRows.size() == 1) + { + mime = new CSMWorld::TableMimeData (getUniversalId (selectedRows.begin()->row())); + } + else + { + std::vector idToDrag; + + foreach (QModelIndex it, selectedRows) + { + idToDrag.push_back (getUniversalId (it.row())); + } + + mime = new CSMWorld::TableMimeData (idToDrag); + } + + drag->setMimeData (mime); + drag->setPixmap (QString::fromStdString (mime->getIcon())); drag->start(); - } } } \ No newline at end of file