X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Finputwidget.cpp;h=0f4a7ee42d081ab55f91e630c4a7141e9da822f6;hp=0745d66659a7920d79cbe31a05c86e97064b758e;hb=8b17f1bad397489b6d1e1fd30b3691c6fdd376ab;hpb=ba9d9d766830eab8cc238c60a69f67c8b527aa7e diff --git a/src/qtui/inputwidget.cpp b/src/qtui/inputwidget.cpp index 0745d666..0f4a7ee4 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;