X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=c8834341ce871500fc3fc026b228e18645ef24b3;hp=eadf8f7739f157130cba350597e0a5e17b5ca68a;hb=3c2914faeb01f3bc32e29f40179ae88040fbcf59;hpb=1658ab9a8f4287fde15f3ceb13503282a6948990 diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index eadf8f77..c8834341 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -196,6 +196,37 @@ void BufferView::keyPressEvent(QKeyEvent *event) { QTreeView::keyPressEvent(event); } +void BufferView::dropEvent(QDropEvent *event) { + QList< QPair > bufferList = Client::networkModel()->mimeDataToBufferList(event->mimeData()); + + if(bufferList.count() != 1) + return QTreeView::dropEvent(event); + + NetworkId networkId = bufferList[0].first; + BufferId bufferId2 = bufferList[0].second; + + QModelIndex index = indexAt(event->pos()); + if(index.data(NetworkModel::ItemTypeRole) != NetworkModel::BufferItemType) + return; + + if(index.data(NetworkModel::BufferTypeRole) != BufferInfo::QueryBuffer) + return; + + if(index.data(NetworkModel::NetworkIdRole).value() != networkId) + return; + + BufferId bufferId1 = index.data(NetworkModel::BufferIdRole).value(); + if(bufferId1 == bufferId2) + return; + + int res = QMessageBox::question(0, tr("Merge buffers permanently?"), + tr("Do you want to merge the buffer \"%1\" permanently into buffer \"%2\"?\n This cannot be reversed!").arg(Client::networkModel()->bufferName(bufferId2)).arg(Client::networkModel()->bufferName(bufferId1)), + QMessageBox::Yes|QMessageBox::No, QMessageBox::No); + if(res == QMessageBox::Yes) { + Client::mergeBuffersPermanently(bufferId1, bufferId2); + } +} + void BufferView::removeSelectedBuffers(bool permanently) { if(!config()) return;