X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Finputwidget.cpp;h=c2ef731e21e5fa092f63305ac56ed699cdfe6c4d;hb=923ab935b9e2936d2512ef9344811e9bb2f436f3;hp=0745d66659a7920d79cbe31a05c86e97064b758e;hpb=ba9d9d766830eab8cc238c60a69f67c8b527aa7e;p=quassel.git diff --git a/src/qtui/inputwidget.cpp b/src/qtui/inputwidget.cpp index 0745d666..c2ef731e 100644 --- a/src/qtui/inputwidget.cpp +++ b/src/qtui/inputwidget.cpp @@ -43,7 +43,12 @@ InputWidget::~InputWidget() { } void InputWidget::setModel(BufferModel *bufferModel) { + if(_bufferModel) { + disconnect(_bufferModel, 0, this, 0); + } _bufferModel = bufferModel; + connect(bufferModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), + this, SLOT(dataChanged(QModelIndex, QModelIndex))); } void InputWidget::setSelectionModel(QItemSelectionModel *selectionModel) { @@ -74,6 +79,15 @@ void InputWidget::currentChanged(const QModelIndex ¤t, const QModelIndex & ui.inputEdit->setEnabled(current.data(NetworkModel::ItemActiveRole).value()); } +void InputWidget::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) { + QItemSelectionRange changedArea(topLeft, bottomRight); + QModelIndex currentIndex = Client::bufferModel()->currentIndex(); + if(changedArea.contains(currentIndex)) { + ui.inputEdit->setEnabled(currentIndex.data(NetworkModel::ItemActiveRole).value()); + } +}; + + const Network *InputWidget::currentNetwork() const { if(!validBuffer) return 0; @@ -82,7 +96,7 @@ const Network *InputWidget::currentNetwork() const { } void InputWidget::setNetwork(const Network *network) { - if(_networkId == network->networkId()) + if(!network || _networkId == network->networkId()) return; const Network *previousNet = Client::network(_networkId);