Store changed status of the QAxWidget's "control" property correctly.
authorFriedemann Kleint <Friedemann.Kleint@digia.com>
Tue, 18 Mar 2014 15:22:50 +0000 (16:22 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 18 Mar 2014 15:58:40 +0000 (16:58 +0100)
Handle the case of it being PropertySheetStringValue.

Task-number: QTBUG-37602

Change-Id: Iff54d6409ffabf48406fcfec96289848a42b3e55
Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
src/designer/src/plugins/activeqt/qaxwidgetpropertysheet.cpp

index 6b03b47..776034e 100644 (file)
@@ -58,6 +58,13 @@ QT_BEGIN_NAMESPACE
 
 const char *QAxWidgetPropertySheet::controlPropertyName = "control";
 
+static QString designerPropertyToString(const QVariant &value)
+{
+    return value.canConvert<qdesigner_internal::PropertySheetStringValue>() ?
+        qvariant_cast<qdesigner_internal::PropertySheetStringValue>(value).value() :
+        value.toString();
+}
+
 QAxWidgetPropertySheet::QAxWidgetPropertySheet(QDesignerAxWidget *object, QObject *parent) :
     QDesignerPropertySheet(object, parent),
     m_controlProperty(controlPropertyName),
@@ -121,9 +128,7 @@ void QAxWidgetPropertySheet::setProperty(int index, const QVariant &value)
     }
     // Loading forms: Reload
     if (name == m_controlProperty) {
-        const QString clsid = value.canConvert<qdesigner_internal::PropertySheetStringValue>() ?
-            qvariant_cast<qdesigner_internal::PropertySheetStringValue>(value).value() :
-            value.toString();
+        const QString clsid = designerPropertyToString(value);
         if (clsid.isEmpty() || !axWidget()->loadControl(clsid))
             reset(index);
         else
@@ -182,7 +187,7 @@ void QAxWidgetPropertySheet::reloadPropertySheet(const struct SavedProperties &p
             continue;
         }
         if (name == QLatin1String(controlPropertyName))  {
-            sheet->setChanged(index, !i.value().toString().isEmpty());
+            sheet->setChanged(index, !designerPropertyToString(i.value()).isEmpty());
             continue;
         }
         sheet->setChanged(index, true);