X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fabstractbuffercontainer.cpp;h=14440271fe06a5dc0b04ebff7259d6dd6a3b4336;hp=78ead2738f8ec9a209974883200e2d76c2eca497;hb=8db1c0298b0b9baf3af072a5ef368b2f2d14169d;hpb=2684aa5295d12e4f7c66b3011fc8b1819f3d1cbb diff --git a/src/uisupport/abstractbuffercontainer.cpp b/src/uisupport/abstractbuffercontainer.cpp index 78ead273..14440271 100644 --- a/src/uisupport/abstractbuffercontainer.cpp +++ b/src/uisupport/abstractbuffercontainer.cpp @@ -42,13 +42,10 @@ void AbstractBufferContainer::rowsAboutToBeRemoved(const QModelIndex &parent, in if(model()->rowCount(parent) != end - start + 1) return; - AbstractChatView *chatView; - QHash::iterator iter = _chatViews.begin(); - while(iter != _chatViews.end()) { - chatView = *iter; - iter = _chatViews.erase(iter); - removeChatView(chatView); + foreach(BufferId id, _chatViews.keys()) { + removeChatView(id); } + _chatViews.clear(); } else { // check if there are explicitly buffers removed for(int i = start; i <= end; i++) { @@ -63,19 +60,21 @@ void AbstractBufferContainer::rowsAboutToBeRemoved(const QModelIndex &parent, in } void AbstractBufferContainer::removeBuffer(BufferId bufferId) { + if(Client::buffer(bufferId)) Client::buffer(bufferId)->setVisible(false); if(!_chatViews.contains(bufferId)) return; - if(Client::buffer(bufferId)) Client::buffer(bufferId)->setVisible(false); - AbstractChatView *chatView = _chatViews.take(bufferId); - removeChatView(chatView); + removeChatView(bufferId); + _chatViews.take(bufferId); } void AbstractBufferContainer::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { BufferId newBufferId = current.data(NetworkModel::BufferIdRole).value(); BufferId oldBufferId = previous.data(NetworkModel::BufferIdRole).value(); - if(newBufferId != oldBufferId) + if(newBufferId != oldBufferId) { setCurrentBuffer(newBufferId); + emit currentChanged(newBufferId); + } } void AbstractBufferContainer::setCurrentBuffer(BufferId bufferId) { @@ -102,7 +101,7 @@ void AbstractBufferContainer::setCurrentBuffer(BufferId bufferId) { _chatViews[bufferId] = chatView; } _currentBuffer = bufferId; - showChatView(chatView); + showChatView(bufferId); buf->setVisible(true); setFocus(); }