diff options
author | Morten Sorvig <msorvig@trolltech.com> | 2009-08-24 16:38:41 +0200 |
---|---|---|
committer | Morten Sorvig <msorvig@trolltech.com> | 2009-08-24 16:38:41 +0200 |
commit | 4c25d9ed3135a36780cbf517761670c0c0d87902 (patch) | |
tree | 6ac86647c775d5011077fedf408053ed6bb9c637 | |
parent | c50d78fce2cbacda9b6700d44d77dab98074b676 (diff) |
Add list of class names that QWebClient doesnt send updates for.
-rw-r--r-- | src/eventhandler.js | 11 | ||||
-rw-r--r-- | src/eventqueue.cpp | 2 | ||||
-rw-r--r-- | src/webclientserver.cpp | 7 | ||||
-rw-r--r-- | src/webclientserver.h | 2 | ||||
-rw-r--r-- | src/widgeteventhandler.cpp | 6 |
5 files changed, 24 insertions, 4 deletions
diff --git a/src/eventhandler.js b/src/eventhandler.js index 3705199..49ab031 100644 --- a/src/eventhandler.js +++ b/src/eventhandler.js @@ -104,6 +104,15 @@ function createStructureElement() return element; } +function createNoopElement() +{ + var element = document.createElement("div"); + element.className = "divNoop"; + element.style.visibility = "hidden"; + document.body.appendChild(element); + return element; +} + function createElement(widgetType, id) { @@ -124,6 +133,8 @@ function createElement(widgetType, id) // console.log("midisubwindow") element = this.createWidgetElement(id); dojo.connect(element, 'onmousedown', this, dragBegin); + } else if (widgetType == "skippedwidget") { + element = createNoopElement(id); } else { element = this.createWidgetElement(id); } diff --git a/src/eventqueue.cpp b/src/eventqueue.cpp index 6a6e2b0..16b8663 100644 --- a/src/eventqueue.cpp +++ b/src/eventqueue.cpp @@ -309,6 +309,8 @@ json_object *EventQueue::jsonTextUpdateEvent(const EventEntry &event) const json_object *EventQueue::toJsonWidgetType(QWidget *widget) const { + if (!widget || m_session->m_server->shouldSkipUpdate(widget->metaObject()->className())) + return json_object_new_string("skippedwidget"); if (qobject_cast<QLineEdit *>(widget)) return json_object_new_string("lineedit"); if (qobject_cast<QTextEdit *>(widget)) diff --git a/src/webclientserver.cpp b/src/webclientserver.cpp index dc45b56..abf55f2 100644 --- a/src/webclientserver.cpp +++ b/src/webclientserver.cpp @@ -190,6 +190,8 @@ Server::Server(quint16 port) activeSessionLimit = INT_MAX; activeSessionLimitHtml = "<html><body>Active session limit exceeded.</body></html>"; sendUpdatesForPlainQWidgets = false; + skipUpdatesClasses.insert("QWidget"); + skipUpdatesClasses.insert("QRcui"); } Server::~Server() @@ -373,6 +375,11 @@ QByteArray Server::createStatiticsPage() return stats; } +bool Server::shouldSkipUpdate(const QByteArray &className) +{ + return skipUpdatesClasses.contains(className); +} + FileServer::FileServer() { allowedFileNames = QSet<QString>() diff --git a/src/webclientserver.h b/src/webclientserver.h index 79faa62..eecac64 100644 --- a/src/webclientserver.h +++ b/src/webclientserver.h @@ -120,6 +120,8 @@ public: int activeSessionLimit; QByteArray activeSessionLimitHtml; bool sendUpdatesForPlainQWidgets; + bool shouldSkipUpdate(const QByteArray &className); + QSet<QByteArray> skipUpdatesClasses; }; #endif diff --git a/src/widgeteventhandler.cpp b/src/widgeteventhandler.cpp index 45b6b94..741e489 100644 --- a/src/widgeteventhandler.cpp +++ b/src/widgeteventhandler.cpp @@ -62,8 +62,7 @@ bool WidgetEventHandler::shouldProcessChildWidgets(QWidget *widget) void WidgetEventHandler::recursivelyInstallEventHandler(QWidget *widget) { - if (server->sendUpdatesForPlainQWidgets == false && - qstrcmp(widget->metaObject()->className(), "QWidget") == 0) { + if (server->shouldSkipUpdate(widget->metaObject()->className())) { //qDebug() << "skip plain widget" << widget; } else { widget->installEventFilter(this); @@ -314,8 +313,7 @@ void WidgetEventHandler::handlePositionUpdate(json_object *request) void WidgetEventHandler::widgetPaint(QWidget *widget, const QRect &updateRect) { - if (server->sendUpdatesForPlainQWidgets == false && - qstrcmp(widget->metaObject()->className(), "QWidget") == 0) { + if (server->shouldSkipUpdate(widget->metaObject()->className())) { return ; } |