summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/moc/outputrevision.h2
-rw-r--r--src/tools/qdoc/codeparser.cpp18
-rw-r--r--src/tools/qdoc/codeparser.h3
-rw-r--r--src/tools/qdoc/cppcodeparser.cpp122
-rw-r--r--src/tools/qdoc/cppcodeparser.h6
-rw-r--r--src/tools/qdoc/ditaxmlgenerator.cpp34
-rw-r--r--src/tools/qdoc/ditaxmlgenerator.h1
-rw-r--r--src/tools/qdoc/doc.cpp55
-rw-r--r--src/tools/qdoc/doc.h5
-rw-r--r--src/tools/qdoc/doc/qdoc-manual.qdoc37
-rw-r--r--src/tools/qdoc/htmlgenerator.cpp2
-rw-r--r--src/tools/qdoc/node.cpp38
-rw-r--r--src/tools/qdoc/node.h10
-rw-r--r--src/tools/qdoc/qmlvisitor.cpp38
-rw-r--r--src/tools/uic/qclass_lib_map.h12
15 files changed, 158 insertions, 225 deletions
diff --git a/src/tools/moc/outputrevision.h b/src/tools/moc/outputrevision.h
index 590728db6c..faf913f849 100644
--- a/src/tools/moc/outputrevision.h
+++ b/src/tools/moc/outputrevision.h
@@ -43,6 +43,6 @@
#define OUTPUTREVISION_H
// if the output revision changes, you MUST change it in qobjectdefs.h too
-enum { mocOutputRevision = 66 }; // moc format output revision
+enum { mocOutputRevision = 67 }; // moc format output revision
#endif // OUTPUTREVISION_H
diff --git a/src/tools/qdoc/codeparser.cpp b/src/tools/qdoc/codeparser.cpp
index f06cc1f040..1d0c486763 100644
--- a/src/tools/qdoc/codeparser.cpp
+++ b/src/tools/qdoc/codeparser.cpp
@@ -229,7 +229,7 @@ QSet<QString> CodeParser::commonMetaCommands()
*/
void CodeParser::processCommonMetaCommand(const Location& location,
const QString& command,
- const QString& arg,
+ const ArgLocPair& arg,
Node* node,
Tree* tree)
{
@@ -241,13 +241,13 @@ void CodeParser::processCommonMetaCommand(const Location& location,
node->setStatus(Node::Deprecated);
}
else if (command == COMMAND_INGROUP) {
- tree->addToGroup(node, arg);
+ tree->addToGroup(node, arg.first);
}
else if (command == COMMAND_INPUBLICGROUP) {
- tree->addToPublicGroup(node, arg);
+ tree->addToPublicGroup(node, arg.first);
}
else if (command == COMMAND_INMODULE) {
- node->setModuleName(arg);
+ node->setModuleName(arg.first);
}
else if (command == COMMAND_INQMLMODULE) {
node->setQmlModule(arg);
@@ -280,15 +280,15 @@ void CodeParser::processCommonMetaCommand(const Location& location,
node->setThreadSafeness(Node::Reentrant);
}
else if (command == COMMAND_SINCE) {
- node->setSince(arg);
+ node->setSince(arg.first);
}
else if (command == COMMAND_PAGEKEYWORDS) {
- node->addPageKeywords(arg);
+ node->addPageKeywords(arg.first);
}
else if (command == COMMAND_SUBTITLE) {
if (node->type() == Node::Fake) {
FakeNode *fake = static_cast<FakeNode *>(node);
- fake->setSubTitle(arg);
+ fake->setSubTitle(arg.first);
}
else
location.warning(tr("Ignored '\\%1'").arg(COMMAND_SUBTITLE));
@@ -299,11 +299,11 @@ void CodeParser::processCommonMetaCommand(const Location& location,
else if (command == COMMAND_TITLE) {
if (node->type() == Node::Fake) {
FakeNode *fake = static_cast<FakeNode *>(node);
- fake->setTitle(arg);
+ fake->setTitle(arg.first);
if (fake->subType() == Node::Example) {
ExampleNode::exampleNodeMap.insert(fake->title(),static_cast<ExampleNode*>(fake));
}
- nameToTitle.insert(fake->name(),arg);
+ nameToTitle.insert(fake->name(),arg.first);
}
else
location.warning(tr("Ignored '\\%1'").arg(COMMAND_TITLE));
diff --git a/src/tools/qdoc/codeparser.h b/src/tools/qdoc/codeparser.h
index f522567ddb..c4429ff79a 100644
--- a/src/tools/qdoc/codeparser.h
+++ b/src/tools/qdoc/codeparser.h
@@ -89,7 +89,8 @@ public:
protected:
QSet<QString> commonMetaCommands();
void processCommonMetaCommand(const Location& location,
- const QString& command, const QString& arg,
+ const QString& command,
+ const ArgLocPair& arg,
Node *node, Tree *tree);
static void extractPageLinkAndDesc(const QString& arg,
QString* link,
diff --git a/src/tools/qdoc/cppcodeparser.cpp b/src/tools/qdoc/cppcodeparser.cpp
index 4e010fcb77..965455a3d5 100644
--- a/src/tools/qdoc/cppcodeparser.cpp
+++ b/src/tools/qdoc/cppcodeparser.cpp
@@ -537,16 +537,16 @@ QSet<QString> CppCodeParser::topicCommands()
*/
Node* CppCodeParser::processTopicCommand(const Doc& doc,
const QString& command,
- const QString& arg)
+ const ArgLocPair& arg)
{
if (command == COMMAND_FN) {
QStringList parentPath;
FunctionNode *func = 0;
FunctionNode *clone = 0;
- if (!makeFunctionNode(arg, &parentPath, &clone) &&
- !makeFunctionNode("void " + arg, &parentPath, &clone)) {
- doc.location().warning(tr("Invalid syntax in '\\%1'").arg(COMMAND_FN));
+ if (!makeFunctionNode(arg.first, &parentPath, &clone) &&
+ !makeFunctionNode("void " + arg.first, &parentPath, &clone)) {
+ arg.second.warning(tr("Invalid syntax in '\\%1'").arg(COMMAND_FN));
}
else {
if (!activeNamespaces_.isEmpty()) {
@@ -595,10 +595,9 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
QStringList parentPath;
FunctionNode *func = 0;
- if (makeFunctionNode(arg, &parentPath, &func, tree_->root())) {
+ if (makeFunctionNode(arg.first, &parentPath, &func, tree_->root())) {
if (!parentPath.isEmpty()) {
- doc.location().warning(tr("Invalid syntax in '\\%1'")
- .arg(COMMAND_MACRO));
+ arg.second.warning(tr("Invalid syntax in '\\%1'").arg(COMMAND_MACRO));
delete func;
func = 0;
}
@@ -615,15 +614,14 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
}
return func;
}
- else if (QRegExp("[A-Za-z_][A-Za-z0-9_]+").exactMatch(arg)) {
- func = new FunctionNode(tree_->root(), arg);
+ else if (QRegExp("[A-Za-z_][A-Za-z0-9_]+").exactMatch(arg.first)) {
+ func = new FunctionNode(tree_->root(), arg.first);
func->setAccess(Node::Public);
- func->setLocation(doc.location());
+ func->setLocation(arg.second);
func->setMetaness(FunctionNode::MacroWithoutParams);
}
else {
- doc.location().warning(tr("Invalid syntax in '\\%1'")
- .arg(COMMAND_MACRO));
+ doc.location().warning(tr("Invalid syntax in '\\%1'").arg(COMMAND_MACRO));
}
return func;
@@ -642,7 +640,7 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
if (type == Node::Fake)
subtype = Node::QmlClass;
- QStringList paths = arg.split(QLatin1Char(' '));
+ QStringList paths = arg.first.split(QLatin1Char(' '));
QStringList path = paths[0].split("::");
Node *node = 0;
@@ -672,7 +670,7 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
if (node == 0) {
doc.location().warning(tr("Cannot find '%1' specified with '\\%2' in any header file")
- .arg(arg).arg(command));
+ .arg(arg.first).arg(command));
lastPath = path;
}
@@ -690,32 +688,33 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
}
else if (command == COMMAND_EXAMPLE) {
if (Config::generateExamples) {
- ExampleNode* en = new ExampleNode(tree_->root(), arg);
+ ExampleNode* en = new ExampleNode(tree_->root(), arg.first);
+ en->setLocation(arg.second);
createExampleFileNodes(en);
return en;
}
}
else if (command == COMMAND_EXTERNALPAGE) {
- return new FakeNode(tree_->root(), arg, Node::ExternalPage, Node::ArticlePage);
+ return new FakeNode(tree_->root(), arg.first, Node::ExternalPage, Node::ArticlePage);
}
else if (command == COMMAND_FILE) {
- return new FakeNode(tree_->root(), arg, Node::File, Node::NoPageType);
+ return new FakeNode(tree_->root(), arg.first, Node::File, Node::NoPageType);
}
else if (command == COMMAND_GROUP) {
- return new FakeNode(tree_->root(), arg, Node::Group, Node::OverviewPage);
+ return new FakeNode(tree_->root(), arg.first, Node::Group, Node::OverviewPage);
}
else if (command == COMMAND_HEADERFILE) {
- return new FakeNode(tree_->root(), arg, Node::HeaderFile, Node::ApiPage);
+ return new FakeNode(tree_->root(), arg.first, Node::HeaderFile, Node::ApiPage);
}
else if (command == COMMAND_MODULE) {
- return new FakeNode(tree_->root(), arg, Node::Module, Node::OverviewPage);
+ return new FakeNode(tree_->root(), arg.first, Node::Module, Node::OverviewPage);
}
else if (command == COMMAND_QMLMODULE) {
return FakeNode::lookupQmlModuleNode(tree_, arg);
}
else if (command == COMMAND_PAGE) {
Node::PageType ptype = Node::ArticlePage;
- QStringList args = arg.split(QLatin1Char(' '));
+ QStringList args = arg.first.split(QLatin1Char(' '));
if (args.size() > 1) {
QString t = args[1].toLower();
if (t == "howto")
@@ -751,18 +750,19 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
fn = new DitaMapNode(tree_->root(), args[0]);
else
fn = new FakeNode(tree_->root(), args[0], Node::Page, ptype);
+ fn->setLocation(arg.second);
if (ncn) {
ncn->addCollision(fn);
}
return fn;
}
else if (command == COMMAND_DITAMAP) {
- FakeNode* fn = new DitaMapNode(tree_->root(), arg);
+ FakeNode* fn = new DitaMapNode(tree_->root(), arg.first);
return fn;
}
else if (command == COMMAND_QMLCLASS) {
ClassNode* classNode = 0;
- QStringList names = arg.split(QLatin1Char(' '));
+ QStringList names = arg.first.split(QLatin1Char(' '));
if (names.size() > 1)
classNode = tree_->findClassNode(names[1].split("::"));
@@ -779,12 +779,13 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
*/
NameCollisionNode* ncn = tree_->checkForCollision(names[0]);
QmlClassNode* qcn = new QmlClassNode(tree_->root(), names[0], classNode);
+ qcn->setLocation(arg.second);
if (ncn)
ncn->addCollision(qcn);
return qcn;
}
else if (command == COMMAND_QMLBASICTYPE) {
- return new QmlBasicTypeNode(tree_->root(), arg);
+ return new QmlBasicTypeNode(tree_->root(), arg.first);
}
else if ((command == COMMAND_QMLSIGNAL) ||
(command == COMMAND_QMLMETHOD) ||
@@ -793,18 +794,39 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
QString module;
QString element;
QString type;
- if (splitQmlMethodArg(doc,arg,type,module,element)) {
+ if (splitQmlMethodArg(doc,arg.first,type,module,element)) {
QmlClassNode* qmlClass = tree_->findQmlClassNode(module,element);
if (qmlClass) {
if (command == COMMAND_QMLSIGNAL)
- return makeFunctionNode(doc,arg,qmlClass,Node::QmlSignal,false,COMMAND_QMLSIGNAL);
+ return makeFunctionNode(doc,
+ arg.first,
+ qmlClass,
+ Node::QmlSignal,
+ false,
+ COMMAND_QMLSIGNAL);
else if (command == COMMAND_QMLATTACHEDSIGNAL)
- return makeFunctionNode(doc,arg,qmlClass,Node::QmlSignal,true,COMMAND_QMLATTACHEDSIGNAL);
+ return makeFunctionNode(doc,
+ arg.first,
+ qmlClass,
+ Node::QmlSignal,
+ true,
+ COMMAND_QMLATTACHEDSIGNAL);
else if (command == COMMAND_QMLMETHOD) {
- return makeFunctionNode(doc,arg,qmlClass,Node::QmlMethod,false,COMMAND_QMLMETHOD);
+ return makeFunctionNode(doc,
+ arg.first,
+ qmlClass,
+ Node::QmlMethod,
+ false,
+ COMMAND_QMLMETHOD);
}
else if (command == COMMAND_QMLATTACHEDMETHOD)
- return makeFunctionNode(doc,arg,qmlClass,Node::QmlMethod,true,COMMAND_QMLATTACHEDMETHOD);
+ return makeFunctionNode(doc,
+ arg.
+ first,
+ qmlClass,
+ Node::QmlMethod,
+ true,
+ COMMAND_QMLATTACHEDMETHOD);
else
return 0; // never get here.
}
@@ -925,26 +947,31 @@ bool CppCodeParser::splitQmlMethodArg(const Doc& doc,
*/
Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
const QString& command,
- const QStringList& args)
+ const ArgList& args)
{
QmlPropGroupNode* qmlPropGroup = 0;
if ((command == COMMAND_QMLPROPERTY) ||
(command == COMMAND_QMLATTACHEDPROPERTY)) {
+ QString arg;
QString type;
QString module;
QString element;
QString property;
bool attached = (command == COMMAND_QMLATTACHEDPROPERTY);
- QStringList::ConstIterator arg = args.begin();
- if (splitQmlPropertyArg(doc,(*arg),type,module,element,property)) {
+ ArgList::ConstIterator argsIter = args.begin();
+ arg = argsIter->first;
+ if (splitQmlPropertyArg(doc,arg,type,module,element,property)) {
QmlClassNode* qmlClass = tree_->findQmlClassNode(module,element);
if (qmlClass) {
qmlPropGroup = new QmlPropGroupNode(qmlClass,property); //,attached);
+ qmlPropGroup->setLocation(location());
}
}
if (qmlPropGroup) {
ClassNode *correspondingClass = static_cast<QmlClassNode*>(qmlPropGroup->parent())->classNode();
QmlPropertyNode *qmlPropNode = new QmlPropertyNode(qmlPropGroup,property,type,attached);
+ qmlPropNode->setLocation(location());
+ qmlPropNode->setQPropertyFlag();
const PropertyNode *correspondingProperty = 0;
if (correspondingClass) {
@@ -954,19 +981,22 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
bool writableList = type.startsWith("list") && correspondingProperty->dataType().endsWith('*');
qmlPropNode->setReadOnly(!(writableList || correspondingProperty->isWritable()));
}
- ++arg;
- while (arg != args.end()) {
- if (splitQmlPropertyArg(doc,(*arg),type,module,element,property)) {
+ ++argsIter;
+ while (argsIter != args.end()) {
+ arg = argsIter->first;
+ if (splitQmlPropertyArg(doc,arg,type,module,element,property)) {
QmlPropertyNode* qmlPropNode = new QmlPropertyNode(qmlPropGroup,
property,
type,
attached);
+ qmlPropNode->setLocation(location());
+ qmlPropNode->setQPropertyFlag();
if (correspondingProperty) {
bool writableList = type.startsWith("list") && correspondingProperty->dataType().endsWith('*');
qmlPropNode->setReadOnly(!(writableList || correspondingProperty->isWritable()));
}
}
- ++arg;
+ ++argsIter;
}
}
}
@@ -1001,9 +1031,10 @@ QSet<QString> CppCodeParser::otherMetaCommands()
*/
void CppCodeParser::processOtherMetaCommand(const Doc& doc,
const QString& command,
- const QString& arg,
+ const ArgLocPair& argLocPair,
Node *node)
{
+ QString arg = argLocPair.first;
if (command == COMMAND_INHEADERFILE) {
if (node != 0 && node->isInnerNode()) {
((InnerNode *) node)->addInclude(arg);
@@ -1152,7 +1183,7 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc,
}
}
else {
- processCommonMetaCommand(doc.location(),command,arg,node,tree_);
+ processCommonMetaCommand(doc.location(),command,argLocPair,node,tree_);
}
}
@@ -1166,8 +1197,8 @@ void CppCodeParser::processOtherMetaCommands(const Doc& doc, Node *node)
const QSet<QString> metaCommands = doc.metaCommandsUsed();
QSet<QString>::ConstIterator cmd = metaCommands.begin();
while (cmd != metaCommands.end()) {
- QStringList args = doc.metaCommandArgs(*cmd);
- QStringList::ConstIterator arg = args.begin();
+ ArgList args = doc.metaCommandArgs(*cmd);
+ ArgList::ConstIterator arg = args.begin();
while (arg != args.end()) {
processOtherMetaCommand(doc, *cmd, *arg, node);
++arg;
@@ -2209,10 +2240,9 @@ bool CppCodeParser::matchDocsAndStuff()
Doc doc(start_loc,end_loc,comment,metacommandsAllowed);
QString topic;
- QStringList args;
+ ArgList args;
- QSet<QString> topicCommandsUsed = topicCommandsAllowed &
- doc.metaCommandsUsed();
+ QSet<QString> topicCommandsUsed = topicCommandsAllowed & doc.metaCommandsUsed();
/*
There should be one topic command in the set,
@@ -2273,7 +2303,7 @@ bool CppCodeParser::matchDocsAndStuff()
}
}
else {
- QStringList::ConstIterator a = args.begin();
+ ArgList::ConstIterator a = args.begin();
while (a != args.end()) {
Doc nodeDoc = doc;
Node *node = processTopicCommand(nodeDoc,topic,*a);
@@ -2468,8 +2498,8 @@ void CppCodeParser::createExampleFileNodes(FakeNode *fake)
proFileName,
userFriendlyFilePath);
if (fullPath.isEmpty()) {
- fake->doc().location().warning(tr("Cannot find file '%1' or '%2'").arg(tmp).arg(proFileName));
- fake->doc().location().warning(tr("EXAMPLE PATH DOES NOT EXIST: %1").arg(examplePath));
+ fake->location().warning(tr("Cannot find file '%1' or '%2'").arg(tmp).arg(proFileName));
+ fake->location().warning(tr(" EXAMPLE PATH DOES NOT EXIST: %1").arg(examplePath));
return;
}
}
diff --git a/src/tools/qdoc/cppcodeparser.h b/src/tools/qdoc/cppcodeparser.h
index 74abb994d9..0f4b5119d6 100644
--- a/src/tools/qdoc/cppcodeparser.h
+++ b/src/tools/qdoc/cppcodeparser.h
@@ -88,12 +88,12 @@ protected:
virtual QSet<QString> topicCommands();
virtual Node *processTopicCommand(const Doc& doc,
const QString& command,
- const QString& arg);
+ const ArgLocPair& arg);
#ifdef QDOC_QML
// might need to implement this in QsCodeParser as well.
virtual Node *processTopicCommandGroup(const Doc& doc,
const QString& command,
- const QStringList& args);
+ const ArgList& args);
bool splitQmlPropertyArg(const Doc& doc,
const QString& arg,
QString& type,
@@ -109,7 +109,7 @@ protected:
virtual QSet<QString> otherMetaCommands();
virtual void processOtherMetaCommand(const Doc& doc,
const QString& command,
- const QString& arg,
+ const ArgLocPair& argLocPair,
Node *node);
void processOtherMetaCommands(const Doc& doc, Node *node);
diff --git a/src/tools/qdoc/ditaxmlgenerator.cpp b/src/tools/qdoc/ditaxmlgenerator.cpp
index 0c88cbc529..b24a6af660 100644
--- a/src/tools/qdoc/ditaxmlgenerator.cpp
+++ b/src/tools/qdoc/ditaxmlgenerator.cpp
@@ -2548,7 +2548,10 @@ void DitaXmlGenerator::generateHeader(const Node* node,
if (!outputclass.isEmpty())
xmlWriter().writeAttribute("outputclass",outputclass);
writeStartTag(nameTag); // <title> or <apiName>
- writeCharacters(name);
+ if (!name.isEmpty())
+ writeCharacters(name);
+ else
+ writeCharacters(node->name());
writeEndTag(); // </title> or </apiName>
}
@@ -3295,7 +3298,7 @@ void DitaXmlGenerator::generateOverviewList(const Node* relative, CodeMarker* /*
QString group;
bool isGroupPage = false;
if (fakeNode->doc().metaCommandsUsed().contains("group")) {
- group = fakeNode->doc().metaCommandArgs("group")[0];
+ group = fakeNode->doc().metaCommandArgs("group")[0].first;
isGroupPage = true;
}
@@ -4493,7 +4496,7 @@ void DitaXmlGenerator::generateDetailedQmlMember(Node* node,
if (qpgn->childNodes().size() == 1) {
qpn = static_cast<QmlPropertyNode*>(*p);
startQmlProperty(qpn,relative,marker);
- writeQmlDesc(node, marker);
+ writeApiDesc(node, marker, node->title());
writeEndTag(); // </qmlPropertyDetail>
writeEndTag(); // </qmlProperty>
}
@@ -4506,7 +4509,7 @@ void DitaXmlGenerator::generateDetailedQmlMember(Node* node,
//writeCharacters("...");
writeEndTag(); // </apiName>
writeStartTag(DT_qmlPropertyGroupDetail);
- writeQmlDesc(node, marker);
+ writeApiDesc(node, marker, node->title());
writeEndTag(); // </qmlPropertyGroupDetail>
while (p != qpgn->childNodes().end()) {
if ((*p)->type() == Node::QmlProperty) {
@@ -4524,7 +4527,7 @@ void DitaXmlGenerator::generateDetailedQmlMember(Node* node,
qpn = static_cast<QmlPropertyNode*>(node);
if (qpn->qmlPropNodes().isEmpty()) {
startQmlProperty(qpn,relative,marker);
- writeQmlDesc(node, marker);
+ writeApiDesc(node, marker, node->title());
writeEndTag(); // </qmlPropertyDetail>
writeEndTag(); // </qmlProperty>
}
@@ -4533,7 +4536,7 @@ void DitaXmlGenerator::generateDetailedQmlMember(Node* node,
if (n->type() == Node::QmlProperty) {
qpn = static_cast<QmlPropertyNode*>(n);
startQmlProperty(qpn,relative,marker);
- writeQmlDesc(node, marker);
+ writeApiDesc(node, marker, node->title());
writeEndTag(); // </qmlPropertyDetail>
writeEndTag(); // </qmlProperty>
}
@@ -4552,7 +4555,7 @@ void DitaXmlGenerator::generateDetailedQmlMember(Node* node,
//writeCharacters("...");
writeEndTag(); // </apiName>
writeStartTag(DT_qmlPropertyGroupDetail);
- writeQmlDesc(node, marker);
+ writeApiDesc(node, marker, node->title());
writeEndTag(); // </qmlPropertyGroupDetail>
NodeList::ConstIterator p = qpn->qmlPropNodes().begin();
while (p != qpn->qmlPropNodes().end()) {
@@ -4603,27 +4606,12 @@ void DitaXmlGenerator::writeQmlRef(DitaTag tag,
writeEndTag(); // </qmlAttached>
}
writeEndTag(); // </qmlXxxDef>
- writeQmlDesc(node, marker);
+ writeApiDesc(node, marker, node->title());
writeEndTag(); // </qmlXxxDetail>
writeEndTag(); // tag
}
/*!
- Writes the <apiDesc> tag and its contents for the \a node.
- The \a marker is used for markeing up the text body.
- */
-void DitaXmlGenerator::writeQmlDesc(Node* node, CodeMarker* marker)
-{
- writeStartTag(DT_apiDesc);
- generateStatus(node, marker);
- generateBody(node, marker);
- generateThreadSafeness(node, marker);
- generateSince(node, marker);
- generateAlsoList(node, marker);
- writeEndTag(); // </apiDesc>
-}
-
-/*!
This generates a <qmlTypeDef> in which the
QML module name and version number are specified.
*/
diff --git a/src/tools/qdoc/ditaxmlgenerator.h b/src/tools/qdoc/ditaxmlgenerator.h
index 538a667849..56cf48614c 100644
--- a/src/tools/qdoc/ditaxmlgenerator.h
+++ b/src/tools/qdoc/ditaxmlgenerator.h
@@ -418,7 +418,6 @@ private:
Node* node,
const InnerNode* relative,
CodeMarker* marker);
- void writeQmlDesc(Node* node, CodeMarker* marker);
void generateDetailedQmlMember(Node* node,
const InnerNode* relative,
CodeMarker* marker);
diff --git a/src/tools/qdoc/doc.cpp b/src/tools/qdoc/doc.cpp
index 3c1bab17af..af7e26dd17 100644
--- a/src/tools/qdoc/doc.cpp
+++ b/src/tools/qdoc/doc.cpp
@@ -113,7 +113,6 @@ enum {
CMD_ENDSIDEBAR,
CMD_ENDTABLE,
CMD_ENDTOPICREF,
- CMD_EXPIRE,
CMD_FOOTNOTE,
CMD_GENERATELIST,
CMD_GRANULARITY,
@@ -231,7 +230,6 @@ static struct {
{ "endsidebar", CMD_ENDSIDEBAR, 0 },
{ "endtable", CMD_ENDTABLE, 0 },
{ "endtopicref", CMD_ENDTOPICREF, 0 },
- { "expire", CMD_EXPIRE, 0 },
{ "footnote", CMD_FOOTNOTE, 0 },
{ "generatelist", CMD_GENERATELIST, 0 },
{ "granularity", CMD_GRANULARITY, 0 }, // ### don't document for now
@@ -348,6 +346,8 @@ static QString cleanLink(const QString &link)
return link.mid(colonPos + 1).simplified();
}
+typedef QMap<QString, ArgList> CommandMap;
+
class DocPrivate : public Shared
{
public:
@@ -370,7 +370,7 @@ public:
QStringList enumItemList;
QStringList omitEnumItemList;
QSet<QString> metacommandsUsed;
- QCommandMap metaCommandMap;
+ CommandMap metaCommandMap;
bool hasLegalese : 1;
bool hasSectioningUnits : 1;
DocPrivateExtra *extra;
@@ -462,7 +462,6 @@ private:
Location& location();
QString detailsUnknownCommand(const QSet<QString>& metaCommandSet,
const QString& str);
- void checkExpiry(const QString& date);
void insertBaseName(const QString &baseName);
void insertTarget(const QString& target, bool keyword);
void include(const QString& fileName, const QString& identifier);
@@ -859,9 +858,6 @@ void DocParser::parse(const QString& source,
append(Atom::TableRight);
}
break;
- case CMD_EXPIRE:
- checkExpiry(getArgument());
- break;
case CMD_FOOTNOTE:
if (openCommand(cmd)) {
enterPara();
@@ -1392,13 +1388,13 @@ void DocParser::parse(const QString& source,
append(Atom::ParaRight);
p1 = getMetaCommandArgument(cmdStr);
}
- priv->metaCommandMap[cmdStr].append(p1);
+ priv->metaCommandMap[cmdStr].append(ArgLocPair(p1,location()));
break;
case NOT_A_CMD:
if (metaCommandSet.contains(cmdStr)) {
priv->metacommandsUsed.insert(cmdStr);
QString arg = getMetaCommandArgument(cmdStr);
- priv->metaCommandMap[cmdStr].append(arg);
+ priv->metaCommandMap[cmdStr].append(ArgLocPair(arg,location()));
if (possibleTopics.contains(cmdStr)) {
priv->topics.append(Topic(cmdStr,arg));
}
@@ -1662,43 +1658,6 @@ QString DocParser::detailsUnknownCommand(const QSet<QString> &metaCommandSet,
return tr("Maybe you meant '\\%1'?").arg(best);
}
-void DocParser::checkExpiry(const QString& date)
-{
- QRegExp ymd("(\\d{4})(?:-(\\d{2})(?:-(\\d{2})))");
-
- if (ymd.exactMatch(date)) {
- int y = ymd.cap(1).toInt();
- int m = ymd.cap(2).toInt();
- int d = ymd.cap(3).toInt();
-
- if (m == 0)
- m = 1;
- if (d == 0)
- d = 1;
- QDate expiryDate(y, m, d);
- if (expiryDate.isValid()) {
- int days = expiryDate.daysTo(QDate::currentDate());
- if (days == 0) {
- location().warning(tr("Documentation expires today"));
- }
- else if (days == 1) {
- location().warning(tr("Documentation expired yesterday"));
- }
- else if (days >= 2) {
- location().warning(tr("Documentation expired %1 days ago")
- .arg(days));
- }
- }
- else {
- location().warning(tr("Date '%1' invalid").arg(date));
- }
- }
- else {
- location().warning(tr("Date '%1' not in YYYY-MM-DD format")
- .arg(date));
- }
-}
-
void DocParser::insertBaseName(const QString &baseName)
{
priv->constructExtra();
@@ -3086,9 +3045,9 @@ const TopicList& Doc::topicsUsed() const
return priv == 0 ? *nullTopicList() : priv->topics;
}
-QStringList Doc::metaCommandArgs(const QString& metacommand) const
+ArgList Doc::metaCommandArgs(const QString& metacommand) const
{
- return priv == 0 ? QStringList() : priv->metaCommandMap.value(metacommand);
+ return priv == 0 ? ArgList() : priv->metaCommandMap.value(metacommand);
}
const QList<Text> &Doc::alsoList() const
diff --git a/src/tools/qdoc/doc.h b/src/tools/qdoc/doc.h
index d3fd2dbb4d..1f83f95362 100644
--- a/src/tools/qdoc/doc.h
+++ b/src/tools/qdoc/doc.h
@@ -63,7 +63,8 @@ class Text;
class FakeNode;
class DitaRef;
-typedef QMap<QString, QStringList> QCommandMap;
+typedef QPair<QString, Location> ArgLocPair;
+typedef QList<ArgLocPair> ArgList;
typedef QMap<QString, QString> QStringMap;
typedef QMultiMap<QString, QString> QStringMultiMap;
@@ -168,7 +169,7 @@ public:
const QStringList &omitEnumItemNames() const;
const QSet<QString> &metaCommandsUsed() const;
const TopicList& topicsUsed() const;
- QStringList metaCommandArgs( const QString& metaCommand ) const;
+ ArgList metaCommandArgs(const QString& metaCommand) const;
const QList<Text> &alsoList() const;
bool hasTableOfContents() const;
bool hasKeywords() const;
diff --git a/src/tools/qdoc/doc/qdoc-manual.qdoc b/src/tools/qdoc/doc/qdoc-manual.qdoc
index fa3301e072..6983f6345f 100644
--- a/src/tools/qdoc/doc/qdoc-manual.qdoc
+++ b/src/tools/qdoc/doc/qdoc-manual.qdoc
@@ -256,7 +256,6 @@
\li \l {04-qdoc-commands-textmarkup.html#e-command} {\\e} \span {class="newStuff"} {(new 5/3/2012)}
\li \l {12-0-qdoc-commands-miscellaneous.html#else-command} {\\else}
\li \l {12-0-qdoc-commands-miscellaneous.html#endif-command} {\\endif}
- \li \l {12-0-qdoc-commands-miscellaneous.html#expire-command} {\\expire}
\li \l {11-qdoc-commands-specialcontent.html#footnote-command} {\\footnote}
\li \l {12-0-qdoc-commands-miscellaneous.html#generatelist-command} {\\generatelist}
\li \l {10-qdoc-commands-tablesandlists.html#header-command} {\\header}
@@ -3506,41 +3505,6 @@
visual appearance of the documentation, and to the process of
generating the documentation.
- \target expire-command
- \section1 \\expire
-
- The \\expire command allows you to define an expiration
- date for your documentation.
-
- When using the \\expire command, QDoc will emit a warning when the
- current date is larger than the specified date. The command
- accepts one argument; the argument's format is yyyy-mm-dd. For
- example:
-
- \code
- / *!
- \page porting.html
-
- \title Porting to Qt 3.x
-
- \expire 2004-12-31
-
- This document describes porting applications from Qt
- 2.x to Qt 3.x.
-
- The Qt 3.x series is not binary compatible with the
- 2.x series.
- ...
- * /
- \endcode
-
- If you run QDoc on 4 July 2005, it will emit the warning
-
- \quotation
- porting.qdoc:6: Documentation expired 185 days ago
- \endquotation
-
-
\target annotatedlist-command
\section1 \\annotatedlist
@@ -8673,7 +8637,6 @@
\li \l {12-0-qdoc-commands-miscellaneous.html#endif-command} {\\endif}
\li \l {13-qdoc-commands-topics.html#enum-command} {\\enum}
\li \l {13-qdoc-commands-topics.html#example-command} {\\example}
- \li \l {12-0-qdoc-commands-miscellaneous.html#expire-command} {\\expire}
\li \l {13-qdoc-commands-topics.html#externalpage-command} {\\externalpage}
\li \l {13-qdoc-commands-topics.html#fn-command} {\\fn}
\li \l {11-qdoc-commands-specialcontent.html#footnote-command} {\\footnote}
diff --git a/src/tools/qdoc/htmlgenerator.cpp b/src/tools/qdoc/htmlgenerator.cpp
index ef3bf8db15..5755b9afb4 100644
--- a/src/tools/qdoc/htmlgenerator.cpp
+++ b/src/tools/qdoc/htmlgenerator.cpp
@@ -2683,7 +2683,7 @@ void HtmlGenerator::generateOverviewList(const Node *relative, CodeMarker * /* m
QString group;
bool isGroupPage = false;
if (fakeNode->doc().metaCommandsUsed().contains("group")) {
- group = fakeNode->doc().metaCommandArgs("group")[0];
+ group = fakeNode->doc().metaCommandArgs("group")[0].first;
isGroupPage = true;
}
diff --git a/src/tools/qdoc/node.cpp b/src/tools/qdoc/node.cpp
index 30fa76ae02..f235753ccd 100644
--- a/src/tools/qdoc/node.cpp
+++ b/src/tools/qdoc/node.cpp
@@ -1478,7 +1478,6 @@ FakeNode::FakeNode(InnerNode* parent, const QString& name, SubType subtype, Node
setPageType(OverviewPage);
break;
case QmlModule:
- setQmlModule(name);
setPageType(OverviewPage);
break;
case QmlClass:
@@ -1574,10 +1573,10 @@ void FakeNode::insertQmlModuleNode(const QString& qmid, FakeNode* fn)
and inserted into the QML module map mapped to the QML module
identifier constructed from \a arg.
*/
-FakeNode* FakeNode::lookupQmlModuleNode(Tree* tree, const QString& arg)
+FakeNode* FakeNode::lookupQmlModuleNode(Tree* tree, const ArgLocPair& arg)
{
QStringList dotSplit;
- QStringList blankSplit = arg.split(QLatin1Char(' '));
+ QStringList blankSplit = arg.first.split(QLatin1Char(' '));
QString qmid = blankSplit[0];
if (blankSplit.size() > 1) {
dotSplit = blankSplit[1].split(QLatin1Char('.'));
@@ -1587,7 +1586,8 @@ FakeNode* FakeNode::lookupQmlModuleNode(Tree* tree, const QString& arg)
if (qmlModuleMap_.contains(qmid))
fn = qmlModuleMap_.value(qmid);
if (!fn) {
- fn = new FakeNode(tree->root(), arg, Node::QmlModule, Node::OverviewPage);
+ fn = new FakeNode(tree->root(), arg.first, Node::QmlModule, Node::OverviewPage);
+ fn->setQmlModule(arg);
insertQmlModuleNode(qmid,fn);
}
return fn;
@@ -2134,10 +2134,10 @@ void QmlClassNode::subclasses(const QString& base, NodeList& subs)
true is returned. If any of the three is not found or is not
correct, false is returned.
*/
-bool Node::setQmlModule(const QString& arg)
+bool Node::setQmlModule(const ArgLocPair& arg)
{
QStringList dotSplit;
- QStringList blankSplit = arg.split(QLatin1Char(' '));
+ QStringList blankSplit = arg.first.split(QLatin1Char(' '));
qmlModuleName_ = blankSplit[0];
qmlModuleVersionMajor_ = "1";
qmlModuleVersionMinor_ = "0";
@@ -2149,10 +2149,10 @@ bool Node::setQmlModule(const QString& arg)
return true;
}
else
- doc().location().warning(tr("Minor version number missing for '\\qmlmodule' or '\\inqmlmodule'; 0 assumed."));
+ arg.second.warning(tr("Minor version number missing for '\\qmlmodule' or '\\inqmlmodule'; 0 assumed."));
}
else
- doc().location().warning(tr("Module version number missing for '\\qmlmodule' or '\\inqmlmodule'; 1.0 assumed."));
+ arg.second.warning(tr("Module version number missing for '\\qmlmodule' or '\\inqmlmodule'; 1.0 assumed."));
return false;
}
@@ -2294,6 +2294,7 @@ QmlPropertyNode::QmlPropertyNode(QmlPropGroupNode *parent,
designable_(FlagValueDefault),
isdefault_(false),
attached_(attached),
+ qproperty_(false),
readOnly_(FlagValueDefault)
{
setPageType(ApiPage);
@@ -2313,6 +2314,7 @@ QmlPropertyNode::QmlPropertyNode(QmlClassNode *parent,
designable_(FlagValueDefault),
isdefault_(false),
attached_(attached),
+ qproperty_(false),
readOnly_(FlagValueDefault)
{
setPageType(ApiPage);
@@ -2339,6 +2341,7 @@ QmlPropertyNode::QmlPropertyNode(QmlPropertyNode* parent,
designable_(FlagValueDefault),
isdefault_(false),
attached_(attached),
+ qproperty_(false),
readOnly_(FlagValueDefault)
{
setPageType(ApiPage);
@@ -2353,18 +2356,19 @@ QmlPropertyNode::QmlPropertyNode(QmlPropertyNode* parent,
*/
bool QmlPropertyNode::isWritable(Tree* tree)
{
- if (readOnly_ != FlagValueDefault) {
+ if (readOnly_ != FlagValueDefault)
return !fromFlagValue(readOnly_, false);
- }
- PropertyNode* pn = correspondingProperty(tree);
- if (pn) {
- return pn->isWritable();
- }
- else {
- location().warning(tr("Can't detect if QML property %1 is read-only; writable assumed.").arg(name()));
- return true;
+ if (qproperty_) {
+ PropertyNode* pn = correspondingProperty(tree);
+ if (pn)
+ return pn->isWritable();
+
+ location().warning(tr("Can't detect if QML property %1::%2::%3 is read-only; "
+ "writable assumed.")
+ .arg(qmlModuleIdentifier()).arg(qmlTypeName()).arg(name()));
}
+ return true;
}
PropertyNode* QmlPropertyNode::correspondingProperty(Tree *tree)
diff --git a/src/tools/qdoc/node.h b/src/tools/qdoc/node.h
index 8083f2c05d..0b8758d92f 100644
--- a/src/tools/qdoc/node.h
+++ b/src/tools/qdoc/node.h
@@ -230,10 +230,11 @@ public:
QString guid() const;
QString ditaXmlHref();
QString extractClassName(const QString &string) const;
+ virtual QString qmlTypeName() const { return name_; }
virtual QString qmlModuleName() const { return qmlModuleName_; }
virtual QString qmlModuleVersion() const { return qmlModuleVersionMajor_ + "." + qmlModuleVersionMinor_; }
virtual QString qmlModuleIdentifier() const { return qmlModuleName_ + qmlModuleVersionMajor_; }
- virtual bool setQmlModule(const QString& );
+ virtual bool setQmlModule(const ArgLocPair& );
virtual ClassNode* classNode() { return 0; }
virtual void clearCurrentChild() { }
virtual const ImportList* importList() const { return 0; }
@@ -476,7 +477,7 @@ public:
virtual bool isQmlPropertyGroup() const { return (nodeSubtype_ == QmlPropertyGroup); }
static void insertQmlModuleNode(const QString& qmid, FakeNode* fn);
- static FakeNode* lookupQmlModuleNode(Tree* tree, const QString& arg);
+ static FakeNode* lookupQmlModuleNode(Tree* tree, const ArgLocPair& arg);
protected:
SubType nodeSubtype_;
@@ -579,6 +580,7 @@ public:
virtual ~QmlPropGroupNode() { }
virtual bool isQmlNode() const { return true; }
virtual bool isQtQuickNode() const { return parent()->isQtQuickNode(); }
+ virtual QString qmlTypeName() const { return parent()->qmlTypeName(); }
virtual QString qmlModuleName() const { return parent()->qmlModuleName(); }
virtual QString qmlModuleVersion() const { return parent()->qmlModuleVersion(); }
virtual QString qmlModuleIdentifier() const { return parent()->qmlModuleIdentifier(); }
@@ -626,6 +628,7 @@ public:
virtual bool isAttached() const { return attached_; }
virtual bool isQmlNode() const { return true; }
virtual bool isQtQuickNode() const { return parent()->isQtQuickNode(); }
+ virtual QString qmlTypeName() const { return parent()->qmlTypeName(); }
virtual QString qmlModuleName() const { return parent()->qmlModuleName(); }
virtual QString qmlModuleVersion() const { return parent()->qmlModuleVersion(); }
virtual QString qmlModuleIdentifier() const { return parent()->qmlModuleIdentifier(); }
@@ -635,6 +638,7 @@ public:
const QString& element() const { return static_cast<QmlPropGroupNode*>(parent())->element(); }
void appendQmlPropNode(QmlPropertyNode* p) { qmlPropNodes_.append(p); }
const NodeList& qmlPropNodes() const { return qmlPropNodes_; }
+ void setQPropertyFlag() { qproperty_ = true; }
private:
QString type_;
@@ -642,6 +646,7 @@ private:
FlagValue designable_;
bool isdefault_;
bool attached_;
+ bool qproperty_;
FlagValue readOnly_;
NodeList qmlPropNodes_;
};
@@ -803,6 +808,7 @@ public:
(type() == QmlSignalHandler));
}
virtual bool isQtQuickNode() const { return parent()->isQtQuickNode(); }
+ virtual QString qmlTypeName() const { return parent()->qmlTypeName(); }
virtual QString qmlModuleName() const { return parent()->qmlModuleName(); }
virtual QString qmlModuleVersion() const { return parent()->qmlModuleVersion(); }
virtual QString qmlModuleIdentifier() const { return parent()->qmlModuleIdentifier(); }
diff --git a/src/tools/qdoc/qmlvisitor.cpp b/src/tools/qdoc/qmlvisitor.cpp
index 1544227fc3..a1031f2e83 100644
--- a/src/tools/qdoc/qmlvisitor.cpp
+++ b/src/tools/qdoc/qmlvisitor.cpp
@@ -242,7 +242,11 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation,
QmlPropArgs qpa;
if (splitQmlPropertyArg(doc, topicsUsed.at(i).args, qpa)) {
QmlPropertyNode* n = new QmlPropertyNode(qpn, qpa.name_, qpa.type_, false);
+ n->setLocation(doc.location());
qpn->appendQmlPropNode(n);
+ n->setReadOnly(qpn->isReadOnly());
+ if (qpn->isDefault())
+ n->setDefault();
}
else
qDebug() << " FAILED TO PARSE QML PROPERTY:"
@@ -254,7 +258,7 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation,
QSet<QString> metacommands = doc.metaCommandsUsed();
if (metacommands.count() > 0) {
QString topic;
- QStringList args;
+ ArgList args;
QSet<QString>::iterator i = metacommands.begin();
while (i != metacommands.end()) {
if (topics.contains(*i)) {
@@ -273,7 +277,7 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation,
QmlPropertyNode* qpn = static_cast<QmlPropertyNode*>(node);
qpn->setReadOnly(0);
if (qpn->dataType() == "alias") {
- QStringList part = args[0].split(QLatin1Char(' '));
+ QStringList part = args[0].first.split(QLatin1Char(' '));
qpn->setDataType(part[0]);
}
}
@@ -319,12 +323,12 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation,
QmlClassNode::insertQmlModuleMember(qmid, qcn);
}
else if (command == COMMAND_QMLINHERITS) {
- if (node->name() == args[0])
- doc.location().warning(tr("%1 tries to inherit itself").arg(args[0]));
+ if (node->name() == args[0].first)
+ doc.location().warning(tr("%1 tries to inherit itself").arg(args[0].first));
else {
- CodeParser::setLink(node, Node::InheritsLink, args[0]);
+ CodeParser::setLink(node, Node::InheritsLink, args[0].first);
if (node->subType() == Node::QmlClass) {
- QmlClassNode::addInheritedBy(args[0],node);
+ QmlClassNode::addInheritedBy(args[0].first,node);
}
}
}
@@ -341,10 +345,10 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation,
}
}
else if ((command == COMMAND_INGROUP) && !args.isEmpty()) {
- QStringList::ConstIterator arg = args.begin();
- while (arg != args.end()) {
- tree->addToGroup(node, *arg);
- ++arg;
+ ArgList::ConstIterator argsIter = args.begin();
+ while (argsIter != args.end()) {
+ tree->addToGroup(node, argsIter->first);
+ ++argsIter;
}
}
else if (command == COMMAND_INTERNAL) {
@@ -362,7 +366,7 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation,
node->setStatus(Node::Preliminary);
}
else if (command == COMMAND_SINCE) {
- QString arg = args.join(" ");
+ QString arg = args[0].first; //.join(" ");
node->setSince(arg);
}
else {
@@ -484,22 +488,12 @@ bool QmlDocVisitor::visit(QQmlJS::AST::UiPublicMember *member)
if (qmlClass) {
QString name = member->name.toString();
QmlPropertyNode *qmlPropNode = new QmlPropertyNode(qmlClass, name, type, false);
+ //qmlPropNode->setLocation(doc.location());
qmlPropNode->setReadOnly(member->isReadonlyMember);
if (member->isDefaultMember)
qmlPropNode->setDefault();
applyDocumentation(member->firstSourceLocation(), qmlPropNode);
}
-#if 0
- if (qmlClass) {
- QString name = member->name->asString();
- QmlPropGroupNode *qmlPropGroup = new QmlPropGroupNode(qmlClass, name, false);
- if (member->isDefaultMember)
- qmlPropGroup->setDefault();
- QmlPropertyNode *qmlPropNode = new QmlPropertyNode(qmlPropGroup, name, type, false);
- qmlPropNode->setWritable(!member->isReadonlyMember);
- applyDocumentation(member->firstSourceLocation(), qmlPropGroup);
- }
-#endif
}
break;
}
diff --git a/src/tools/uic/qclass_lib_map.h b/src/tools/uic/qclass_lib_map.h
index 34ce374750..825813cc29 100644
--- a/src/tools/uic/qclass_lib_map.h
+++ b/src/tools/uic/qclass_lib_map.h
@@ -777,16 +777,6 @@ QT_CLASS_LIB(QWidgetItem, QtWidgets, qlayoutitem.h)
QT_CLASS_LIB(QWidgetItemV2, QtWidgets, qlayoutitem.h)
QT_CLASS_LIB(QPalette, QtGui, qpalette.h)
QT_CLASS_LIB(QColorGroup, QtWidgets, qpalette.h)
-QT_CLASS_LIB(QPlatformCursorImage, QtGui, qplatformcursor_qpa.h)
-QT_CLASS_LIB(QPlatformCursorPrivate, QtGui, qplatformcursor_qpa.h)
-QT_CLASS_LIB(QPlatformCursor, QtGui, qplatformcursor_qpa.h)
-QT_CLASS_LIB(QPlatformOpenGLContext, QtGui, qplatformopenglcontext_qpa.h)
-QT_CLASS_LIB(QPlatformIntegration, QtGui, qplatformintegration_qpa.h)
-QT_CLASS_LIB(QPlatformIntegrationFactoryInterface, QtGui, qplatformintegrationplugin_qpa.h)
-QT_CLASS_LIB(QPlatformIntegrationPlugin, QtGui, qplatformintegrationplugin_qpa.h)
-QT_CLASS_LIB(QPlatformScreen, QtGui, qplatformscreen_qpa.h)
-QT_CLASS_LIB(QPlatformWindow, QtGui, qplatformwindow_qpa.h)
-QT_CLASS_LIB(QPlatformWindowFormat, QtGui, qplatformwindowformat_qpa.h)
QT_CLASS_LIB(QSessionManager, QtGui, qsessionmanager.h)
QT_CLASS_LIB(QShortcut, QtWidgets, qshortcut.h)
QT_CLASS_LIB(QSizePolicy, QtWidgets, qsizepolicy.h)
@@ -915,8 +905,6 @@ QT_CLASS_LIB(QFontInfo, QtGui, qfontinfo.h)
QT_CLASS_LIB(QFontMetrics, QtGui, qfontmetrics.h)
QT_CLASS_LIB(QFontMetricsF, QtGui, qfontmetrics.h)
QT_CLASS_LIB(QGlyphs, QtGui, qglyphs.h)
-QT_CLASS_LIB(QSupportedWritingSystems, QtGui, qplatformfontdatabase_qpa.h)
-QT_CLASS_LIB(QPlatformFontDatabase, QtGui, qplatformfontdatabase_qpa.h)
QT_CLASS_LIB(QStaticText, QtGui, qstatictext.h)
QT_CLASS_LIB(QSyntaxHighlighter, QtGui, qsyntaxhighlighter.h)
QT_CLASS_LIB(QTextCursor, QtGui, qtextcursor.h)