summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Sorvig <msorvig@trolltech.com>2009-08-24 16:38:41 +0200
committerMorten Sorvig <msorvig@trolltech.com>2009-08-24 16:38:41 +0200
commit4c25d9ed3135a36780cbf517761670c0c0d87902 (patch)
tree6ac86647c775d5011077fedf408053ed6bb9c637
parentc50d78fce2cbacda9b6700d44d77dab98074b676 (diff)
Add list of class names that QWebClient doesnt send updates for.
-rw-r--r--src/eventhandler.js11
-rw-r--r--src/eventqueue.cpp2
-rw-r--r--src/webclientserver.cpp7
-rw-r--r--src/webclientserver.h2
-rw-r--r--src/widgeteventhandler.cpp6
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 ;
}