diff options
author | Morten Sørvig <msorvig@trolltech.com> | 2009-03-20 13:04:50 +0100 |
---|---|---|
committer | Morten Sørvig <msorvig@trolltech.com> | 2009-03-20 13:04:50 +0100 |
commit | e037249e6f6321261963284f8a1d1873b4186ec0 (patch) | |
tree | c8aa51b3f91435fcbdb811d8a0205482d4e4fc58 /src | |
parent | 347db0be9f3eaa667b6c00dadaa818575b84205c (diff) |
Send text updates on key up and "enter" keypress
Don't echo the update back to the line edit that sent it.
Diffstat (limited to 'src')
-rwxr-xr-x | src/eventhandler.js | 37 | ||||
-rwxr-xr-x | src/eventqueue.cpp | 6 | ||||
-rwxr-xr-x | src/eventqueue.h | 1 | ||||
-rwxr-xr-x | src/widgeteventhandler.cpp | 1 |
4 files changed, 31 insertions, 14 deletions
diff --git a/src/eventhandler.js b/src/eventhandler.js index 7e4c63c..ab36599 100755 --- a/src/eventhandler.js +++ b/src/eventhandler.js @@ -38,7 +38,8 @@ function createInputElement(pointer) inputElement.style.visibility = "visible"; document.body.appendChild(inputElement); - dojo.connect(inputElement, 'onkeypress', sendInputElementTextUpdate); + dojo.connect(inputElement, 'onkeypress', inputElementKeyPress); + dojo.connect(inputElement, 'onkeyup', inputElementKeyRelease); return inputElement; } @@ -249,20 +250,30 @@ function sendKeyPress(event) { request("http://INSERT_HOSTNAME/" + "keypress-" + event.keyCode, eventHandler); } +function inputElementKeyPress(event) +{ + console.log(event.charCode + " " + event.keyCode); + if (event.keyCode == 13) // enter, return + sendInputElementTextUpdate(event) +// if (event.keyCode == 8) // backspace +// sendInputElementTextUpdate(event) +} + +function inputElementKeyRelease(event) +{ + console.log("reslese " + event.charCode + " " + event.keyCode); + if (event.keyCode == 13) // enter, return + return; + sendInputElementTextUpdate(event); +} + + function sendInputElementTextUpdate(event) { -// alert(event.charCode + " " + event.keyCode + " " + event.target.value + " " + event.target.pointer) -// alert(" " + event.target.value); -// var id = event.target.value - var text = event.target.value; - if (event.charCode) - text += String.fromCharCode(event.charCode); - else if (event.keyCode == 8) - text = text.slice(0, text.length - 1); - else - return; - var source = "http://INSERT_HOSTNAME/json" + JSON.stringify({ "type" : "textupdate", "id" : event.target.pointer, "text" : text }); - request(source, eventHandler); + var id = event.target.value + var text = event.target.value; + var source = "http://INSERT_HOSTNAME/json" + JSON.stringify({ "type" : "textupdate", "id" : event.target.pointer, "text" : text }); + request(source, eventHandler); } function myload() diff --git a/src/eventqueue.cpp b/src/eventqueue.cpp index 0d7e5d0..1099309 100755 --- a/src/eventqueue.cpp +++ b/src/eventqueue.cpp @@ -98,8 +98,12 @@ void EventQueue::handleRequest(HttpRequest *request, HttpResponse *response) const int id = json_object_get_int(idObject); json_object* tmp = json_object_object_get(request, "text"); QByteArray text = json_object_get_string(tmp); - ((QLineEdit *)(id))->setText(text); + QLineEdit *lineEdit = ((QLineEdit *)(id)); + + disableUpdates.insert(lineEdit); + lineEdit->setText(text); ((QLineEditAccess *)(id))->emitTextEdited(text); + disableUpdates.remove(lineEdit); } json_object_put(request); //free diff --git a/src/eventqueue.h b/src/eventqueue.h index d54dadf..d31330b 100755 --- a/src/eventqueue.h +++ b/src/eventqueue.h @@ -53,6 +53,7 @@ public: QQueue<EventEntry> events; QHash<int, QImage> images; QHash<int, QRect> geometries; + QSet<QObject*> disableUpdates; }; #endif diff --git a/src/widgeteventhandler.cpp b/src/widgeteventhandler.cpp index 07192cc..65b38c1 100755 --- a/src/widgeteventhandler.cpp +++ b/src/widgeteventhandler.cpp @@ -278,5 +278,6 @@ void WidgetEventHandler::addShowEvent(QWidget *widget) void WidgetEventHandler::lineEditTextChange() { + if (events.disableUpdates.contains(sender()) == false) events.addEvent((int)sender(), EventEntry::TextUpdate); } |