From bcfd213c6c381e6d2344ceba4a82ed3f87a9fd3e Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Wed, 6 Feb 2008 12:22:18 +0000 Subject: [PATCH] pasting multiple lines at once into the InputLine is now treated correctly --- src/qtui/inputwidget.cpp | 12 +++------- src/qtui/inputwidget.h | 2 +- src/uisupport/inputline.cpp | 39 ++++++++++++++++--------------- src/uisupport/inputline.h | 46 +++++++++++++++++-------------------- version.inc | 4 ++-- 5 files changed, 48 insertions(+), 55 deletions(-) diff --git a/src/qtui/inputwidget.cpp b/src/qtui/inputwidget.cpp index e329b04d..5f316700 100644 --- a/src/qtui/inputwidget.cpp +++ b/src/qtui/inputwidget.cpp @@ -30,7 +30,7 @@ InputWidget::InputWidget(QWidget *parent) _selectionModel(0) { ui.setupUi(this); - connect(ui.inputEdit, SIGNAL(returnPressed()), this, SLOT(enterPressed())); + connect(ui.inputEdit, SIGNAL(sendText(QString)), this, SLOT(sendText(QString))); connect(ui.ownNick, SIGNAL(activated(QString)), this, SLOT(changeNick(QString))); connect(this, SIGNAL(userInput(BufferInfo, QString)), Client::instance(), SIGNAL(sendInput(BufferInfo, QString))); setFocusProxy(ui.inputEdit); @@ -144,12 +144,6 @@ void InputWidget::changeNick(const QString &newNick) const { emit userInput(currentBufferInfo, QString("/nick %1").arg(newNick)); } -void InputWidget::enterPressed() { - QStringList lines = ui.inputEdit->text().split('\n', QString::SkipEmptyParts); - foreach(QString msg, lines) { - if(msg.isEmpty()) continue; - emit userInput(currentBufferInfo, msg); - } - ui.inputEdit->clear(); +void InputWidget::sendText(QString text) { + emit userInput(currentBufferInfo, text); } - diff --git a/src/qtui/inputwidget.h b/src/qtui/inputwidget.h index 697f6541..485ac671 100644 --- a/src/qtui/inputwidget.h +++ b/src/qtui/inputwidget.h @@ -56,7 +56,7 @@ protected slots: // virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); private slots: - void enterPressed(); + void sendText(QString text); void changeNick(const QString &newNick) const; void setNetwork(const Network *network); diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index 05f97554..7d863fe0 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -24,11 +24,10 @@ InputLine::InputLine(QWidget *parent) : QLineEdit(parent), - idx(0) + idx(0), + tabCompleter(new TabCompleter(this)) { - connect(this, SIGNAL(returnPressed()), this, SLOT(enter())); - tabComplete = new TabCompleter(this); - + #ifdef Q_WS_MAC bindModifier = Qt::ControlModifier | Qt::AltModifier; jumpModifier = Qt::ControlModifier; @@ -36,6 +35,10 @@ InputLine::InputLine(QWidget *parent) 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() { @@ -49,10 +52,10 @@ void InputLine::keyPressEvent(QKeyEvent * event) { } if(event->key() == Qt::Key_Tab) { // Tabcomplete - tabComplete->complete(); + tabCompleter->complete(); event->accept(); } else { - tabComplete->reset(); + tabCompleter->reset(); if(event->key() == Qt::Key_Up) { if(idx > 0) { idx--; setText(history[idx]); } event->accept(); @@ -70,20 +73,20 @@ void InputLine::keyPressEvent(QKeyEvent * event) { } } -bool InputLine::event(QEvent *e) { - if(e->type() == QEvent::KeyPress) { - keyPressEvent(static_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); + } } diff --git a/src/uisupport/inputline.h b/src/uisupport/inputline.h index 936e1bda..3294be19 100644 --- a/src/uisupport/inputline.h +++ b/src/uisupport/inputline.h @@ -28,32 +28,28 @@ class TabCompleter; class InputLine : public QLineEdit { Q_OBJECT - public: - InputLine(QWidget *parent = 0); - ~InputLine(); +public: + InputLine(QWidget *parent = 0); + ~InputLine(); - protected: - virtual bool event(QEvent *); - virtual void keyPressEvent(QKeyEvent * event); - - private slots: - void enter(); - - public slots: - void updateNickList(QStringList); - - signals: - void nickListUpdated(QStringList); - - private: - qint32 idx; - QStringList history; - QStringList nickList; - - TabCompleter *tabComplete; - - int bindModifier; - int jumpModifier; +protected: + // virtual bool event(QEvent *); + virtual void keyPressEvent(QKeyEvent * event); + +private slots: + void on_returnPressed(); + void on_textChanged(QString newText); + +signals: + void sendText(QString text); + +private: + QStringList history; + qint32 idx; + TabCompleter *tabCompleter; + + int bindModifier; + int jumpModifier; }; #endif diff --git a/version.inc b/version.inc index b2db73ca..533e953f 100644 --- a/version.inc +++ b/version.inc @@ -4,8 +4,8 @@ { using namespace Global; quasselVersion = "0.2.0-pre"; - quasselDate = "2008-02-05"; - quasselBuild = 469; + quasselDate = "2008-02-06"; + quasselBuild = 472; //! Minimum client build number the core needs clientBuildNeeded = 464; -- 2.20.1