From 5b97322a19321893eeb3c8b4cb27b0b121d96d9a Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Apr 2011 13:11:23 +0200 Subject: QmlDesigner.qmlPuppet: fixes a bug when dragging in a WebView on KDE WebView object contains a QIcon property ("reload.icon"), which fails to be streamed from the puppet (client) to Qt Creator (server). The QIcon is created by a 'KIconEngine' in the KDE case. which isn't found on the QtCreator side. This leads operator>> in qicon.cpp to not read anything from the buffer at all ... leading to all following properties being invalid, since read from the wrong bytes in the stream. Solution: Since QIcon leads to problems and we have no current use case for a QIcon property in Bauhaus we just ignore properties of type QIcon. Reviewed-by: Marco Bubke Task-number: QTCREATORBUG-4596 --- .../qmldesigner/designercore/instances/nodeinstanceserver.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp index 43849c096d..3d256b697a 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp @@ -865,6 +865,11 @@ InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand return InformationChangedCommand(informationVector); } +static bool supportedVariantType(QVariant::Type type) +{ + return type < QVariant::UserType && type != QVariant::Icon; +} + ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList &instanceList) const { QVector valueVector; @@ -872,7 +877,7 @@ ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList< foreach(const ServerNodeInstance &instance, instanceList) { foreach(const QString &propertyName, instance.propertyNames()) { QVariant propertyValue = instance.property(propertyName); - if (propertyValue.type() < QVariant::UserType) + if (supportedVariantType(propertyValue.type())) valueVector.append(PropertyValueContainer(instance.instanceId(), propertyName, propertyValue, QString())); } } @@ -901,7 +906,7 @@ ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QVecto if( instance.isValid()) { QVariant propertyValue = instance.property(propertyName); - if (propertyValue.type() < QVariant::UserType) + if (supportedVariantType(propertyValue.type())) valueVector.append(PropertyValueContainer(instance.instanceId(), propertyName, propertyValue, QString())); } } -- cgit v1.2.3