bool BookmarkModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { if (action == Qt::IgnoreAction) return true; if (!data->hasFormat(MIMETYPE) || column > 0) return false; QByteArray ba = data->data(MIMETYPE); QDataStream stream(&ba, QIODevice::ReadOnly); while (stream.atEnd()) return false; qint32 depth; bool expanded; QString name, url; while (!stream.atEnd()) { stream >> depth >> name >> url >> expanded; if (insertRow(qMax(0, row), parent)) { const QModelIndex ¤t = index(qMax(0, row), 0, parent); if (current.isValid()) { BookmarkItem* item = itemFromIndex(current); item->setData(DataVector() << name << url << expanded); } } } return true; }