summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMorten Sørvig <msorvig@trolltech.com>2009-03-20 13:04:50 +0100
committerMorten Sørvig <msorvig@trolltech.com>2009-03-20 13:04:50 +0100
commite037249e6f6321261963284f8a1d1873b4186ec0 (patch)
treec8aa51b3f91435fcbdb811d8a0205482d4e4fc58 /src
parent347db0be9f3eaa667b6c00dadaa818575b84205c (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-xsrc/eventhandler.js37
-rwxr-xr-xsrc/eventqueue.cpp6
-rwxr-xr-xsrc/eventqueue.h1
-rwxr-xr-xsrc/widgeteventhandler.cpp1
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);
}