X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fbufferwidget.cpp;h=8831a28ea3685b51570d180cb8721326b1cef3a2;hp=99a2f3082043975c9239e0947756a62b0be592b7;hb=8010224cf5bfe5685dc2cf535e8dc1ec19c4c364;hpb=1f02b7201ab7b86238e705d2ce5b22f50bf6acfe diff --git a/src/qtui/bufferwidget.cpp b/src/qtui/bufferwidget.cpp index 99a2f308..8831a28e 100644 --- a/src/qtui/bufferwidget.cpp +++ b/src/qtui/bufferwidget.cpp @@ -31,7 +31,8 @@ BufferWidget::BufferWidget(QWidget *parent) : QWidget(parent), _bufferModel(0), - _selectionModel(0) + _selectionModel(0), + _currentBuffer(0) { ui.setupUi(this); } @@ -95,6 +96,7 @@ void BufferWidget::removeBuffer(BufferId bufferId) { if(!_chatWidgets.contains(bufferId)) return; + if(Client::buffer(bufferId)) Client::buffer(bufferId)->setVisible(false); ChatWidget *chatWidget = _chatWidgets.take(bufferId); ui.stackedWidget->removeWidget(chatWidget); chatWidget->deleteLater(); @@ -107,20 +109,21 @@ void BufferWidget::currentChanged(const QModelIndex ¤t, const QModelIndex variant = current.data(NetworkModel::BufferIdRole); if(!variant.isValid()) return; - - setCurrentBuffer(qVariantValue(variant)); + setCurrentBuffer(variant.value()); } void BufferWidget::setCurrentBuffer(BufferId bufferId) { - ChatWidget *chatWidget; + ChatWidget *chatWidget = 0; + Buffer *buf = Client::buffer(bufferId); + if(!buf) { + qWarning() << "BufferWidget::setBuffer(BufferId): Can't show unknown Buffer:" << bufferId; + return; + } + Buffer *prevBuffer = Client::buffer(currentBuffer()); + if(prevBuffer) prevBuffer->setVisible(false); if(_chatWidgets.contains(bufferId)) { chatWidget = _chatWidgets[bufferId]; } else { - Buffer *buf = Client::buffer(bufferId); - if(!buf) { - qWarning() << "BufferWidget::setBuffer(BufferId): Can't show unknown Buffer:" << bufferId; - return; - } chatWidget = new ChatWidget(this); chatWidget->init(bufferId); QList lines; @@ -135,7 +138,9 @@ void BufferWidget::setCurrentBuffer(BufferId bufferId) { ui.stackedWidget->addWidget(chatWidget); chatWidget->setFocusProxy(this); } + _currentBuffer = bufferId; ui.stackedWidget->setCurrentWidget(chatWidget); + buf->setVisible(true); setFocus(); }