From 1f7cffc751c022ddea816db471f7870a60dc0d1c Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Wed, 27 Feb 2008 13:29:01 +0000 Subject: [PATCH] Fixed those nasty "Client::updateLastSeen(): Unknown buffer $bufferId" messages. This requieres a core restart for buffers which have already been deleted. --- src/client/client.cpp | 25 +++++++++++++++++++------ version.inc | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index 2af930f0..3326b79d 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -536,18 +536,31 @@ void Client::removeBuffer(BufferId id) { } void Client::bufferRemoved(BufferId bufferId) { + // first remove the buffer from has. this prohibits further lastSeenUpdates + Buffer *buff = 0; + if(_buffers.contains(bufferId)) { + buff = _buffers.take(bufferId); + disconnect(buff, 0, this, 0); + } + + // then we select a sane buffer (status buffer) + /* we have to manually select a buffer because otherwise inconsitent changes + * to the model might occur: + * the result of a buffer removal triggers a change in the selection model. + * the newly selected buffer might be a channel that hasn't been selected yet + * and a new nickview would be created (which never heard of the "rowsAboutToBeRemoved"). + * this new view (and/or) its sort filter will then only receive a "rowsRemoved" signal. + */ QModelIndex current = bufferModel()->currentIndex(); if(current.data(NetworkModel::BufferIdRole).value() == bufferId) { - // select the status buffer if the currently displayed buffer is about to be removed bufferModel()->setCurrentIndex(current.sibling(0,0)); } - + + // and remove it from the model networkModel()->removeBuffer(bufferId); - if(_buffers.contains(bufferId)) { - Buffer *buff = _buffers.take(bufferId); - disconnect(buff, 0, this, 0); + + if(buff) buff->deleteLater(); - } } void Client::bufferRenamed(BufferId bufferId, const QString &newName) { diff --git a/version.inc b/version.inc index a639d5e2..bd9f71ef 100644 --- a/version.inc +++ b/version.inc @@ -5,7 +5,7 @@ quasselVersion = "0.2.0-alpha1+"; quasselDate = "2008-02-27"; - quasselBuild = 588; + quasselBuild = 590; //! Minimum client build number the core needs clientBuildNeeded = 563; -- 2.20.1