X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fuisupport%2Finputline.cpp;h=7d863fe0423a0a807550e44ff65e010daf9ce6b5;hb=bcfd213c6c381e6d2344ceba4a82ed3f87a9fd3e;hp=dbfb61cb367e076eb5c098d654a2d7c56e6c56d9;hpb=5ffc2c9018aee8b11750a956e9228ed70b3413ae;p=quassel.git diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index dbfb61cb..7d863fe0 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005/06 by The Quassel Team * + * Copyright (C) 2005/06 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * + * (at your option) version 3. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * @@ -22,23 +22,40 @@ #include "tabcompleter.h" -InputLine::InputLine(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))); +InputLine::InputLine(QWidget *parent) + : QLineEdit(parent), + idx(0), + tabCompleter(new TabCompleter(this)) +{ + +#ifdef Q_WS_MAC + bindModifier = Qt::ControlModifier | Qt::AltModifier; + jumpModifier = Qt::ControlModifier; +#else + bindModifier = Qt::ControlModifier; + jumpModifier = Qt::AltModifier; +#endif + + connect(this, SIGNAL(returnPressed()), this, SLOT(on_returnPressed())); + connect(this, SIGNAL(textChanged(QString)), this, SLOT(on_textChanged(QString))); + } InputLine::~InputLine() { - delete tabComplete; } void InputLine::keyPressEvent(QKeyEvent * event) { + if((event->modifiers() == jumpModifier || event->modifiers() == bindModifier) && + (Qt::Key_0 <= event->key() && event->key() <= Qt::Key_9)) { + event->ignore(); + return; + } + if(event->key() == Qt::Key_Tab) { // Tabcomplete - tabComplete->complete(); + tabCompleter->complete(); event->accept(); } else { - tabComplete->disable(); + tabCompleter->reset(); if(event->key() == Qt::Key_Up) { if(idx > 0) { idx--; setText(history[idx]); } event->accept(); @@ -56,20 +73,20 @@ void InputLine::keyPressEvent(QKeyEvent * event) { } } -bool InputLine::event(QEvent *e) { - if(e->type() == QEvent::KeyPress) { - keyPressEvent(dynamic_cast(e)); - return true; - } - return QLineEdit::event(e); -} - -void InputLine::enter() { +void InputLine::on_returnPressed() { history << text(); idx = history.count(); + emit sendText(text()); + clear(); } -void InputLine::updateNickList(QStringList l) { - nickList = l; - emit nickListUpdated(l); +void InputLine::on_textChanged(QString newText) { + if(newText.contains('\n')) { + clear(); + QString line = newText.section('\n', 0, 0); + QString remainder = newText.section('\n', 1); + insert(line); + emit returnPressed(); + insert(remainder); + } }