diff options
author | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2011-04-26 13:11:23 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2011-04-26 13:44:32 +0200 |
commit | 5b97322a19321893eeb3c8b4cb27b0b121d96d9a (patch) | |
tree | c20ebf3d640433365f7d6703893d0218565ab54b | |
parent | 0f9334329de6db7511802e515d61223c1dacc955 (diff) |
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
-rw-r--r-- | src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp | 9 |
1 files 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<ServerNodeInstance> &instanceList) const { QVector<PropertyValueContainer> 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())); } } |