X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=180db0da1c658a6af9384ce0a926872fc44ed571;hp=3b895d1e6930ed481cb0e20be74bfd5f876193c0;hb=29b3fd2d4ee33d8bc72ef28982e5a6e963892991;hpb=28b6868290a5281b2e2da17f52514c55df802a30 diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index 3b895d1e..180db0da 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -129,11 +129,25 @@ void BufferView::setFilteredModel(QAbstractItemModel *model_, BufferViewConfig * } else { BufferViewFilter *filter = new BufferViewFilter(model_, config); setModel(filter); - connect(this, SIGNAL(removeBuffer(const QModelIndex &)), filter, SLOT(removeBuffer(const QModelIndex &))); + connect(this, SIGNAL(removeBuffer(const QModelIndex &)), + filter, SLOT(removeBuffer(const QModelIndex &))); } setConfig(config); } +void BufferView::setSelectionModel(QItemSelectionModel *selectionModel) { + if(QTreeView::selectionModel()) + disconnect(selectionModel, SIGNAL(currentChanged(QModelIndex, QModelIndex)), + model(), SIGNAL(checkPreviousCurrentForRemoval(QModelIndex, QModelIndex))); + + QTreeView::setSelectionModel(selectionModel); + BufferViewFilter *filter = qobject_cast(model()); + if(filter) { + connect(selectionModel, SIGNAL(currentChanged(QModelIndex, QModelIndex)), + filter, SLOT(checkPreviousCurrentForRemoval(QModelIndex, QModelIndex))); + } +} + void BufferView::setConfig(BufferViewConfig *config) { if(_config == config) return; @@ -177,10 +191,10 @@ void BufferView::joinChannel(const QModelIndex &index) { } void BufferView::keyPressEvent(QKeyEvent *event) { - if(event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { + if((event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) && !selectionModel()->selectedIndexes().isEmpty()) { event->accept(); QModelIndex index = selectionModel()->selectedIndexes().first(); - if(index.isValid()) { + if(index.isValid() && index.data(NetworkModel::ItemTypeRole) == NetworkModel::BufferItemType) { emit removeBuffer(index); } }