X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=gui%2Fchannelwidgetinput.cpp;h=c4d1a06fa3ae72592b59de811ad32d1814e2c265;hb=4ccba157efd91e531a3106012f5d54ba372a0292;hp=893623d24c209504928bcc08f9c0b5ffd632d655;hpb=2a068c11e76c7b34afb64d443dbb1afd2e208aaa;p=quassel.git diff --git a/gui/channelwidgetinput.cpp b/gui/channelwidgetinput.cpp index 893623d2..c4d1a06f 100644 --- a/gui/channelwidgetinput.cpp +++ b/gui/channelwidgetinput.cpp @@ -23,26 +23,31 @@ ChannelWidgetInput::ChannelWidgetInput(QWidget *parent) : QLineEdit(parent) { idx = 0; connect(this, SIGNAL(returnPressed()), this, SLOT(enter())); + tabComplete = new TabCompleter(this); + connect(this, SIGNAL(nickListUpdated(QStringList)), tabComplete, SLOT(updateNickList(QStringList))); } -void ChannelWidgetInput::keyPressEvent(QKeyEvent * event) { - if(event->key() == Qt::Key_Up) { - if(idx > 0) { idx--; setText(history[idx]); } - event->accept(); - } else if(event->key() == Qt::Key_Down) { - if(idx < history.count()) idx++; - if(idx < history.count()) setText(history[idx]); - else setText(""); - event->accept(); - } else if(event->key() == Qt::Key_Tab) { - // Tabcomplete - if(cursorPosition() == text().length()) { - +ChannelWidgetInput::~ChannelWidgetInput() { + delete tabComplete; +} - } +void ChannelWidgetInput::keyPressEvent(QKeyEvent * event) { + if(event->key() == Qt::Key_Tab) { // Tabcomplete + tabComplete->complete(); event->accept(); } else { - QLineEdit::keyPressEvent(event); + tabComplete->disable(); + if(event->key() == Qt::Key_Up) { + if(idx > 0) { idx--; setText(history[idx]); } + event->accept(); + } else if(event->key() == Qt::Key_Down) { + if(idx < history.count()) idx++; + if(idx < history.count()) setText(history[idx]); + else setText(""); + event->accept(); + } else { + QLineEdit::keyPressEvent(event); + } } } @@ -61,4 +66,5 @@ void ChannelWidgetInput::enter() { void ChannelWidgetInput::updateNickList(QStringList l) { nickList = l; + emit nickListUpdated(l); }