From: Marcus Eggenberger Date: Wed, 6 Feb 2008 15:47:59 +0000 (+0000) Subject: Tabcompletion works again (broke it in last REV). Acts now as an Eventfilter of the... X-Git-Tag: 0.2.0-alpha1~106 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=486bdd0ee6a197d0dfb0a1ca51785b8139a712a9 Tabcompletion works again (broke it in last REV). Acts now as an Eventfilter of the InputLine --- diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index fe84cecf..e559a930 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -27,6 +27,8 @@ InputLine::InputLine(QWidget *parent) idx(0), tabCompleter(new TabCompleter(this)) { + + installEventFilter(tabCompleter); #ifdef Q_WS_MAC bindModifier = Qt::ControlModifier | Qt::AltModifier; @@ -51,26 +53,21 @@ void InputLine::keyPressEvent(QKeyEvent * event) { return; } - if(event->key() == Qt::Key_Tab) { // Tabcomplete - tabCompleter->complete(); + 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_Select) { // for Qtopia + emit returnPressed(); + QLineEdit::keyPressEvent(event); } else { - tabCompleter->reset(); - 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_Select) { // for Qtopia - emit returnPressed(); - QLineEdit::keyPressEvent(event); - } else { - QLineEdit::keyPressEvent(event); - } + QLineEdit::keyPressEvent(event); } + } void InputLine::on_returnPressed() { diff --git a/src/uisupport/tabcompleter.cpp b/src/uisupport/tabcompleter.cpp index 3493b29a..68f1532a 100644 --- a/src/uisupport/tabcompleter.cpp +++ b/src/uisupport/tabcompleter.cpp @@ -118,3 +118,18 @@ void TabCompleter::reset() { enabled = false; } +bool TabCompleter::eventFilter(QObject *obj, QEvent *event) { + if(obj != inputLine || event->type() != QEvent::KeyPress) + return QObject::eventFilter(obj, event); + + QKeyEvent *keyEvent = static_cast(event); + + if(keyEvent->key() == Qt::Key_Tab) { + complete(); + return true; + } else { + reset(); + return false; + } +} + diff --git a/src/uisupport/tabcompleter.h b/src/uisupport/tabcompleter.h index b223fe6e..193b2f5f 100644 --- a/src/uisupport/tabcompleter.h +++ b/src/uisupport/tabcompleter.h @@ -37,6 +37,8 @@ public: void reset(); void complete(); + virtual bool eventFilter(QObject *obj, QEvent *event); + private slots: void ircUserJoinedOrParted(IrcUser *ircUser); diff --git a/version.inc b/version.inc index 96c2078c..a3ec97af 100644 --- a/version.inc +++ b/version.inc @@ -5,7 +5,7 @@ quasselVersion = "0.2.0-pre"; quasselDate = "2008-02-06"; - quasselBuild = 473; + quasselBuild = 474; //! Minimum client build number the core needs clientBuildNeeded = 464;