X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Finputline.cpp;h=745a3e332ee57d0d30a6627c9f1eb0feacf9aab4;hp=60f34fb0b672dac872c8a9e7c3f490c4ed2ece32;hb=dc9de5af386f61e6dc5537d04ccc8aceb8126b21;hpb=a35e9270e608bfbc5b21ba47d49b3139f06b13e9 diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index 60f34fb0..745a3e33 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -18,6 +18,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "bufferview.h" #include "inputline.h" #include "tabcompleter.h" @@ -33,6 +34,27 @@ InputLine::InputLine(QWidget *parent) InputLine::~InputLine() { } +bool InputLine::eventFilter(QObject *watched, QEvent *event) { + if(event->type() != QEvent::KeyPress) + return false; + + // keys from BufferView should be sent to (and focus) the input line + BufferView *view = qobject_cast(watched); + if(view) { + QKeyEvent *keyEvent = static_cast(event); + if(keyEvent->text().length() == 1) { // normal key press + QChar c = keyEvent->text().at(0); + if(c.isLetterOrNumber() || c.isSpace() || c.isPunct() || c.isSymbol()) { + setFocus(); + keyPressEvent(keyEvent); + return true; + } else + return false; + } + } + return false; +} + void InputLine::keyPressEvent(QKeyEvent * event) { switch(event->key()) { case Qt::Key_Up: