summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Sorvig <msorvig@trolltech.com>2009-08-07 20:55:45 +0200
committerMorten Sorvig <msorvig@trolltech.com>2009-08-07 20:55:45 +0200
commit9cad5c9d0b5261c770dd88567848803865230f6c (patch)
treecf57613b93d70883dbcda92614f83f2fdb256941
parenta3ec9a9c0e2d1f38b57616a649bb0f953344d713 (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.js12
-rw-r--r--src/widgeteventhandler.cpp14
-rw-r--r--src/widgeteventhandler.h2
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);