diff --git a/src/gui/entry/EntryModel.cpp b/src/gui/entry/EntryModel.cpp index 8cf22df6..29e6637b 100644 --- a/src/gui/entry/EntryModel.cpp +++ b/src/gui/entry/EntryModel.cpp @@ -211,12 +211,20 @@ QMimeData* EntryModel::mimeData(const QModelIndexList& indexes) const QByteArray encoded; QDataStream stream(&encoded, QIODevice::WriteOnly); + QSet seenEntries; + for (int i = 0; i < indexes.size(); i++) { if (!indexes[i].isValid()) { continue; } + Entry* entry = entryFromIndex(indexes[i]); - stream << entry->group()->database()->uuid() << entry->uuid(); + if (!seenEntries.contains(entry)) { + // make sure we don't add entries multiple times when we get indexes + // with the same row but different columns + stream << entry->group()->database()->uuid() << entry->uuid(); + seenEntries.insert(entry); + } } data->setData(mimeTypes().first(), encoded); diff --git a/src/gui/group/GroupModel.cpp b/src/gui/group/GroupModel.cpp index fad030e7..6c789a86 100644 --- a/src/gui/group/GroupModel.cpp +++ b/src/gui/group/GroupModel.cpp @@ -297,11 +297,20 @@ QMimeData* GroupModel::mimeData(const QModelIndexList& indexes) const QByteArray encoded; QDataStream stream(&encoded, QIODevice::WriteOnly); + QSet seenGroups; + for (int i = 0; i < indexes.size(); i++) { if (!indexes[i].isValid()) { continue; } - stream << m_db->uuid() << groupFromIndex(indexes[i])->uuid(); + + Group* group = groupFromIndex(indexes[i]); + if (!seenGroups.contains(group)) { + // make sure we don't add groups multiple times when we get indexes + // with the same row but different columns + stream << m_db->uuid() << group->uuid(); + seenGroups.insert(group); + } } data->setData(mimeTypes().first(), encoded);