summaryrefslogtreecommitdiffstats
path: root/tools/qdoc3/cppcodeparser.cpp
diff options
context:
space:
mode:
authorWarwick Allison <warwick.allison@nokia.com>2009-11-04 03:13:24 (GMT)
committerWarwick Allison <warwick.allison@nokia.com>2009-11-04 03:57:55 (GMT)
commitb41f6618f01a7e9a7d6b5772a5bdfb8841aa2c8b (patch)
tree45085c6b753ea3a99aa9e35f068a9800455fec65 /tools/qdoc3/cppcodeparser.cpp
parent8caacf51667d4cf770b18a8b59e46f842861210e (diff)
downloadQt-b41f6618f01a7e9a7d6b5772a5bdfb8841aa2c8b.zip
Qt-b41f6618f01a7e9a7d6b5772a5bdfb8841aa2c8b.tar.gz
Qt-b41f6618f01a7e9a7d6b5772a5bdfb8841aa2c8b.tar.bz2
qdoc updates for QML
Reviewed-by:Michael Brasser
Diffstat (limited to 'tools/qdoc3/cppcodeparser.cpp')
-rw-r--r--tools/qdoc3/cppcodeparser.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp
index 843bec8..cabbe38 100644
--- a/tools/qdoc3/cppcodeparser.cpp
+++ b/tools/qdoc3/cppcodeparser.cpp
@@ -799,14 +799,26 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
}
}
if (qmlPropGroup) {
- new QmlPropertyNode(qmlPropGroup,property,type,attached);
+ const ClassNode *correspondingClass = static_cast<const QmlClassNode*>(qmlPropGroup->parent())->classNode();
+ PropertyNode *correspondingProperty = 0;
+ if (correspondingClass)
+ correspondingProperty = static_cast<PropertyNode*>((Node*)correspondingClass->findNode(property, Node::Property));
+ QmlPropertyNode *qmlPropNode = new QmlPropertyNode(qmlPropGroup,property,type,attached);
+ if (correspondingProperty) {
+ bool writableList = type.startsWith("list") && correspondingProperty->dataType().endsWith('*');
+ qmlPropNode->setWritable(writableList || correspondingProperty->isWritable());
+ }
++arg;
while (arg != args.end()) {
if (splitQmlPropertyArg(doc,(*arg),type,element,property)) {
- new QmlPropertyNode(qmlPropGroup,
+ QmlPropertyNode * qmlPropNode = new QmlPropertyNode(qmlPropGroup,
property,
type,
attached);
+ if (correspondingProperty) {
+ bool writableList = type.startsWith("list") && correspondingProperty->dataType().endsWith('*');
+ qmlPropNode->setWritable(writableList || correspondingProperty->isWritable());
+ }
}
++arg;
}
@@ -1751,9 +1763,10 @@ bool CppCodeParser::matchProperty(InnerNode *parent)
if (key == "READ")
tre->addPropertyFunction(property, value, PropertyNode::Getter);
- else if (key == "WRITE")
+ else if (key == "WRITE") {
tre->addPropertyFunction(property, value, PropertyNode::Setter);
- else if (key == "STORED")
+ property->setWritable(true);
+ } else if (key == "STORED")
property->setStored(value.toLower() == "true");
else if (key == "DESIGNABLE")
property->setDesignable(value.toLower() == "true");