X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=41c2ee13b8c58017ddeee1da54a8041d1dc3375a;hp=81f03d33344a02271d76f51b465d94c155469caf;hb=092e6b212637ffbf68800584b7c1f32d1931b602;hpb=2fd8e1c1d5a04b167ffa73e9c011fd34faebe1fc diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 81f03d33..41c2ee13 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -183,23 +183,23 @@ Qt::ItemFlags BufferViewFilter::flags(const QModelIndex &index) const QModelIndex source_index = mapToSource(index); Qt::ItemFlags flags = sourceModel()->flags(source_index); if (config()) { - 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; - } - // prohibit dragging of most items. and most drop places - // only query to query is allowed for merging - if (bufferType != BufferInfo::QueryBuffer) { + // We need Status Buffers to be a drop target, to allow for rearranging buffers. + // The Status Buffer "owns" the space between Channel/Query buffers in the tree. + // This DOES mean that it looks like you can merge a buffer into the Status buffer, but that is restricted in BufferView::dropEvent(). + if (bufferType == BufferInfo::StatusBuffer) { + // But only if the layout isn't locked! ClientBufferViewConfig *clientConf = qobject_cast(config()); - if (clientConf && clientConf->isLocked()) { - flags &= ~(Qt::ItemIsDropEnabled | Qt::ItemIsDragEnabled); + if (clientConf && !clientConf->isLocked()) { + flags |= Qt::ItemIsDropEnabled; } } + + // If we're in Edit Mode, everything except Status Buffers should be hideable. + if (_editMode && bufferType != BufferInfo::StatusBuffer) { + flags |= Qt::ItemIsUserCheckable | Qt::ItemIsTristate; + } } return flags; } @@ -357,7 +357,7 @@ bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) if (!_filterString.isEmpty()) { const BufferInfo info = qvariant_cast(Client::bufferModel()->data(source_bufferIndex, NetworkModel::BufferInfoRole)); QString name = info.bufferName(); - if (name.contains(_filterString)) { + if (name.contains(_filterString, Qt::CaseInsensitive)) { return true; } else { return false;