Tabcompletion works again (broke it in last REV). Acts now as an Eventfilter of the...
authorMarcus Eggenberger <egs@quassel-irc.org>
Wed, 6 Feb 2008 15:47:59 +0000 (15:47 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Wed, 6 Feb 2008 15:47:59 +0000 (15:47 +0000)
src/uisupport/inputline.cpp
src/uisupport/tabcompleter.cpp
src/uisupport/tabcompleter.h
version.inc

index fe84cec..e559a93 100644 (file)
@@ -27,6 +27,8 @@ InputLine::InputLine(QWidget *parent)
     idx(0),
     tabCompleter(new TabCompleter(this))
 {
     idx(0),
     tabCompleter(new TabCompleter(this))
 {
+
+  installEventFilter(tabCompleter);
   
 #ifdef Q_WS_MAC
   bindModifier = Qt::ControlModifier | Qt::AltModifier;
   
 #ifdef Q_WS_MAC
   bindModifier = Qt::ControlModifier | Qt::AltModifier;
@@ -51,26 +53,21 @@ void InputLine::keyPressEvent(QKeyEvent * event) {
     return;
   }
   
     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();
     event->accept();
+  } else if(event->key() == Qt::Key_Select) {  // for Qtopia
+    emit returnPressed();
+    QLineEdit::keyPressEvent(event);
   } else {
   } 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() {
 }
 
 void InputLine::on_returnPressed() {
index 3493b29..68f1532 100644 (file)
@@ -118,3 +118,18 @@ void TabCompleter::reset() {
   enabled = false;
 }
 
   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;
+  }
+}
+
index b223fe6..193b2f5 100644 (file)
@@ -37,6 +37,8 @@ public:
   void reset();
   void complete();
 
   void reset();
   void complete();
 
+  virtual bool eventFilter(QObject *obj, QEvent *event);
+
 private slots:
   void ircUserJoinedOrParted(IrcUser *ircUser);
   
 private slots:
   void ircUserJoinedOrParted(IrcUser *ircUser);
   
index 96c2078..a3ec97a 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-02-06";
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-02-06";
-  quasselBuild = 473;
+  quasselBuild = 474;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 464;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 464;