idx(0),
tabCompleter(new TabCompleter(this))
{
+
+ installEventFilter(tabCompleter);
#ifdef Q_WS_MAC
bindModifier = Qt::ControlModifier | Qt::AltModifier;
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() {
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<QKeyEvent *>(event);
+
+ if(keyEvent->key() == Qt::Key_Tab) {
+ complete();
+ return true;
+ } else {
+ reset();
+ return false;
+ }
+}
+