For QLatin1String, operator== is overloaded, so comparing to a latin-1
(C) string literal is efficient, since strlen() is comparatively fast.
OTOH, QStringLiteral, when not using RVO, litters the code with
QString dtor calls, which are not inline. Worse, absent lambdas,
it even allocates memory.
So, just compare using QLatin1String instead.
Change-Id: I7af3bf3a67c55dae33ffaf9922d004fa168a3f9c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The byte array literals are only used to append them to another
QByteArray, so they offer only the static size calculation as a
benefit.
However, there are several drawbacks:
- QByteArrayLiteral data cannot be shared the way string literals
can be, not even within a single TU, and they add a few ints
for the QByteArrayData header which cannot reside in BSS, but
need to be stored in DATA.
- QByteArrayLiteral *does* allocate when the compiler doesn't
support C++11 lambdas.
- QByteArrayLiteral, when not using RVO, litters the code with
QByteArray dtor calls, which are not inline, and thus can't
be optimized away.
In particular, when used like this, they do not prevent any
memory allocation (in fact, they might add some, absent lambdas).
So, just append (C) string literals.
Change-Id: Iee5dba8dd970c5cc6df116afc1f8709a62356b06
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
If you had the following lines in .qdocconf:
qhp.QtFoo.subprojects.examples.title = Examples
qhp.QtFoo.subprojects.examples.indexTitle = Qt Foo Examples
qhp.QtFoo.subprojects.examples.selectors = fake:example
The expected outcome is to see an unsorted list of examples. This
didn't work however, because QDoc assumed to find a chain of
\nextpage links for the indexTitle, and these are rarely used
in Qt documentation nowadays.
This commit ensures that all pages matching the defined selectors
will be listed under the section title, even when the sortPages flag
is not set.
Task-number: QTBUG-41737
Change-Id: I1e7e2a2953de949c9b52763165c406a64d1d46f7
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Re-add the name of a QML type/QML basic type to the navigation
bar.
Change-Id: Ia0ced775099f1ed4071ae9a922d808b9114c10ea
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
There are a couple of code paths in which we return from a function
without freeing the memory pointed by a local pointer.
For the sake of not over-modifying the code, I chose not to turn
"ui" into a scoped pointer.
Change-Id: I0b23944f7526d250c1ebeca0bae9bdc36dceceed
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
The moc preprocessor is not necessarily fully compatible with the native
compiler preprocessor, which can lead to annoying warnings.
This fixes a problem particularly with the boost headers that rely on
MSVC only preprocessor features (to work around other MSVC preprocessor
deficiencies).
Task-number: QTBUG-29331
Change-Id: If884452969b512a746c81e235d31636b39c45b27
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
With the recent changes in QDoc, we can no longer assume that
pages listed in the TOC are of type DocNode. For example, all
Qt modules want to list C++/QML type index pages in the TOC,
and those are now of type CollectionNode.
This change fixes the issue by using a more generic search
function when generating the .qhp TOC, one that doesn't
restrict the results to any specific node type. As an
exception, the main index page for a project must still be a
DocNode, i.e. a page declared using the \page command.
However, we do want to restrict the search to the pages in
this documentation module only - for that purpose, a function
for setting a local search order is introduced.
Task-number: QTBUG-40241
Change-Id: Ibaa5af9c5de6436f34b7ae67e56733817fc090b9
Reviewed-by: Martin Smith <martin.smith@digia.com>
This commit adds id tags with the anchor reference as the value
to html entities for documentation section titles and function
signatures, properties etc. for both C++ and QML documentation
pages.
Together with new CSS rules, we can dynamically highlight the
title that the user clicked on. This helps to locate the item
of interest on a crowded page or when the page cannot be
scrolled down enough to place the selected item on top.
Change-Id: I7d1db2ed4e12779e1a9e571996ee65c3befa4e7a
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Make the warnings that are displayed during the reading of index
files and dependencies more consistent by using QDoc's error
logging functions.
This means that warnings are not generated in prepare phase,
but they are generated for projects that call qdoc directly,
running prepare and generate phases in one go.
Change-Id: I645c3feb1cbf471fd3ca6034f94e7dc1ea35b875
Reviewed-by: Martin Smith <martin.smith@digia.com>
If a (non-external) link string ends in '.html', qdoc assumed it is
a direct link to a generated html page. However, it could also refer
to an example file with .html extension.
This commit fixes a corner case where links to an example file page
were broken for such files.
Task-number: QTBUG-40831
Change-Id: I31acc141970b6768f0a93964723be82611d37a3d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Adapt the code that generates the navigation bar to the recent
changes in node hierarchy - Module pages, QML module pages and
groups are no longer DocNodes.
This change will ensure that if a page has a title, it will be
visible in the navigation bar regardless of the the page (node)
type.
Change-Id: I697a12d5904d88f91771764ab7ed607b79e4eab1
Reviewed-by: Martin Smith <martin.smith@digia.com>
When writing the Qt Help Project XML file, QDoc traverses the
documentation nodes recursively, adding html filenames for each node
to the XML.
The logic that QDoc uses for this process is not perfect, and needs
to be kept up to date whenever the internal structure of the node
tree changes. This often leads to problems where some pages are
generated but not added to the .qhp, resulting in missing pages in
the offline documentation.
This change fixes this problem by having the generator keep track
of the created filenames, and passing that to the help project
writer.
Task-number: QTBUG-40572
Change-Id: Ife60a30724183a2b6dcd2397ea79bfbdc2addd04
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Since the \br was promoted from a macro to a QDoc command, its output
has been enclosed in extra paragraph end/start tags, adding to the
visible vertical space.
This change fixes the issue by not closing the paragraph when QDoc
encounters a \br command.
Also removes the now-obsolete \br and \hr macros, as they are both
proper commands. \BR and \HR substitute macros are kept.
Task-number: QTBUG-37361
Change-Id: Iabbefb6e79268419792ccba42386f6342ccd175d
Reviewed-by: Martin Smith <martin.smith@digia.com>
This update fixes a few cases that didn't work
correctly. The problem was caused by calling
findNodeForTarget() with a pointer to a relative
node, but the relative node pointer should always
be 0, when the domain tree to be searched is not
the same as the tree containing the relative node.
This fix sets the relative node pointer to 0 in
that case.
Change-Id: I2fe4a7a4a3b6392199666c7d49b473a56697e7b5
Task-number: QTBUG-39221
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
This update makes qdoc report an error, when it can't
recognize a parameter in square brackets.
Change-Id: I45d31ec875ac533736ee4a565ff3f217353068dd
Task-number: QTBUG-39221
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
But don't use it yet. qdoc will check for name
collisions within a module, once we decide what
collisions to look for and what to do about them.
This change puts a rewritten checkForCollision()
function back in, but doesn't use it yet.
Change-Id: I41f9275c3ca29f228268ccf7cb2d99bbe0ce557c
Task-number: QTBUG-40506
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Now that the qdoc link command has ability to tell qdoc which module
contains a link target or whether to link to a QML or CPP entity,
collision pages should no longer be necessary. In fact, qdoc hasn't
been generating any collisions for some time. This task removes all
the collision node code from qdoc.
Task-number: QTBUG-40506
Change-Id: I34d1980ca1c0fe4bb5ad27dd4b00e61fa7e6e335
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Generation of the obsolete members page, for QML types
that have obsolete members, had not been implemented.
This update implements that missing feature. The link
to the page appears right below the link to the "All
Members" page.
Change-Id: I3e4bb2a68d5c8ef2bbe2e0c431eccf94ecb1fd3c
Task-number: QTBUG-40214
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
This update enables using QML or CPP as the parameter
in square brackets for the \l command. You will use this
when, for example, there exist both a C++ class named
QWidget and a QML type named QWidget and your \l {QWidget}
links to the wrong one.
Suppose you write \l {QWidget} expecting it to link
to the QML type named QWidget, but it links to the C++
class named QWidget. Then write this instead:
\l [QML] {QWidget}
Or if you wrote \l {QWidget} expecting it to link to
the C++ class, but it links to the QML type, write this
instead:
\l [CPP] {QWidget}
A qdoc warning is printed if qdoc can not recognize the
parameter in square brackets.
There will be a further update to complete this task for
implementing the other type of parameter that can be in
the square brackets.
Task-number: QTBUG-39221
Change-Id: I5dd85478f968025ecbe337a8aabcc31d8b12a86d
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
When generating the body of a documentation page, QDoc omits
the brief description for nodes of type DocNode. Since Qt 5.4,
a number of nodes are promoted from subnode types of DocNode
to top-level nodes -specifically,
- QML types
- Modules
- QML modules
- Groups
As a result we now see a duplicate or unintentional brief
description on pages of the above type.
This change instructs qdoc to skip generation of the brief
for also above node types, as it was on 5.3.
Task-number: QTBUG-40741
Change-Id: Id92dce27b13c68be0958225e04ed61813fdc91ee
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
This patch makes Qml Classes get written to tag files the same as C++
tags.
Task-number: QTBUG-40551
Change-Id: I4a1973eeed6f7c2fdb65686c50e6ae4d273c9d7a
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Martin Smith <martin.smith@digia.com>
A recent change in qtdeclarative (60ed6a43) added an attached
property 'Window' to Item type, with property names identical
to the ones already available in Window. This caused QDoc to
report warnings for duplicate documentation for QML properties,
because there was no distiction between a QML property and an
attached property.
This change fixes the issue by:
- Allowing identical names for \qmlproperty and
\qmlattachedproperty
- Using distinct URLs/UUIDs/anchor references for them
- Marking attached properties with '[attached]' qualifier
in 'All Members' page.
This doesn't solve the issue of disambiguating between a
similarly named QML property and attached property when
linking from an external location. However, these can be
solved with the help of the \target command.
Task-number: QTBUG-40674
Change-Id: Icc74de237366e9897334689fe354ab83e4af0356
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
There is no need to allocate new string while a simple reference is
enough.
Change-Id: I137b58fc180fe9a7bff9d0f9e546ca04aa9f4696
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Building QtDBus on Linux host for QNX target had two issues:
* Configure check failed, because dbus-1 library was not linked in,
if target platform doesn't support pkg-config.
* Host tools were not built, because pkg-config was not used to locate
dbus headers on the host.
Task-number: QTBUG-37324
Change-Id: I71d8309599fd40ef2dd8c9e3b44b93a7482019f1
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-QML basic type page layout is now separate from the other
doc page layouts, but the section offset was incorrect.
-the offset is the same as the QML type pages.
Change-Id: I422e97eebe58a87c11607f2c8c5aedb10abbda7e
Task-number: QTBUG-40335
Reviewed-by: Martin Smith <martin.smith@digia.com>
-QDoc in 5.4 processed QML basic types as separate pages
but the ToC wasn't added.
Change-Id: I5a887158bacef923e765accac7ee5ca7c2c7a12b
Task-number: QTBUG-40335
Reviewed-by: Martin Smith <martin.smith@digia.com>
Replace QString::fromUtf8 with QString::fromLatin1 for ascii strings.
Also optimize use of QT_VERSION_STR.
Change-Id: I13c683499c56cb4ac4d2bbd9b6b53c337917e347
Reviewed-by: hjk <hjk121@nokiamail.com>
Check for existence of the paths added by 'indexes'
documentation configuration command, and generate
warnings accordingly. Also, ensure that the strings
added with 'depends' command contain no duplicates.
Change-Id: I66a3d1b25907567bb5bfc72b78a8009d7bd8e067
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Even though qdoc accepts the \value command(s) anywhere in the
documentation and generates tables for them, the produced output was
invalid for documentation topics other than \enum.
This change fixes the issue by not trying to resolve the enumeration
values and removing the 'Value' column for generated tables when the
\value command is used outside c++ enum documentation topic.
This enables, for example, the use of the \value command for
documenting acceptable values for QML enumeration properties,
without having to use custom lists or tables.
Task-number: QTBUG-35019
Change-Id: I597b2f9d7d03d4ab72f276752ddf53e1c405313c
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
-QML basic types are lowercase-named while object types are uppercased.
-reference page for QML types should list both.
-caveat: simple implementation means the uppercase items are listed
first.
Change-Id: I9092ad0cd9e79c4d3f8b794ac5d68879ce6338a5
Reviewed-by: Martin Smith <martin.smith@digia.com>
This prevents conflicts in case of link time optimizations or
precompiled headers are used since we don't include qglobal.h
in the generated code.
Change-Id: I4266c8ae38e6eafefd28b3bde5cb725a24d67ea0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Fix an issue on Windows where
rcc -binary project.qrc >project.rcc
resulted in a corrupted file (\n was automatically replaced with \r\n).
This is caused by Qt using fwrite internally, which will automatically
replace linefeed with carriage-return for streams opened in text mode.
The fix forces stdout to binary mode in this case.
Task-number: QTBUG-39422
Change-Id: Ib5b5e82db922dc389d160b0115dbafe8641c95fd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
-needed if a list of just QML basic types is needed.
-adding QML basic types to map of QML types.
-generating the list of "qmlbasictypes" also now supported.
-part of the fix for QTBUG-32871
Change-Id: Id291982a5684645b2b5e75256be673c1701e60b1
Task-number: QTBUG-32871
Reviewed-by: Martin Smith <martin.smith@digia.com>
Example pages' \brief do not form a complete sentence. The example
pages have proper introductions and descriptions, unlike API pages
which do use the brief information to summarize.
Change-Id: I11f1362cd05e3cf90ae8e1c3a07d2584737fd89c
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
At the moment, it's possible to have 2 properties with the same name,
which doesn't make much sense. Notify the user about that so she can
react on it.
Change-Id: I4865b71730921b79ce9dd8abb0cc760b3f1dbfd8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
-added "QML Type" for QML types
-reworded basic type pages by adding "QML Basic Type" at the end
-streamlined variables in QDoc related to the HTML and page titles.
These two changes were implemented in 5.3 branch, but got lost during
the merge into dev:
1243940f838e5e9d7987
This commit restores the changes while ammending similar fixes
Change-Id: I996b18f020b392aceeb40da7797838aca4a0626f
Reviewed-by: Martin Smith <martin.smith@digia.com>