diff options
-rw-r--r-- | demos/irc/chat.ui | 2 | ||||
-rw-r--r-- | src/eventhandler.js | 8 | ||||
-rw-r--r-- | src/eventqueue.cpp | 4 | ||||
-rw-r--r-- | src/sessionhandler.js | 4 | ||||
-rw-r--r-- | src/widgeteventhandler.cpp | 70 | ||||
-rw-r--r-- | src/widgeteventhandler.h | 1 |
6 files changed, 66 insertions, 23 deletions
diff --git a/demos/irc/chat.ui b/demos/irc/chat.ui index 34ee162..72c450c 100644 --- a/demos/irc/chat.ui +++ b/demos/irc/chat.ui @@ -46,7 +46,7 @@ <item> <widget class="QLabel" name="label_3"> <property name="text"> - <string>QWebClient releay chat (<b>QRC</b>)</string> + <string>QWebClient relay chat (<b>QRC</b>)</string> </property> </widget> </item> diff --git a/src/eventhandler.js b/src/eventhandler.js index 6acdace..4d3db3d 100644 --- a/src/eventhandler.js +++ b/src/eventhandler.js @@ -76,11 +76,15 @@ function createStructureElement() function createElement(widgetType, id) { -// console.log("createElement src: " + this.baseUrl); + + + console.log("x createElement src: " + this.baseUrl + " " + widgetType + " id" + id); var element; if (widgetType == "lineedit") { element = this.createInputElement(id); + } else if (widgetType == "textedit") { + element = this.createInputElement(id); } else if (widgetType == "label") { element = this.createLabelElement(id); } else if (widgetType == "midisubwindow") { @@ -207,7 +211,7 @@ function eventHandler(text) var id = this.elmentId(widget); var element = document.getElementById(id); - // console.log("event " + event.type); + console.log("event " + event.type); if (!element) element = this.createElement(widgetType, widget); diff --git a/src/eventqueue.cpp b/src/eventqueue.cpp index 22c098b..774f512 100644 --- a/src/eventqueue.cpp +++ b/src/eventqueue.cpp @@ -36,6 +36,8 @@ QString widgetGetText(QWidget *widget) if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) { text = lineEdit->text(); + } else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) { + text = textEdit->toPlainText(); } else if (QLabel *label = qobject_cast<QLabel*>(widget)) { text = label->text(); } else { @@ -302,6 +304,8 @@ json_object *EventQueue::toJsonWidgetType(QWidget *widget) const { if (qobject_cast<QLineEdit *>(widget)) return json_object_new_string("lineedit"); + if (qobject_cast<QTextEdit *>(widget)) + return json_object_new_string("textedit"); if (qobject_cast<QLabel *>(widget)) return json_object_new_string("label"); if (qobject_cast<QMdiSubWindow *>(widget)) diff --git a/src/sessionhandler.js b/src/sessionhandler.js index c8e9800..6e1e5d3 100644 --- a/src/sessionhandler.js +++ b/src/sessionhandler.js @@ -3,10 +3,14 @@ function request(theurl) { // console.log("send request: " + theurl); var webclientObject = this; +// var argumentsObject = new Object; +// argumentsObject["foo"] = "bar space"; +// argumentsObject["foo2"] = "bar2"; dojo.xhrPost( { // The following URL must match that used to test the server. url: theurl, timeout: 0, // Time in milliseconds +// content : argumentsObject, // The LOAD function will be called on a successful response. load: function(response, ioArgs) { diff --git a/src/widgeteventhandler.cpp b/src/widgeteventhandler.cpp index 00ec819..947b09b 100644 --- a/src/widgeteventhandler.cpp +++ b/src/widgeteventhandler.cpp @@ -36,24 +36,38 @@ void WidgetEventHandler::setRootWidget(QWidget *root) recursivelyInstallEventHandler(root); } +bool WidgetEventHandler::shouldProcessChildWidgets(QWidget *widget) +{ + if (qobject_cast<QTextEdit *>(widget)) + return false; + return true; +} void WidgetEventHandler::recursivelyInstallEventHandler(QWidget *widget) { widget->installEventFilter(this); -// qDebug() << "event filter on" << widget->metaObject()->className() << widget->objectName(); + DEBUG << "event filter on" << widget->metaObject()->className() << widget->objectName() << int(widget); if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) { connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(textChange())); events.addEvent((int)widget, EventEntry::TextUpdate); + } else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) { + connect(textEdit, SIGNAL(textChanged()), this, SLOT(textChange())); + events.addEvent((int)widget, EventEntry::TextUpdate); } else if (QLabel *label = qobject_cast<QLabel*>(widget)) { events.addEvent((int)widget, EventEntry::TextUpdate); } else if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea *>(widget)) { recursivelyInstallEventHandler(scrollArea->viewport()); } - foreach (QWidget *child, widget->findChildren<QWidget *>()) { - recursivelyInstallEventHandler(child); + if (shouldProcessChildWidgets(widget) == false) + return; + + foreach (QObject *child, widget->children()) { + // DEBUG() << "descend" << widget << child; + if (QWidget *childWidget = qobject_cast<QWidget *>(child)) + recursivelyInstallEventHandler(childWidget); } } @@ -82,8 +96,10 @@ bool WidgetEventHandler::eventFilter(QObject *object, QEvent *event) if (event->type() == QEvent::Paint) { if (QLabel *label = qobject_cast<QLabel *>(widget)) { events.addEvent((int)widget, EventEntry::TextUpdate); + } else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) { + events.addEvent((int)widget, EventEntry::TextUpdate); } - if (!grabbing) { + else if (!grabbing) { DEBUG << " add paint update" << object; addPendingUpdate(widget, static_cast<QPaintEvent*>(event)->rect()); } @@ -278,7 +294,7 @@ void WidgetEventHandler::handlePositionUpdate(json_object *request) disableUpdates.insert(widget); widget->move(x, y); disableUpdates.remove(widget); - // qDebug() << "position update" << id << x << y; + // DEBUG() << "position update" << id << x << y; } void WidgetEventHandler::widgetPaint(QWidget *widget, const QRect &updateRect) @@ -317,24 +333,34 @@ QRect WidgetEventHandler::globalGeometry(QWidget *widget) } -void WidgetEventHandler::recursivelyAddHide(QWidget *root) +void WidgetEventHandler::recursivelyAddHide(QWidget *widget) { - foreach (QWidget *child, root->findChildren<QWidget *>()) { - events.addEvent((int)child, EventEntry::Hide); + events.addEvent((int)widget, EventEntry::Hide); + + if (shouldProcessChildWidgets(widget) == false) + return; + + foreach (QObject *child, widget->children()) { + if (QWidget *childWidget = qobject_cast<QWidget *>(child)) + recursivelyAddHide(childWidget); } } void WidgetEventHandler::recursivelyAddShow(QWidget *root) { - foreach (QWidget *child, root->findChildren<QWidget *>()) { - if (child->isVisible() == false) - continue; - if (events.images.contains((int)child)) { - addShowEvent(child); - } + if (shouldProcessChildWidgets(root) == false) + return; - // Add pending paint update - addPendingUpdate(child, child->rect()); + foreach (QObject *child, root->children()) { + if (QWidget *childWidget = qobject_cast<QWidget *>(child)) { + if (childWidget->isVisible() == false) + continue; + if (events.images.contains((int)childWidget)) { + addShowEvent(childWidget); + } + // Add pending paint update + addPendingUpdate(childWidget, childWidget->rect()); + } } } @@ -350,18 +376,22 @@ void WidgetEventHandler::recursivelyAddUpdate(QWidget *widget) if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) { events.addEvent((int)widget, EventEntry::TextUpdate); } + if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) { + events.addEvent((int)widget, EventEntry::TextUpdate); + } else if (QLabel *label = qobject_cast<QLabel *>(widget)) { events.addEvent((int)widget, EventEntry::TextUpdate); } - // Add pending paint update addPendingUpdate(widget, widget->rect()); + if (shouldProcessChildWidgets(widget) == false) + return; - - foreach (QWidget *child, widget->findChildren<QWidget *>()) { - recursivelyAddUpdate(child); + foreach (QObject *child, widget->children()) { + if (QWidget *childWidget = qobject_cast<QWidget *>(child)) + recursivelyAddUpdate(childWidget); } } diff --git a/src/widgeteventhandler.h b/src/widgeteventhandler.h index fc0f950..0583736 100644 --- a/src/widgeteventhandler.h +++ b/src/widgeteventhandler.h @@ -10,6 +10,7 @@ Q_OBJECT public: WidgetEventHandler(QObject *parent = 0); void setRootWidget(QWidget *root); + bool shouldProcessChildWidgets(QWidget *widget); void recursivelyInstallEventHandler(QWidget *widget); void setSession(Session *session); Session *session(); |