allow query merging via drag & drop even if the layout is locked
authorMarcus Eggenberger <egs@quassel-irc.org>
Wed, 11 Feb 2009 23:05:51 +0000 (00:05 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Wed, 11 Feb 2009 23:05:58 +0000 (00:05 +0100)
src/uisupport/bufferviewfilter.cpp

index 4ef0ec8..3e0a59f 100644 (file)
@@ -169,14 +169,21 @@ Qt::ItemFlags BufferViewFilter::flags(const QModelIndex &index) const {
   QModelIndex source_index = mapToSource(index);
   Qt::ItemFlags flags = sourceModel()->flags(source_index);
   if(config()) {
-    if(source_index == QModelIndex() || sourceModel()->data(source_index, NetworkModel::ItemTypeRole) == NetworkModel::NetworkItemType) {
+    NetworkModel::ItemType itemType = (NetworkModel::ItemType)sourceModel()->data(source_index, NetworkModel::ItemTypeRole).toInt();
+    BufferInfo::Type bufferType = (BufferInfo::Type)sourceModel()->data(source_index, NetworkModel::BufferTypeRole).toInt();
+    if(source_index == QModelIndex() || itemType == NetworkModel::NetworkItemType) {
       flags |= Qt::ItemIsDropEnabled;
     } else if(_editMode) {
       flags |= Qt::ItemIsUserCheckable | Qt::ItemIsTristate;
     }
-    ClientBufferViewConfig *clientConf = qobject_cast<ClientBufferViewConfig *>(config());
-    if(clientConf && clientConf->isLocked()) {
-      flags &= ~(Qt::ItemIsDropEnabled | Qt::ItemIsDragEnabled);
+
+    // prohibit dragging of most items. and most drop places
+    // only query to query is allowed for merging
+    if(bufferType != BufferInfo::QueryBuffer) {
+      ClientBufferViewConfig *clientConf = qobject_cast<ClientBufferViewConfig *>(config());
+      if(clientConf && clientConf->isLocked()) {
+       flags &= ~(Qt::ItemIsDropEnabled | Qt::ItemIsDragEnabled);
+      }
     }
   }
   return flags;