summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* qdoc: Add \details commandJaishree Vyas2023-04-1911-1/+98
| | | | | | | | | | | | | | | | | The command \details generates a collapsible <details> element with a <summary> to control the hidden/visible state. The idea behind this is to provide more information with less text on our main pages. For output formats other than HTML, the details are rendered as a normal paragraph and the summary string is ignored. Pick-to: 6.5 Change-Id: Id5daddd4854f22b9ceaa9a55b98af94a1ba06039 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2023-04-191-1/+1
| | | | | Change-Id: I72e4e2e439f3352e25df48d6b4afd53b8addfaba Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2023-04-181-3/+3
| | | | | Change-Id: Ie516cfdf0f5125f4d933017eef32a425b67a7d8a Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* CMake: Add note about CMake version requirementsAlexandru Croitor2023-04-181-0/+6
| | | | | | | Pick-to: 6.5 Task-number: QTBUG-112841 Change-Id: I1d7f394c52f609302711da2dcd71df9fe8ad8e88 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Mark qm files as GENERATED in the target scopeAlexandru Croitor2023-04-181-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Projects with cmake_minimum_required(VERSION 3.19) or below, so with no support for the CMP0118 policy, failed to configure when translations were added in a subdirectory scope different from the target scope. qt_add_translations adds qm files to resources, that in turn calls _qt_internal_expose_deferred_files_to_ide which adds the qm files to the target sources. Because qm files are created using add_custom_command, which by default marks the files as GENERATED only in the directory scope of the command (unless CMP0118 is set to NEW), that causes add_executable to think the qm files are not generated, and error out with "Cannot find source file:". Explicitly set the GENERATED flag in the target directory scope to avoid the issue when using CMake 3.18+. The error still happens with CMake 3.17 or lower, but that's not the only error that happens. Just adding resources in a different subdirectory without exposing the source files already fails, and that's not something we can really fix without a newer CMake version. Pick-to: 6.5 Fixes: QTBUG-112841 Change-Id: I79eced94ac641a6f9239f3eb721cef5e35f847fa Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
* QDoc: Remove relative paths to QDoc files from QDoc test projectsLuca Di Sera2023-04-145-15/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc tests are organized into a series of different projects under the "tests/auto/qdoc" directory. Many of those projects uses a subset of QDoc source and header files to perform tests on a subset of QDoc functionalities. The CMake target description for those projects refers to those required files through the use of relative paths, going back up and down the filesystem structure to the "src/qdoc" directory and the files themselves. Due to a recent change in QDoc directory structure, those relative paths were broken, breaking the tests as a consequence, thus requiring modification to test projects' "CMakeLists.txt" files to align to the new structure. While we don't expect QDoc directory structure to change often, we can reduce the friction of doing so in the future by centralizing the definition for the base path of those relative paths. To do so, "tests/auto/qdoc/CMakeLists.txt", the "parent" "CMakeLists.txt" file to QDoc's test projects, was modified to provide two variables, `QDOC_SOURCE_DIRECTORY` and `QDOC_INCLUDE_DIRECTORY`. Both variable refer to a suitable path that can be used as the base for finding source file and header files, respectively. The "CMakeLists.txt" files for the affected test projects were modified to use `QDOC_INCLUDE_DIRECTORIES` in the `INCLUDE_DIRECTORIES` property for their test target, replacing the relative path to the QDoc source directory. Similarly, they were modified to use "QDOC_SOURCE_DIRECTORY" as the base path for the inclusion of C++ source files under the `SOURCES` property of their test target. Some of the test project target included certain used headers files under their `SOURCES` property. As the availability of those headers is implicit under the provided `INCLUDE_DIRECTORIES` property of the target, all paths to headers files were removed from under the `SOURCES` property. Albeit a restructuring such as the one that was performed would still break the tests configuration, having a single place of failure to change is expected to alleviate the issue. Change-Id: I9f0bd42a61a7dd436d70e19e7d38820bf9b54662 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2023-04-131-3/+3
| | | | | Change-Id: Ie31560355df18a300c01832befdcdc4b2a37e920 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Place the QT_END_NAMESPACE in the right placeAmir Masoud Abdol2023-04-136-12/+12
| | | | | | | | | Moving the QT_END_NAMESPACE before the #endif of the include guard. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: I13f8e71aca28b8dacbe00d7006f4e7ef807a9904 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QDoc: Don't write type attributes to index files for macrosPaul Wicking2023-04-134-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | QDoc includes a number of attributes when generating index files. Internally, QDoc uses the `FunctionNode` data structure to represent invokables. This data structure includes the return type for the function or method such a node represents. However, not all invokable entities that are represented internally as a `FunctionNode` carry a return value. This applies in particular to preprocessor macros in C and C++. When generating the index files. QDoc writes an empty `type=""` attribute for `FunctionNode`s that represent a macro. When reading the values back in, the value for the `type` attribute defaults to empty is the attribute is missing. Therefore, writing this out in the first place leads to unnecessary clutter in the index files. This change modifies QDoc's behavior such that these attributes are only written to the index file if they exist. Test data for the `generatedOutput` test is updated to reflect the new content of the index files covered by that test. Task-number: QTBUG-112494 Change-Id: Id6e3a730cbde098068029af1ebf9fa17bd2a4441 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Remove unused \qmltext | \endqmltext command pairPaul Wicking2023-04-1313-104/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc offers the `\qmltext` and `\endqmltext` command pairs, dating back to sometime prior to when QDoc moved to qttools.git in 2015. The commands have since been considered tags not to be handled specifically when generating documentation. The commands have not been documented. Upon inspection of source code across Qt and its modules, no usage of the commands have been found, with the exception of the generated output test for QDoc itself. Even though unused and considered "only tags", the `Generator`, `HTMLGenerator`, and `DocBookGenerator` classes still implement methods to handle them and generate output for them. The removal of the commands therefore necessitates removal of the methods that deal with them. As the command pair is unused, removing the related code is a way to reduce the surface of QDoc's generator classes, making them slightly better suited for testing. This also improves the maintainability of QDoc. This change thus removes the commands and the related `Atom`s, as well as any method designed to deal with those `Atom`s. In addition, the test data and expected output for the generated output test is modified to accommodate the behavior change. Fixes: QTBUG-112764 Change-Id: I2b0a57783ccdccd3e8c1693e6946ecf07777f3b6 Reviewed-by: Luca Di Sera <luca.disera@qt.io>
* QDoc: Remove unreachable code in WebXMLGenerator::addAtomElementsPaul Wicking2023-04-131-8/+0
| | | | | | | | | | | | | | | | | When the WebXML generator was revived in 2017, a case for handling QML atoms in the method `WebXMLGenerator::addAtomElements` was added under an `#ifdef QDOC_QML` guard. This is, according to esteemed historians, a remnant from the old Qt 4.7 implementation of the WebXML generator. However, since the revival, the define wasn't ever set by anything in neither QDoc nor the build system, effectively rendering this code unreachable. This change removes the `#ifdef [...] #endif` block, as removing the unused code won't lead to behavior change of QDoc. Task-number: QTBUG-112764 Change-Id: Ib9b50d4831e86c60de05065d315f421ae2289f64 Reviewed-by: Luca Di Sera <luca.disera@qt.io>
* Doc: Remove unused image from QDoc manualLuca Di Sera2023-04-131-0/+0
| | | | | | | | | | | | "qa-table.png" is currently unused in the containing documentation. Supposedly it showed an old feature of QDoc that is now not available anymore. Hence, it is now deleted. Change-Id: I043f718a0f298d4f57e1bf897ab6d51fd51eee88 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Qt Designer: Replace QString::fromUtf8() by modern literalsFriedemann Kleint2023-04-1319-62/+76
| | | | | | Pick-to: 6.5 Change-Id: If0aff3c1a767e6830f5480f57dfe82a66feb124c Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2023-04-121-3/+3
| | | | | Change-Id: I61ca0226fdc4a696453e18c0ae82aecfb31047f6 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* QDoc: Move QDoc source files under a further "qdoc" directoryLuca Di Sera2023-04-12173-124/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc development under the "qttools" repository is currently performed under the "src/qdoc" directory, which contains all source files and directories relevant to QDoc as direct children. Due to a slow restructuring of how QDoc works, what its dependencies are and certain possible architectural changes, the infrastructure that is expected to be required for the development of QDoc might increase. Some of that infrastructure, which might require some custom effort, is expected to be developed as "independent" "library-like" sub-projects, which QDoc depends on. Albeit developed "independently", such infrastructure would be developed specifically for QDoc and thus should live "adjacent" to it. To allow such a structure a new "qdoc" directory was added under the "src/qdoc" directory. All source files and directory that were previously children of the "src/qdoc" directory were moved under the new "qdoc" directory. This preserves the space for QDoc-related elements and the relative project structure while allowing some space for "adjacent" projects that are intended for QDoc specifically. To support the change, a new "CMakeLists.txt" file was introduced under "src/qdoc", which dispatches to the "CMakeLists.txt" file in the new "src/qdoc/qdoc" directory. QDoc is only built when certain dependencies are found. This is supported through the use of Qt features at the CMake level. The "CMakeLists.txt" file in "src", thus dispatched to the "src/qdoc" directory only when the required features were found. As "independent", "library-like", entities might not have the same requirements as QDoc, the "CMakeLists.txt" file in "src" was modified to always dispatch to the "src/qdoc" directory while the features-check was moved to the new "CMakeLists.txt" files in "src/qdoc", so as to allow non-QDoc but QDoc-specific project to have an independent configuration for building. Certain test projects in "test/auto/qdoc/" depends on QDoc-specific source-files to generate their CMake targets. Those dependencies were generally specified as relative paths. The additional level in the directory structure invalidated the paths and, hence, the relevant "CMakeLists.txt" files for those projects were modified to correctly refer to the new directory structure. Change-Id: I50c7106614428753544eaba5091e1e44d48fd31d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Fix links in \generatelist <groupname> outputTopi Reinio2023-04-118-21/+90
| | | | | | | | | | | | | | | | | | The \generatelist command already supported listing members of a group as a simple unordered list of titles/links, but the links were broken as they always referred to the current document. In DocBook generator, reuse generateAnnotatedList() for this purpose as it already has support for outputting simple itemized/unordered lists. Create a new private enum GeneratedListType to select the list 'subtype' and clean up the API. Add simple test case and documentation of the new argument. Fixes: QTBUG-111575 Pick-to: 6.5 Change-Id: I30e4976cef3b6aa5414aac457844ae5bc0762f3d Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Revert "qdoc: Add support for 'category' argument in \generatelist command"Topi Reinio2023-04-1112-130/+27
| | | | | | | | | | | | | | | This reverts commit df735050ecd01687f17df8f161c706541319ad05. While the commit works, it introduces unnecessary complexity to the processing of the \meta command. The same functionality can be achieved with the help of a documentation macro. The commit did contain a bug-fix for the \generatelist command, which is re-introduced as a separate change. Pick-to: 6.5 Change-Id: Ie8578baa35cfee210fc52428c610307f51103d22 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Use the \examplecategory macro to tag examplesTopi Reinio2023-04-1111-11/+11
| | | | | | | | | | | | | | | | The '\meta category' command was used for tagging examples with a specific category, used in Qt Creators Welcome mode. As we want to also generate lists of examples belonging to a category elsewhere in the documentation, replace the command with a macro that expands to the original \meta command and also adds the example to a group using the \ingroup command. This way, the category names can be used as arguments to the \generatelist or \annotatedlist commands. Pick-to: 6.5 Task-number: QTBUG-112731 Change-Id: I28dfd6d5540dfe540bab942f9e9a93e9c239e206 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Be const correct in QDocIndexFilesPaul Wicking2023-04-111-6/+7
| | | | | Change-Id: Ic6f1e5d1e2d7468b522ce7d5209cc73c7bb80c5c Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2023-04-111-3/+3
| | | | | Change-Id: I824511492d64469084237aa8eecbdd33d9faa334 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Qt Designer: Replace QLatin1String by modern literalsFriedemann Kleint2023-04-1117-74/+60
| | | | | | | Pick-to: 6.5 Change-Id: I1a76bf2224795275a8c62cf37144936bda87cbca Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QDoc: Prevent crash in WebXMLGeneratorPaul Wicking2023-04-078-1/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `WebXMLGenerator::startLink` is responsible for writing the WebXML tags for links. The method takes a pointer to `Atom`, from which a string is obtained for use in parts of the output. In most locations, the callee pre-qualifies the validity of the pointer it passes to the method (e.g. `if (atom) startLink([...]`). However, there's an exception to this in `WebXMLGenerator::generateAnnotatedList`, which calls `Text::firstAtom()` -- that may return `nullptr` -- in the call to `startLink`. This is considered a valid use-case that occurs when there's only title/meta commands and no body in the documentation. In such a case, or if the string obtained from `Atom::string()` is empty, `WebXMLGenerator::startLink` is designed to fall back to the full name of the `Node` being processed. However, in the case when generating a link for an example, `Generator::exampleFileTitle()` is called to obtain a file name for the example, and the `Atom*` is dereferenced to obtain a string is input for the latter method. At that point, the `Atom*` may be an unguarded null pointer. This change updates the generatedOutput test for QDoc by adding a minimal documentation project that serves as means to reproduce a bug that was observed in Qt3D, and fixes the bug in QDoc. The documentation project is designed such that the preconditions outlined in the first paragraph are met; that is to say, the structure of the documentation is such that, for an `Atom` that's constructed while generating the documentation set, `Atom::firstAtom()` is going to return a null pointer. The change to the test serves to validate the bug fix as well as to guard for future regressions. Avoid the crash that would occur when dereferencing this null pointer in `WebXMLGenerator::startLink` by checking the validity of the `Atom*` before dereferencing it to obtain a string used as file title when generating a link for an example. Fixes: QTBUG-112641 Pick-to: 6.5 Change-Id: I3633e5473b60013968becac4cd7bdacdbbdcb9ff Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Qt Designer: Replace QStringLiteral by modern literalsFriedemann Kleint2023-04-07108-1117/+1256
| | | | | | | | As a drive-by, extend the list of C++ keywords checked for naming. Pick-to: 6.5 Change-Id: I37b095d0fa29b9c431b7ad11bb5f962a8eeb5d79 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Qt Designer: Fix editing horizontal alignment propertiesFriedemann Kleint2023-04-061-1/+1
| | | | | | | | | | Fix slot connection, amending f6c9325f639d882992bb3c6386185defd2090498. Pick-to: 6.5 Fixes: QTBUG-112682 Change-Id: Idb325f31ed8f454433f4b8d28183a571877972ff Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2023-04-051-3/+3
| | | | | Change-Id: I93963f5341faa2a7e400ee85b3a7fb21a0fc66dc Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* QDoc: Don't write default attributes to index filesPaul Wicking2023-04-045-89/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc includes a number of attributes when generating index files. Some of these include the default value the attribute has when reading the index files back in, such that the overall effect of writing them to the index file in the first place is none at all for QDoc. For example, for a function that isn't virtual, const, static, final, or overridden, the index file contains the attributes virtual="non" const="false" static="false" final="false" override="false" This change modifies QDoc's behavior such that these attributes are only written to the index file if they are true. This reduces the size of the index files generated for Qt by approcimately 7.16%. Test data for the generatedOutput test is updated to reflect the new content of the index files covered by that test. [ChangeLog][QDoc][Index files] QDoc no longer writes the attributes virtual, const, static, final, or override, to the index files, unless the attribute is part of a function or method's signature. This reduces the file size of index files somewhat. Fixes: QTBUG-112494 Change-Id: I7d25dc429749dd29dbdcd65b7ca78a51ced5dd0f Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Ensure FunctionNode sets sensible virtualness valuesPaul Wicking2023-04-042-6/+5
| | | | | | | | | | | | | | | | | | | | | The index files generated by QDoc contains an attribute for a function's "virtualness"; that is, if the function is a virtual, pure virtual, or not virtual. These attributes are written to the index file if they exist, and read back in, again if they exist. For functions that do not have this attribute in the index file, a virtualness of NonVirtual is implicitly assumed. This change explicitly initializes the responsible member variable, FunctionNode::m_virtualness, to NonVirtual. Furthermore, the setter overload setVirtualness(const QString&), which is called only when reading an index file back in, is modified to handle the special case for pure virtuals first, then setting m_virtualness to Virtual if that's the case, and NonVirtual for any empty, missing, or unknown attributes. Task-number: QTBUG-112494 Change-Id: I8f08b72ae58dca5da07932f010da230c667b056c Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract method from QDocIndexFiles::generateFunctionSectionPaul Wicking2023-04-042-8/+27
| | | | | | | | | QDocIndexFiles::generateFunctionSection has a lot going on. Use extract method as a step to clean up the method and introduce a level of abstraction to parts of its internals. Change-Id: If2efbfb10fcd8585c9c2298b2557ac880052a7ac Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Remove unused method from FunctionNodePaul Wicking2023-04-031-1/+0
| | | | | | | | | | | | | | | | | | | The FunctionNode class contains the public method setVirtual(). The method's intent is to set the private member m_virtualness to FunctionNode::Virtualness::NormalVirtual. This behavior is achieved, and exercised in QDoc, by calling another method of the same class, setVirtualness(Virtualness), which offers the option of passing any value from the FunctionNode::Virtualness enum, making that API more flexible than that of setVirtual() which doesn't take any arguments. As the private member is set in code by a different setter, and because the setVirtual() method is unused, remove the latter as dead code. Task-number: QTBUG-71176 Change-Id: Ieab1fa5b6be92e481fc9df887816fec3f08bbdaf Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Remove unused method and member from FunctionNodePaul Wicking2023-04-031-2/+0
| | | | | | | | | | | | | | The FunctionNode class contains the private member `m_parentPath` and the associated public setter method setParentPath(). There is no associated getter method, nor is the member variable ever read. Furthermore, the setter is never called from anywhere. Remove the member and setter as dead code. This reduces the public API of the FunctionNode class and unclutters its internals just a bit. Task-number: QTBUG-71176 Change-Id: Ic60f89eb5c0c96cf9261a5810a0a8b3e6342e9a1 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* lupdate: Simplify C++ raw string literal detectionJoerg Bornemann2023-04-011-4/+10
| | | | | | | | Use the isStringLiteralPrefix function that was introduced in an earlier commit. Change-Id: I0095ca45e232639317c6fe6fcfd2ee57fe8b1caa Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* lupdate: Handle C++ string literalsJoerg Bornemann2023-04-013-0/+75
| | | | | | | | | | | | | | | | | | | | | The fix for QTBUG-73273 already added code to allow prefixed raw string literals. Now, lupdate supports regular prefixed string literals as well. If the parser encounters a prefixed string literal, ignore the prefix and handle the rest as ordinary string literal. Note that expressions like tr(U"foo") won't compile out of the box. We support them nevertheless. The user might provide their own tr macro that handles such string literals. [ChangeLog][lupdate] lupdate now supports prefixed string literals like u"foo". Pick-to: 6.5 Fixes: QTBUG-59802 Change-Id: Ibe8b4b83ee1197a73678b1e8f37dd6ac7db57714 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* lupdate: Fix assert when applying number heuristicsJoerg Bornemann2023-04-015-5/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's an edge case in the number heuristics of lupdate that triggers a Q_ASSERT due to an out-of-bounds string character access. To run into the assert, the following must be true: - oldSource == oldTranslation - oldSource must contain a number followed immediately by more than one characters - oldSource and newSource must differ only in the character after the number Examples that trigger the assert: | oldSource | newSource | |------------+------------| | "%1MiB" | "%1Kib" | | "1Mi" | "1Ki" | | "1M " | "1Ki " | | "123abcde" | "123xbcde" | Examples that do not trigger the assert: | oldSource | newSource | |------------+------------| | "%1MiB" | "%1Kob" | | "1M" | "1K" | | "123abcde" | "123xxcde" | Add a test case that triggers the Q_ASSERT. Add a check to avoid the out-of-bounds access as a minimal fix. The whole number heuristics algorithm is fishy and produces results that don't match the source code comments. But it's been like that "forever", so let's not change existing behavior people may rely on. Pick-to: 6.5 Fixes: QTBUG-111775 Change-Id: Ibb6bcce9115f7060b6de3f97451e38105623c003 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Mark Linguist examples with Internationalization categoryKai Köhne2023-03-314-2/+12
| | | | | | | Pick-to: 6.5 Fixes: QTBUG-112373 Change-Id: Ia2764196c5dd3f9e001f0585279862efbafa91b1 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Allow to opt out of source path checksKai Köhne2023-03-313-15/+31
| | | | | | | | | | | | | | | | | | Commit 454ab5ffd5b07 ff let qtattributionsscanner bail out if the content of the "Path" and "Files" properties are not valid relative file paths at the time qtattributionsscanner runs. For Qt for MCU tough, the relative path to third-party files does differ between the git checkout, and the source SDK as given to the user. This patch, therefore, allows opting out of the check by adding a --no-path-checks option. Pick-to: 6.5 Change-Id: I809b52e233a6b56194feb1b5b8168f36ba1b9972 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QDoc: Simplify struct FindPredicate::operator()Paul Wicking2023-03-301-8/+1
| | | | | | | | | | | Recent changes removed the enum value SearchType::Module from the FindPredicate struct's member enum. This made the switch in the struct's operator() on `type_` redundant, as the two remaining cases both result in the same behavior. Remove the switch as it isn't needed anymore. Change-Id: Ib2a15de7d4aa9588943a6babb497ec2b970a6290 Reviewed-by: Luca Di Sera <luca.disera@qt.io>
* QDoc: Remove unused enum value and case from ClangCodeParserPaul Wicking2023-03-301-4/+1
| | | | | | | | | A recent change made the enum value ClangCodeParser::buildPCH::FindPredicate::SearchType::Private unused. Remove the enum value and the case that considers it. Change-Id: If3f4379bdad2339e873e347e422df35871629d38 Reviewed-by: Luca Di Sera <luca.disera@qt.io>
* QDoc: Remove unused overload from NodePaul Wicking2023-03-303-25/+0
| | | | | | | | | | | Node::setLogicalModuleInfo(const QString &) isn't called from anywhere. Remove the virtual function from the Node baseclass, and the unused overridden implementation in its derived class CollectionNode. Task-number: QTBUG-71176 Change-Id: I0fa368300f712c33725c87a5c8656bbb34eed398 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2023-03-281-3/+3
| | | | | Change-Id: I5c4d5d49aec06bbe56338cfcb2bd78be8f466893 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Don't treat enum classes as a normal classAndy Shaw2023-03-283-1/+30
| | | | | | | | | | The enum class construct can only be based on an integral type so they can be skipped over safely. Pick-to: 6.5 Task-number: QTBUG-36589 Change-Id: I9a7dd7508f80002e9e46429de726a75607d21a54 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Update Qt logosFriedemann Kleint2023-03-288-1/+2
| | | | | | | | As a drive-by, add a 128x128 logo for Designer, as screen sizes grow. Pick-to: 6.5 Change-Id: I886841c9a6cbc8b6996466d9ca687be6f7eca666 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
* Compute initial size for assistant main window correctlyMikolaj Boc2023-03-281-2/+2
| | | | | | | | | | | | | | Resizing to 4/5 of screen dimensions was previously followed by calling adjustSize(), which immediately overrides the size assigned to the minimum size that accommodates child widgets. Reversing the calls makes us both not start outside the screen as intended and sets the correct size of 4/5 of screen real estate. Fixes: QTBUG-112220 Pick-to: 6.5 Change-Id: I7439ee35bb07f448372fbf2f3943475db7095ac5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QDoc: Remove dead code in ClangCodeParserPaul Wicking2023-03-271-7/+1
| | | | | | | | | | ClangCodeParser::buildPCH included a local variable, privateHeaderDir, which was written to in a loop over the parser's includeDaths private member, but never read. This patch removes the local variable and loop from said method, as it is effectively dead code. Change-Id: Ifae97e0e31074bb4e5d97a427f9392b2526f2f37 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Remove nesting level from `ClangCodeParser::buildPCH`Luca Di Sera2023-03-271-109/+110
| | | | | | | | | | | | | | | | | | | `ClangCodeParser`, the class responsible for parsing Cpp source files during a QDoc run, uses a PCH to speed up compilation when reading the above mentioned source file. A PCH file is built in `ClangCodeParser::buildPCH`. To avoid redoing the same work more than one time if it is unnecessary, `buildPCH` branches on certain conditions and does nothing if those conditions are not met. To make the code easier to read, move the code that performs the PCH building operation to the top level of the method body, instead of branching, and use early returns when the conditions are not satisfied. Change-Id: I95b07a12bc1723ea7bdaee41367483a61dcb5609 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Remove `QmlCodeParser::m_engine`Luca Di Sera2023-03-272-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of producing a documentation set, QDoc parses a series of user-defined input source files in various languages to extract the user-provided documentation and certain source-code level elements. For QML source files, the `QmlCodeParser` class is used, taking care of reading the QML code and build an internal representation for some of its elements. `QmlCodeParser` uses the `QQmlJs` parsing api to do so. As part of using the `QQmlJs` parsing api, `QmlCodeParser` has to build a `QQmlJs::Engine`, `QQmlJs::Lexer` and `QQmlJsEngine::Parser`. Currently, `QmlCodeParser` stores the engine element as an instance member, `m_engine`. Supposedly, this is intended as a way to avoid building the element more than once. Building a `QQmlJs::Engine` more than once does not provide any meaningful overhead, moreover not in the code path where it is used. Furthermore, `m_engine` is used only a few times, in `QmlCodeParser::parseSourceFile`, the entry point for parsing a QML source file. Hence, to reduce the scope of `m_engine` and avoid requiring an out-of-scope initialization for it, `m_engine` is now removed in favor of a local instance in `QmlCodeParser::parseSourceFile`. Change-Id: I73f23ec06c1fa3ba3fe50ff4dffc9ff9229c114d Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Remove `QmlCodeParser::m_parser`Luca Di Sera2023-03-272-30/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of producing a documentation set, QDoc parses a series of user-defined input source files in various languages to extract the user-provided documentation and certain source-code level elements. For QML source files, the `QmlCodeParser` class is used, taking care of reading the QML code and build an internal representation for some of its elements. `QmlCodeParser` uses the `QQmlJs` parsing api to do so. As part of using the `QQmlJs` parsing api, `QmlCodeParser` has to build a `QQmlJs::Engine`, `QQmlJs::Lexer` and `QQmlJsEngine::Parser`. Currently, `QmlCodeParser` stores the engine and parser elements as instance members. For example, for the `QQmlJs::Parser` instance, a member variable `m_parser` is used as storage. Supposedly, this is intended as a way to avoid building the three elements more than once. Building a `QQmlJs::Parser` more than once does not provide any meaningful overhead, moreover not in the code path where it is used. Furthermore, `m_parser` is used only a few times, in `QmlCodeParser::parseSourceFile`, the entry point for parsing a QML source file. Hence, to reduce the scope of `m_parser` and avoid requiring an out-of-scope initialization for it, `m_parser` is now removed in favor of a local instance in `QmlCodeParser::parseSourceFile`. The initialization and deletion of `m_parser` in `QmlCodeParser::initializeParser` and `QmlCodeParser::terminateParser` was removed as a consequence of the removal of the member. As `QmlCodeParser::initializeParser` and `QmlCodeParser::terminateParser` were only taking care of `m_parser`, their implementation is now removed as dead code. As `initializeParser` and `terminateParser`are required to be implemented, by `CodeParser`, `QmlCodeParser` base class, due to their pure virtual nature, an empty implementation was added to "qmlcodeparser.h". Similarly, the constructor for `QmlCodeParser` was only taking care of initializing `m_parser` and is now removed in favor of a defaulted implementation. Change-Id: Id07e6d9cf8083c83482232606fb9a2611dcce420 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Remove `QmlCodeParser::m_lexer`Luca Di Sera2023-03-272-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of producing a documentation set, QDoc parses a series of user-defined input source files in various languages to extract the user-provided documentation and certain source-code level elements. For QML source files, the `QmlCodeParser` class is used, taking care of reading the QML code and build an internal representation for some of its elements. `QmlCodeParser` uses the `QQmlJs` parsing api to do so. As part of using the `QQmlJs` parsing api, `QmlCodeParser` has to build a `QQmlJs::Engine`, `QQmlJs::Lexer` and `QQmlJsEngine::Parser`. Currently, `QmlCodeParser` stores all those elements as instance members. For example, for the `QQmlJs::Lexer` instance, a member variable `m_lexer` is used as storage. Supposedly, this is intended as a way to avoid building the three elements more than once. Building a `QQmlJs::Lexer` more than once does not provide any meaningful overhead, moreover not in the code path where it is used. Furthermore, `m_lexer` is used only once, in `QmlCodeParser::parseSourceFile`, the entry point for parsing a QML source file. Hence, to reduce the scope of `m_lexer` and avoid requiring an out-of-scope initialization for it, `m_lexer` is now removed in favor of an local instance in `QmlCodeParser::parseSourceFile`. The initialization and deletion of `m_lexer` in `QmlCodeParser::initializeParser` and `QmlCodeParser::terminateParser` was removed as a consequence of the removal of the member. Some comments that mentioned the initialization or deletion of the lexer were modified to represent the modified code. Change-Id: I32d38e7883273ab83745eb1f34d183fd5ecca19a Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Flatten maps of source file in "main.cpp"Luca Di Sera2023-03-271-18/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | When QDoc runs it collects a series of input source files based on certain configuration variables. The collected input source files are later used as the base for extracting the user-provided documentation. The files are collected into a map, in `processQDocConfFile`, `sources`. The map uses the same values, file paths that QDoc extracted from the above mentioned configuration variables, for each key-value pair. That is, given a file path X, `sources` stores a key-value pair X-X. Supposedly, the intention of using a map was to avoid duplicates. Indeed, the code that populates the map avoid inserting elements that already are present in the map, thus making use of the fast lookup that the data structure provides. As half of the map is left unused, indeed only the keys are ever accessed, we replace the map with a set, which better provides the required removal of duplicates. Change-Id: If4de2f1a6c8b45ac138139b7d49b1d0d73ed2c1f Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Remove unused variable `sourceFileNames`Luca Di Sera2023-03-271-5/+0
| | | | | | | | | | | | | | | | | | When QDoc runs it collects a series of input source files based on certain configuration variables. The files are collected into two maps, in `processQDocConfFile`, `sources` and `sourceFileNames`. The collected input source files are later used as the base for extracting the user-provided documentation. Nonetheless, `sourceFileNames`, which is populated along with `sources` was never used and is thus removed as dead code. Change-Id: Ie02025e8b1054e4a4f3e9235ee1cc2d7631a2935 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Add support for 'category' argument in \generatelist commandTopi Reinio2023-03-2712-27/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Examples in the Qt codebase are now tagged with specific categories, using the '\meta category {Category}' command. To easily generate lists of members in each category, add support for a 'category' argument in the \generatelist command. Internally, utilize the mechanism already provided by \ingroup command, by adding the node to an internal group prefixed by 'category', when processing the '\meta category' command. \generatelist already supported listing members of a group as a simple unordered list of titles/links. Fix the generated links as they were broken, always referring to the current document. In DocBook generator, reuse generateAnnotatedList() as it already has support for outputting simple itemized/unordered lists. Create a new private enum GeneratedListType to select the list 'subtype' and clean up the API. Add simple test case and documentation of the new argument. Pick-to: 6.5 Fixes: QTBUG-111891 Fixes: QTBUG-111575 Change-Id: Icd5647a09b9ae8cb0ac243fa49d3d99263d397cb Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>