diff options
author | Morten Sorvig <msorvig@trolltech.com> | 2009-08-07 20:55:45 +0200 |
---|---|---|
committer | Morten Sorvig <msorvig@trolltech.com> | 2009-08-07 20:55:45 +0200 |
commit | 9cad5c9d0b5261c770dd88567848803865230f6c (patch) | |
tree | cf57613b93d70883dbcda92614f83f2fdb256941 | |
parent | a3ec9a9c0e2d1f38b57616a649bb0f953344d713 (diff) |
Add support for pressing enter on a line edit: send a newline to the server which will send a fake key event
-rw-r--r-- | src/eventhandler.js | 12 | ||||
-rw-r--r-- | src/widgeteventhandler.cpp | 14 | ||||
-rw-r--r-- | src/widgeteventhandler.h | 2 |
3 files changed, 20 insertions, 8 deletions
diff --git a/src/eventhandler.js b/src/eventhandler.js index c4102b5..6acdace 100644 --- a/src/eventhandler.js +++ b/src/eventhandler.js @@ -309,9 +309,15 @@ function inputElementKeyRelease(event) function sendInputElementTextUpdate(event) { - var id = event.target.value - var text = event.target.value; - var source = this.jsonUrl + JSON.stringify({ "type" : "textupdate", "id" : event.target.pointer, "text" : text }); + var id = event.target.pointer; + var text; + if (event.keyCode == 13) { + text = "\n"; + event.target.value = ""; + } else { + text = event.target.value; + } + var source = this.jsonUrl + JSON.stringify({ "type" : "textupdate", "id" : id, "text" : text }); this.request(source); } diff --git a/src/widgeteventhandler.cpp b/src/widgeteventhandler.cpp index d493434..00ec819 100644 --- a/src/widgeteventhandler.cpp +++ b/src/widgeteventhandler.cpp @@ -44,7 +44,7 @@ void WidgetEventHandler::recursivelyInstallEventHandler(QWidget *widget) // qDebug() << "event filter on" << widget->metaObject()->className() << widget->objectName(); if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) { - connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(lineEditTextChange())); + connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(textChange())); events.addEvent((int)widget, EventEntry::TextUpdate); } else if (QLabel *label = qobject_cast<QLabel*>(widget)) { events.addEvent((int)widget, EventEntry::TextUpdate); @@ -257,8 +257,14 @@ void WidgetEventHandler::handleTextUpdate(json_object* request) QLineEdit *lineEdit = ((QLineEdit *)(id)); disableUpdates.insert(lineEdit); - lineEdit->setText(text); - ((QLineEditAccess *)(id))->emitTextEdited(text); + if (text == "\n") { + QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier); + qApp->sendEvent(lineEdit, &keyEvent); + //((QLineEditAccess *)(id))->emitTextEdited(text); + } else { + lineEdit->setText(text); + ((QLineEditAccess *)(id))->emitTextEdited(text); + } disableUpdates.remove(lineEdit); } @@ -365,7 +371,7 @@ void WidgetEventHandler::addShowEvent(QWidget *widget) events.addEvent((int)widget, EventEntry::Show); } -void WidgetEventHandler::lineEditTextChange() +void WidgetEventHandler::textChange() { if (disableUpdates.contains(sender()) == false) events.addEvent((int)sender(), EventEntry::TextUpdate); diff --git a/src/widgeteventhandler.h b/src/widgeteventhandler.h index 403ca0f..fc0f950 100644 --- a/src/widgeteventhandler.h +++ b/src/widgeteventhandler.h @@ -18,7 +18,7 @@ public: void recursivelyAddUpdate(QWidget *root); protected slots: void updatePendingWidgets(); - void lineEditTextChange(); + void textChange(); protected: bool handleJsonMessage(const QByteArray &message); |