diff --git a/.clang-format b/.clang-format index a681ad303..f9d001612 100644 --- a/.clang-format +++ b/.clang-format @@ -69,4 +69,5 @@ SpaceInEmptyParentheses: false SpacesInAngles: false SpacesInCStyleCastParentheses: true SpacesInParentheses: false +StatementAttributeLikeMacros: [emit,KDDW_CO_AWAIT] ... diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index beadfe281..c38b2ca01 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -22,7 +22,6 @@ jobs: - windows-2019 - macos-13 - macos-12 - - macos-11 preset: - name: ci-release-static-qt5 @@ -78,7 +77,7 @@ jobs: #with: #ref: '2.0' # schedule.cron do not allow branch setting - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: cache: 'pip' cache-dependency-path: '.github/workflows/pip-requirements.txt' @@ -101,7 +100,9 @@ jobs: - name: Configure project run: cmake -S . -B ./build-${{ matrix.preset.name }} --preset ${{ matrix.preset.name }} + # python on windows-2022 has a msvc problem - name: Build Project ${{ matrix.preset.build_preset_arg }} + if: ${{ matrix.os != 'windows-2022' || matrix.preset.name != 'ci-python-qt6' }} run: cmake --build ./build-${{ matrix.preset.name }} ${{ matrix.preset.build_preset_arg }} - name: Run tests on Linux (offscreen) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 4dff9c85e..00cccd407 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -14,5 +14,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v3 + - uses: actions/setup-python@v5 - uses: pre-commit/action@v3.0.1 diff --git a/.krazy b/.krazy index 6e6dec563..ad33959bc 100644 --- a/.krazy +++ b/.krazy @@ -16,6 +16,8 @@ EXCLUDE style SKIP /fwd_headers/ SKIP /flutter/generated/ SKIP Doxyfile.cmake +SKIP .markdownlint.json +SKIP book/searchindex.json SKIP /src/3rdparty/|/examples/qtquick/CMakeFiles/ #skip CMake files diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 000000000..e2f811ca3 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,16 @@ +{ + "default": true, + "MD007": { + "indent": 2, + "start_indented": false + }, + "MD013": { + "line_length": 100, + "tables": false, + "code_blocks": false + }, + "MD029": { + "style": "ordered" + }, + "MD033": false +} diff --git a/.mdlrc b/.mdlrc deleted file mode 100644 index 3acbfecaa..000000000 --- a/.mdlrc +++ /dev/null @@ -1 +0,0 @@ -style ".mdlrc.rb" diff --git a/.mdlrc.rb b/.mdlrc.rb deleted file mode 100644 index b9f524407..000000000 --- a/.mdlrc.rb +++ /dev/null @@ -1,5 +0,0 @@ -all -rule 'MD007', :indent => 2, :start_indented => false -rule 'MD013', :line_length => 100, :tables => false -rule 'MD029', :style => :ordered -exclude_rule 'MD033' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6297cfdd5..4da163552 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,13 +1,13 @@ # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks ci: - skip: [pylint,clang-format] + skip: [pylint] autoupdate_schedule: monthly exclude: ^(cmake/ECM|cmake/KDAB/|src/3rdparty/|code.dev.code-workspace) repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v5.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -21,22 +21,22 @@ repos: - id: destroyed-symlinks - id: check-executables-have-shebangs - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v17.0.6 + rev: v19.1.1 hooks: - id: clang-format exclude: (.json) - repo: https://github.com/PyCQA/pylint - rev: v3.1.0 + rev: v3.3.1 hooks: - id: pylint exclude: ^(.cmake-format.py|conan/conanfile.py) additional_dependencies: ["PySide2", "PySide6"] - repo: https://github.com/hhatto/autopep8 - rev: v2.1.0 + rev: v2.3.1 hooks: - id: autopep8 - repo: https://github.com/codespell-project/codespell - rev: v2.2.6 + rev: v2.3.0 hooks: - id: codespell - repo: https://github.com/cheshirekow/cmake-format-precommit @@ -46,21 +46,19 @@ repos: exclude: (.py.cmake|Doxyfile.cmake|examples/flutter/) - id: cmake-format exclude: (.py.cmake|Doxyfile.cmake|examples/flutter/) -- repo: https://github.com/markdownlint/markdownlint +- repo: https://github.com/DavidAnson/markdownlint-cli2 rev: v0.12.0 hooks: - - id: markdownlint - entry: mdl - language: ruby + - id: markdownlint-cli2 files: \.(md|mdown|markdown)$ exclude: (docs/book/) - repo: https://github.com/fsfe/reuse-tool - rev: v3.0.1 + rev: v4.0.3 hooks: - id: reuse args: [--suppress-deprecation] - repo: https://github.com/scop/pre-commit-shfmt - rev: v3.8.0-1 + rev: v3.9.0-1 hooks: - id: shfmt - repo: https://github.com/shellcheck-py/shellcheck-py diff --git a/.reuse/dep5 b/.reuse/dep5 index 5b156fab3..c7746a710 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -14,7 +14,7 @@ Copyright: Klarälvdalens Datakonsult AB, a KDAB Group company License: GPL-2.0-only OR GPL-3.0-only #misc config files -Files: .pre-commit-config.yaml .codespellrc .krazy .cmake-format .clang-format .clangd .clazy .clang-tidy .gitignore .mdlrc .mdlrc.rb .pep8 .pylintrc .editorconfig .shellcheckrc mkdocs.yml .github/workflows/mdbook.yml code.dev-*.code-workspace code.dev*.code-workspace vscode.code-workspace docs/api/Doxyfile.cmake distro/* *.yaml .github/workflows/pip-requirements.txt valgrind.sup +Files: .pre-commit-config.yaml .codespellrc .krazy .cmake-format .clang-format .clangd .clazy .clang-tidy .gitignore .markdownlint.json .pep8 .pylintrc .editorconfig .shellcheckrc mkdocs.yml .github/workflows/mdbook.yml code.dev-*.code-workspace code.dev*.code-workspace vscode.code-workspace docs/api/Doxyfile.cmake distro/* *.yaml .github/workflows/pip-requirements.txt valgrind.sup Copyright: Klarälvdalens Datakonsult AB, a KDAB Group company License: BSD-3-Clause diff --git a/3RDPARTY.md b/3RDPARTY.md new file mode 100644 index 000000000..af547c8b7 --- /dev/null +++ b/3RDPARTY.md @@ -0,0 +1,58 @@ +# 3rdparty + +Here we list which 3rdparty software used and possibly shipped by KDDW and their respective licenses. + +## Runtime dependencies + +### nlohmann JSON + +JSON c++ library.
+[code](src/3rdparty/nlohmann/nlohmann/json.hpp)
+[MIT licensed](LICENSES/MIT.txt) + +### KDBindings + +Non-Qt signal/slot implementation. + +[code](src/3rdparty/kdbindings/)
+[MIT licensed](LICENSES/MIT.txt) + +### KDStlContainerAdaptor + +Only used for a Flutter build. +Replacement for QVector. + +[code](src/3rdparty/kdtoolbox/KDStlContainerAdaptor.h)
+[MIT licensed](LICENSES/MIT.txt) + +## Build-time / CI tests 3rdparty + +These dependencies are only used during build or other CI purposes like running tests. + +### ECM + +CMake build helpers. + +[code](cmake/ECM/modules/)
+[BSD licensed](LICENSES/BSD-3-Clause.txt) + +### doxygen-awesome.css + +Template to generate documentation. + +[code](docs/api/doxygen-awesome.css)
+[MIT licensed](LICENSES/MIT.txt) + +### QCoro + +co-routine Qt implementation, only used by Flutter unit-tests. + +[code](src/3rdparty/qcoro/)
+[MIT licensed](LICENSES/MIT.txt) + +### Flutter embedder and generated files + +Only used for a flutter build and only during tests. + +[code](tests/flutter_tests_embedder) and [code](examples/flutter)
+[BSD licensed](LICENSES/BSD-3-Clause.txt) diff --git a/CMakeLists.txt b/CMakeLists.txt index db3299cb1..eaca49a66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -304,6 +304,7 @@ if(NOT KDDockWidgets_NO_SPDLOG) endif() endif() +# fmt 11 not supported yet, will get to it when it hits archlinux if(spdlog_FOUND AND fmt_FOUND) set(KDDockWidgets_HAS_SPDLOG TRUE) else() diff --git a/Changelog b/Changelog index 21a705f1e..d402fb74f 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,5 @@ * v2.1.1 (unreleased) - - + - Fix windows having transparency when drop indicators inhibited * v2.1.0 (08 May 2024) - Added standalone layouting example using Slint diff --git a/README.md b/README.md index 73f672d10..60d0628aa 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ![KDDockWidgetsLogo](https://github.com/KDAB/KDDockWidgets/blob/2.0/images/kddockwidgets.png?raw=true) -Our brand new [manual](https://docs.kdab.com/kddockwidgets-manual/2.0.0/) +Our brand new [manual](https://kdab.github.io/KDDockWidgets) is now the docs entry point for everything related to `KDDockWidgets`. This README only provides minimal information. diff --git a/deploy/release-kddockwidgets.sh b/deploy/release-kddockwidgets.sh new file mode 100755 index 000000000..97a0e7765 --- /dev/null +++ b/deploy/release-kddockwidgets.sh @@ -0,0 +1,241 @@ +#!/bin/bash + +# This file is part of KDDockWidgets. +# +# SPDX-FileCopyrightText: 2024 Klarälvdalens Datakonsult AB, a KDAB Group company +# +# SPDX-License-Identifier: MIT +# + +#Exit if any undefined variable is used. +set -u +#Exit this script if it any subprocess exits non-zero. +set -e +#If any process in a pipeline fails, the return value is a failure. +set -o pipefail + +PROJECT=kddockwidgets +FORMAL_PROJECT=KDDockWidgets #also used for the CMake options +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +TOP=$(dirname "$SCRIPT_DIR") + +#function HELP +# print a help message and exit +HELP() { + echo + echo "Usage: $(basename "$0") [-f] X.Y.Z" + echo + echo "Create the tars/zips and sign for project release X.Y.Z" + echo " Options:" + echo " -f Force everything to run, even if the tag for X.Y.Z has already been pushed." + echo + exit 0 +} + +#git clone if needed, then update +GIT_UPDATE() { + mkdir -p "$1" + pushd "$1" + git init + set +e + git remote add origin "$3" + set -e + git fetch + git checkout master + git submodule update --init --recursive + popd +} + +#compare 2 version strings +verlte() { + printf '%s\n' "$1" "$2" | sort -C -V +} + +#function SYNCECM: $1 is "KDAB" or "ECM"; $2 is the fullpath to the official version +SYNCECM() { + set +e + echo -n "Comparing $1 cmake modules to upstream: " + savepwd=$(pwd) + if (test ! -d "$TOP/cmake/$1/modules"); then + echo "FAIL" + echo " This project does not have the $1 CMake modules collected under cmake/$1/modules. Please deal with this first" + exit 1 + fi + cd "$TOP/cmake/$1/modules" + whiteList="(ECMEnableSanitizers.cmake)" + for m in *.cmake; do + if [ -n "$whiteList" ]; then + if [[ $m =~ $whiteList ]]; then + echo "SKIPPING $m" + continue + fi + fi + if (test -f "$2/modules/$m"); then + module="modules" + diff "$m" "$2/modules/$m" 2>&1 + savestat=$? + else + if (test -f "$2/find-modules/$m"); then + module="find-modules" + diff "$m" "$2/find-modules/$m" 2>&1 + savestat=$? + else + echo "What is $m doing here?" + exit 1 + fi + fi + if (test $savestat -ne 0); then + echo "FAIL. Differences encountered in upstream $m" + echo " Upstream: $2/$module/$m" + echo " $PROJECT: cmake/$1/modules/$m" + echo "Please sync the $PROJECT version before continuing (review changes first!)" + exit 1 + fi + done + echo "OK" + cd "$savepwd" + set -e +} + +options=$(getopt -o "hf" --long "help,force" -- "$@") +eval set -- "$options" +force=0 +while true; do + case "$1" in + -h | --help) + HELP + ;; + -f | --force) + force=1 + shift + ;; + --) + shift + break + ;; + *) + echo "Internal error!" + exit 1 + ;; + esac +done + +if (test $# -ne 1); then + HELP +fi + +#compute X(major), Y(minor), Z(patchlevel) +if [[ ! $1 =~ ^[0-9]*\.[0-9]*\.[0-9]*$ ]]; then + echo "\"$1\" is not a valid version string of the form X.Y.Z" + exit 1 +fi +X=$(echo "$1" | cut -d. -f1) +Y=$(echo "$1" | cut -d. -f2) +Z=$(echo "$1" | cut -d. -f3) + +#set the branch and tag +branch=$X.$Y +tag=v$branch.$Z +release=$X.$Y.$Z + +cd "$TOP" || exit 1 +tbranch=$(sed -e 's,.*/,,' "$TOP/.git/HEAD") +if (test "$tbranch" != "$branch"); then + echo "please git checkout $branch first" + exit +fi + +#Sanity Checking + +# Update doxyfile +if ! command -v doxygen &>/dev/null; then + echo "doxygen is not installed or not in your PATH. please fix." + exit 1 +fi + +#CI uses 1.12.0 at this time +minDoxyVersion="1.12.0" +export PATH=/usr/local/opt/doxygen-$minDoxyVersion/bin:$PATH +doxyVersion=$(doxygen -version | awk '{print $1}') +if ! verlte "$minDoxyVersion" "$doxyVersion"; then + echo "please install doxygen version $minDoxyVersion or higher" + exit 1 +fi + +echo -n "Ensuring Doxyfile.cmake is up-to-date: " +doxygen -u docs/api/Doxyfile.cmake >/dev/null 2>&1 +set +e +diff docs/api/Doxyfile.cmake docs/api/Doxyfile.cmake.bak >/dev/null 2>&1 +if (test $? -ne 0); then + echo "Doxyfile.cmake has been updated by 'doxygen -u'. Please deal with this first" + exit 1 +else + echo "OK" + rm -f docs/api/Doxyfile.cmake.bak +fi +set -e + +### KDAB cmake modules are synced +kdabECM="$HOME/projects/kdecm" +GIT_UPDATE "$kdabECM" "master" "ssh://codereview.kdab.com:29418/kdab/extra-cmake-modules" +SYNCECM "KDAB" "$kdabECM" +### KDE cmake modules are synced +kdeECM="$HOME/projects/extra-cmake-modules" +GIT_UPDATE "$kdeECM" "master" "git@invent.kde.org:frameworks/extra-cmake-modules" +SYNCECM "ECM" "$kdeECM" + +### pre-commit checking +echo "Pre-commit checking: " +pre-commit run --all-files +if (test $? -ne 0); then + echo "There are pre-commit issues. Please deal with this first" + exit 1 +else + echo "OK" +fi + +if (test "$(git tag -l | grep -c "$tag$")" -ne 1); then + echo "please create the git tag $tag first:" + echo "git tag -m \"$FORMAL_PROJECT $release\" $tag" + exit +fi + +if (test $force -eq 0 -a "$(git ls-remote --tags origin | grep -c "refs/tags/$tag$")" -gt 0); then + echo "The tag for $tag has already been pushed." + echo "Change the release number you provided on the command line." + echo 'Or, if you simply want to re-create the tar and zips use the "-f" option.' + exit +fi + +# create the API documentation +rm -rf build-docs "$PROJECT-$release-doc.zip" +mkdir build-docs +cd build-docs || exit 1 +cmake -G Ninja --warn-uninitialized -Werror=dev -D"$FORMAL_PROJECT"_DOCS=True .. +cmake --build . --target=docs +cd docs/api/html || exit 1 +7z a "$TOP/$PROJECT-$release-doc.zip" . +cd "$TOP" || exit 1 +rm -rf build-docs + +git archive --format=tar --prefix="$PROJECT-$release/" "$tag" | gzip >"$PROJECT-$release.tar.gz" +git archive --format=zip --prefix="$PROJECT-$release/" "$tag" >"$PROJECT-$release.zip" + +# sign the tarballs +gpg --yes --local-user "KDAB Products" --armor --detach-sign "$PROJECT-$release.tar.gz" +gpg --yes --local-user "KDAB Products" --armor --detach-sign "$PROJECT-$release.zip" + +# final cleaning +#anything to clean? + +# sanity +files="\ +$PROJECT-$release.tar.gz \ +$PROJECT-$release.tar.gz.asc \ +$PROJECT-$release.zip \ +$PROJECT-$release.zip.asc \ +$PROJECT-$release-doc.zip \ +" +for f in $files; do + ls -l "$f" +done diff --git a/docs/api/Doxyfile.cmake b/docs/api/Doxyfile.cmake index a57697acd..55a219448 100644 --- a/docs/api/Doxyfile.cmake +++ b/docs/api/Doxyfile.cmake @@ -1,7 +1,7 @@ -# Doxyfile 1.9.8 +# Doxyfile 1.12.0 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. +# Doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. @@ -15,10 +15,10 @@ # # Note: # -# Use doxygen to compare the used configuration file with the template +# Use Doxygen to compare the used configuration file with the template # configuration file: # doxygen -x [configFile] -# Use doxygen to compare the used configuration file with the template +# Use Doxygen to compare the used configuration file with the template # configuration file without replacing the environment variables or CMake type # replacement variables: # doxygen -x_noenv [configFile] @@ -63,17 +63,23 @@ PROJECT_BRIEF = PROJECT_LOGO = @CMAKE_SOURCE_DIR@/images/KDDockWidgets-64x64.png +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If +# entered, it will be relative to the location where Doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIR@ -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format # and will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where +# option can be useful when feeding Doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to # control the number of sub-directories. @@ -92,7 +98,7 @@ CREATE_SUBDIRS = NO CREATE_SUBDIRS_LEVEL = 8 -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. @@ -101,7 +107,7 @@ CREATE_SUBDIRS_LEVEL = 8 ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this +# documentation generated by Doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, # Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English @@ -115,14 +121,14 @@ ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the @@ -153,13 +159,13 @@ ABBREVIATE_BRIEF = "The \$name class" \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief +# Doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. @@ -167,7 +173,7 @@ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. @@ -177,11 +183,11 @@ FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to +# If left blank the directory from which Doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. +# will be relative from the directory where Doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = @@ -195,14 +201,14 @@ STRIP_FROM_PATH = STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief @@ -211,17 +217,17 @@ SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. +# interpreted by Doxygen. # The default value is: NO. JAVADOC_BANNER = NO -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) @@ -229,7 +235,7 @@ JAVADOC_BANNER = NO QT_AUTOBRIEF = YES -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this @@ -241,10 +247,10 @@ QT_AUTOBRIEF = YES MULTILINE_CPP_IS_BRIEF = NO -# By default Python docstrings are displayed as preformatted text and doxygen's +# By default Python docstrings are displayed as preformatted text and Doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES @@ -255,7 +261,7 @@ PYTHON_DOCSTRING = YES INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. @@ -325,30 +331,30 @@ OPTIMIZE_OUTPUT_SLICE = NO # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, # Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, # VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files +# default for Fortran type files). For instance to make Doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add +# the files are not read by Doxygen. When specifying no_extension you should add # * to the FILE_PATTERNS. # # Note see also the list of default file extension mappings. EXTENSION_MAPPING = -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. @@ -358,7 +364,7 @@ MARKDOWN_SUPPORT = YES # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. +# Minimum value: 0, maximum value: 99, default value: 6. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 5 @@ -374,7 +380,7 @@ TOC_INCLUDE_HEADINGS = 5 MARKDOWN_ID_STYLE = DOXYGEN -# When enabled doxygen tries to link words that correspond to documented +# When enabled Doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. @@ -384,10 +390,10 @@ AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and +# tag to YES in order to let Doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO @@ -399,16 +405,16 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. +# Doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. @@ -417,7 +423,7 @@ SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first +# tag is set to YES then Doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. @@ -475,18 +481,18 @@ TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest +# symbols. At the end of a run Doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 -# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple @@ -510,7 +516,7 @@ TIMESTAMP = NO # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. @@ -576,7 +582,7 @@ EXTRACT_ANON_NSPACES = NO RESOLVE_UNNAMED_PARAMS = YES -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. @@ -584,7 +590,7 @@ RESOLVE_UNNAMED_PARAMS = YES HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # will also hide undocumented C++ concepts if enabled. This option has no effect @@ -593,14 +599,14 @@ HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = YES -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. @@ -614,7 +620,7 @@ HIDE_IN_BODY_DOCS = YES INTERNAL_DOCS = NO -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be # able to match the capabilities of the underlying filesystem. In case the # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly @@ -623,7 +629,7 @@ INTERNAL_DOCS = NO # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option +# Windows (including Cygwin) and macOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. # Possible values are: SYSTEM, NO and YES. @@ -631,14 +637,14 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. @@ -651,7 +657,7 @@ HIDE_COMPOUND_REFERENCE= NO SHOW_HEADERFILE = YES -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -664,7 +670,7 @@ SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. @@ -676,14 +682,14 @@ FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. @@ -691,7 +697,7 @@ SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = YES -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. @@ -703,7 +709,7 @@ SORT_BRIEF_DOCS = YES SORT_MEMBERS_CTORS_1ST = YES -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. @@ -720,11 +726,11 @@ SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. @@ -794,25 +800,25 @@ SHOW_FILES = YES SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from +# Doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file +# by Doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated +# by Doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can +# that represents Doxygen's defaults, run Doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. See also section "Changing the # layout of pages" for information. # -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = @@ -827,19 +833,35 @@ LAYOUT_FILE = CITE_BIB_FILES = +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the +# standard output by Doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. @@ -847,14 +869,14 @@ QUIET = NO WARNINGS = YES -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for # potential errors in the documentation, such as documenting some parameters in # a documented function twice, or documenting parameters that don't exist or # using markup commands wrongly. @@ -862,8 +884,8 @@ WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES -# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete -# function parameter documentation. If set to NO, doxygen will accept that some +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some # parameters have no documentation without warning. # The default value is: YES. @@ -871,7 +893,7 @@ WARN_IF_INCOMPLETE_DOC = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong parameter +# value. If set to NO, Doxygen will only warn about wrong parameter # documentation, but not about the absence of documentation. If EXTRACT_ALL is # set to YES then this flag will automatically be disabled. See also # WARN_IF_INCOMPLETE_DOC @@ -879,20 +901,20 @@ WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = YES -# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about -# undocumented enumeration values. If set to NO, doxygen will accept +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept # undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: NO. WARN_IF_UNDOC_ENUM_VAL = NO -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves -# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not # write the warning messages in between other messages but write them at the end # of a run, in case a WARN_LOGFILE is defined the warning messages will be # besides being in the defined file also be shown at the end of a run, unless @@ -903,7 +925,7 @@ WARN_IF_UNDOC_ENUM_VAL = NO WARN_AS_ERROR = NO -# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will @@ -916,7 +938,7 @@ WARN_FORMAT = "$file:$line: $text" # In the $text part of the WARN_FORMAT command it is possible that a reference # to a more specific place is given. To make it easier to jump to this place -# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. # Example: # WARN_LINE_FORMAT = "'vi $file +$line'" # See also: WARN_FORMAT @@ -947,7 +969,7 @@ INPUT = "@CMAKE_SOURCE_DIR@/README.md" \ "@CMAKE_SOURCE_DIR@/src" # This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. @@ -957,12 +979,12 @@ INPUT = "@CMAKE_SOURCE_DIR@/README.md" \ INPUT_ENCODING = UTF-8 # This tag can be used to specify the character encoding of the source files -# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# that Doxygen parses The INPUT_FILE_ENCODING tag can be used to specify # character encoding on a per file pattern basis. Doxygen will compare the file # name with each pattern and apply the encoding instead of the default # INPUT_ENCODING) if there is a match. The character encodings are a list of the -# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding -# "INPUT_ENCODING" for further information on supported encodings. +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. INPUT_FILE_ENCODING = @@ -972,16 +994,16 @@ INPUT_FILE_ENCODING = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. +# read by Doxygen. # # Note the list of default checked file patterns might differ from the list of # default file extension mappings. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, -# *.cpp, *.cppm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, -# *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, *.php, -# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be -# provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, +# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to +# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, # *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.cpp \ @@ -1001,7 +1023,7 @@ RECURSIVE = YES # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # -# Note that relative paths are relative to the directory from which doxygen is +# Note that relative paths are relative to the directory from which Doxygen is # run. EXCLUDE = @@ -1070,7 +1092,7 @@ IMAGE_PATH = "@CMAKE_SOURCE_DIR@/images" \ "@CMAKE_CURRENT_SOURCE_DIR@" \ "@CMAKE_SOURCE_DIR@/screencap.gif" -# The INPUT_FILTER tag can be used to specify a program that doxygen should +# The INPUT_FILTER tag can be used to specify a program that Doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # @@ -1085,14 +1107,14 @@ IMAGE_PATH = "@CMAKE_SOURCE_DIR@/images" \ # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # -# Note that doxygen will use the data processed and written to standard output +# Note that Doxygen will use the data processed and written to standard output # for further processing, therefore nothing else, like debug statements or used # commands (so in case of a Windows batch file always use @echo OFF), should be # written to standard output. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. INPUT_FILTER = @@ -1105,7 +1127,7 @@ INPUT_FILTER = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. FILTER_PATTERNS = @@ -1127,7 +1149,7 @@ FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. +# and want to reuse the introduction page also for the Doxygen output. USE_MDFILE_AS_MAINPAGE = @CMAKE_SOURCE_DIR@/README.md @@ -1154,12 +1176,13 @@ FORTRAN_COMMENT_AFTER = 72 SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. +# multi-line macros, enums or list initialized variables directly into the +# documentation. # The default value is: NO. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. @@ -1197,7 +1220,7 @@ REFERENCES_LINK_SOURCE = YES SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. @@ -1211,14 +1234,14 @@ SOURCE_TOOLTIPS = YES # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # -# The result: instead of the source browser generated by doxygen, the links to +# The result: instead of the source browser generated by Doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. @@ -1250,7 +1273,7 @@ IGNORE_PREFIX = # Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES @@ -1271,40 +1294,40 @@ HTML_OUTPUT = html HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a +# each generated HTML page. If the tag is left blank Doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. +# that Doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally +# for information on how to generate the default header that Doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description +# default header when upgrading to a newer version of Doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard +# generated HTML page. If the tag is left blank Doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. +# that Doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = @CMAKE_CURRENT_SOURCE_DIR@/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. +# the HTML output. If left blank Doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. +# sheet that Doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. @@ -1314,7 +1337,7 @@ HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. +# created by Doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. @@ -1343,11 +1366,11 @@ HTML_EXTRA_FILES = "@CMAKE_CURRENT_SOURCE_DIR@/kdab-logo-16x16.png" \ # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output # should be rendered with a dark or light theme. -# Possible values are: LIGHT always generate light mode output, DARK always -# generate dark mode output, AUTO_LIGHT automatically set the mode according to -# the user preference, use light mode if no preference is set (the default), -# AUTO_DARK automatically set the mode according to the user preference, use -# dark mode if no preference is set and TOGGLE allow to user to switch between +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between # light and dark mode via a button. # The default value is: AUTO_LIGHT. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1410,6 +1433,26 @@ HTML_DYNAMIC_SECTIONS = NO HTML_CODE_FOLDING = YES +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to @@ -1427,7 +1470,7 @@ HTML_INDEX_NUM_ENTRIES = 100 # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: # https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML +# create a documentation set, Doxygen will generate a Makefile in the HTML # output directory. Running make will produce the docset in that directory and # running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at @@ -1475,7 +1518,7 @@ DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # on Windows. In the beginning of 2021 Microsoft took the original page, with @@ -1486,7 +1529,7 @@ DOCSET_PUBLISHER_NAME = Publisher # ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for @@ -1506,7 +1549,7 @@ CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. +# Doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1608,7 +1651,7 @@ QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1653,7 +1696,7 @@ DISABLE_INDEX = NO # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine tune the look of the index (see "Fine-tuning the output"). As an -# example, the default style sheet generated by doxygen has an example that +# example, the default style sheet generated by Doxygen has an example that # shows how to put an image at the root of the tree instead of the PROJECT_NAME. # Since the tree basically has the same information as the tab index, you could # consider setting DISABLE_INDEX to YES when enabling this option. @@ -1675,7 +1718,7 @@ GENERATE_TREEVIEW = NO FULL_SIDEBAR = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. +# Doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. @@ -1684,6 +1727,12 @@ FULL_SIDEBAR = NO ENUM_VALUES_PER_LINE = 4 +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. @@ -1691,21 +1740,21 @@ ENUM_VALUES_PER_LINE = 4 TREEVIEW_WIDTH = 250 -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO -# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email # addresses. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. OBFUSCATE_EMAILS = YES -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. @@ -1718,7 +1767,7 @@ HTML_FORMULA_FORMAT = png # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML +# Doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1762,7 +1811,7 @@ MATHJAX_VERSION = MathJax_2 # Possible values are: HTML-CSS (which is slower, but has the best # compatibility. This is the name for Mathjax version 2, for MathJax version 3 # this will be translated into chtml), NativeMML (i.e. MathML. Only supported -# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This # is the name for Mathjax version 3, for MathJax version 2 this will be # translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. @@ -1796,7 +1845,7 @@ MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 MATHJAX_EXTENSIONS = -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: # http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an @@ -1805,12 +1854,12 @@ MATHJAX_EXTENSIONS = MATHJAX_CODEFILE = -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then +# For large projects the JavaScript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically @@ -1829,7 +1878,7 @@ SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using JavaScript. There # are two flavors of web server based searching depending on the EXTERNAL_SEARCH -# setting. When disabled, doxygen will generate a PHP script for searching and +# setting. When disabled, Doxygen will generate a PHP script for searching and # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing # and searching needs to be provided by external tools. See the section # "External Indexing and Searching" for details. @@ -1838,7 +1887,7 @@ SEARCHENGINE = YES SERVER_BASED_SEARCH = NO -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain the @@ -1883,7 +1932,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of @@ -1897,7 +1946,7 @@ EXTRA_SEARCH_MAPPINGS = # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output. # The default value is: YES. GENERATE_LATEX = NO @@ -1942,7 +1991,7 @@ MAKEINDEX_CMD_NAME = makeindex LATEX_MAKEINDEX_CMD = makeindex -# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -1973,15 +2022,15 @@ EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for # the generated LaTeX document. The header should contain everything until the -# first chapter. If it is left blank doxygen will generate a standard header. It +# first chapter. If it is left blank Doxygen will generate a standard header. It # is highly recommended to start with a default header using # doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty # and then modify the file new_header.tex. See also section "Doxygen usage" for -# information on how to generate the default header that doxygen normally uses. +# information on how to generate the default header that Doxygen normally uses. # # Note: Only use a user-defined header if you know what you are doing! # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. The following +# default header when upgrading to a newer version of Doxygen. The following # commands have a special meaning inside the header (and footer): For a # description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1990,10 +2039,10 @@ LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for # the generated LaTeX document. The footer should contain everything after the -# last chapter. If it is left blank doxygen will generate a standard footer. See +# last chapter. If it is left blank Doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what # special commands can be used inside the footer. See also section "Doxygen -# usage" for information on how to generate the default footer that doxygen +# usage" for information on how to generate the default footer that Doxygen # normally uses. Note: Only use a user-defined footer if you know what you are # doing! # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2002,7 +2051,7 @@ LATEX_FOOTER = # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined # LaTeX style sheets that are included after the standard style sheets created -# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# by Doxygen. Using this option one can overrule certain style aspects. Doxygen # will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the @@ -2028,7 +2077,7 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES -# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as +# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as # specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX # files. Set this option to YES, to get a higher quality PDF documentation. # @@ -2053,7 +2102,7 @@ USE_PDFLATEX = NO LATEX_BATCHMODE = NO -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the # index chapters (such as File Index, Compound Index, etc.) in the output. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2080,7 +2129,7 @@ LATEX_EMOJI_DIRECTORY = # Configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The # RTF output is optimized for Word 97 and may not look too pretty with other RTF # readers/editors. # The default value is: NO. @@ -2095,7 +2144,7 @@ GENERATE_RTF = NO RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -2115,28 +2164,36 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's +# Load stylesheet definitions from file. Syntax is similar to Doxygen's # configuration file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. # # See also section "Doxygen usage" for information on how to generate the -# default style sheet that doxygen normally uses. +# default style sheet that Doxygen normally uses. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's configuration file. A template extensions file can be +# similar to Doxygen's configuration file. A template extensions file can be # generated using doxygen -e rtf extensionFile. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_EXTENSIONS_FILE = +# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the RTF_OUTPUT output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTRA_FILES = + #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for # classes and files. # The default value is: NO. @@ -2167,7 +2224,7 @@ MAN_EXTENSION = .3 MAN_SUBDIR = -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it # will generate one additional man file for each entity documented in the real # man page(s). These additional files only source the real man page, but without # them the man command would be unable to find the correct page. @@ -2180,7 +2237,7 @@ MAN_LINKS = NO # Configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that # captures the structure of the code including all documentation. # The default value is: NO. @@ -2194,7 +2251,7 @@ GENERATE_XML = NO XML_OUTPUT = xml -# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program # listings (including syntax highlighting and cross-referencing information) to # the XML output. Note that enabling this will significantly increase the size # of the XML output. @@ -2203,7 +2260,7 @@ XML_OUTPUT = xml XML_PROGRAMLISTING = YES -# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include # namespace members in file scope as well, matching the HTML output. # The default value is: NO. # This tag requires that the tag GENERATE_XML is set to YES. @@ -2214,7 +2271,7 @@ XML_NS_MEMB_FILE_SCOPE = NO # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- -# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files # that can be used to generate PDF. # The default value is: NO. @@ -2232,7 +2289,7 @@ DOCBOOK_OUTPUT = docbook # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an # AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. @@ -2244,8 +2301,8 @@ GENERATE_AUTOGEN_DEF = NO # Configuration options related to Sqlite3 output #--------------------------------------------------------------------------- -# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3 -# database with symbols found by doxygen stored in tables. +# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3 +# database with symbols found by Doxygen stored in tables. # The default value is: NO. GENERATE_SQLITE3 = NO @@ -2258,9 +2315,9 @@ GENERATE_SQLITE3 = NO SQLITE3_OUTPUT = sqlite3 -# The SQLITE3_OVERWRITE_DB tag is set to YES, the existing doxygen_sqlite3.db -# database file will be recreated with each doxygen run. If set to NO, doxygen -# will warn if an a database file is already found and not modify it. +# The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db +# database file will be recreated with each Doxygen run. If set to NO, Doxygen +# will warn if a database file is already found and not modify it. # The default value is: YES. # This tag requires that the tag GENERATE_SQLITE3 is set to YES. @@ -2270,7 +2327,7 @@ SQLITE3_RECREATE_DB = YES # Configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module # file that captures the structure of the code including all documentation. # # Note that this feature is still experimental and incomplete at the moment. @@ -2278,7 +2335,7 @@ SQLITE3_RECREATE_DB = YES GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI # output from the Perl module output. # The default value is: NO. @@ -2308,13 +2365,13 @@ PERLMOD_MAKEVAR_PREFIX = # Configuration options related to the preprocessor #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all # C-preprocessor directives found in the sources and include files. # The default value is: YES. ENABLE_PREPROCESSING = YES -# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names # in the source code. If set to NO, only conditional compilation will be # performed. Macro expansion can be done in a controlled way by setting # EXPAND_ONLY_PREDEF to YES. @@ -2378,7 +2435,7 @@ PREDEFINED = "Q_DECL_IMPORT=" \ EXPAND_AS_DEFINED = -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will # remove all references to function-like macros that are alone on a line, have # an all uppercase name, and do not end with a semicolon. Such function macros # are typically used for boiler-plate code, and will confuse the parser if not @@ -2402,7 +2459,7 @@ SKIP_FUNCTION_MACROS = YES # section "Linking to external documentation" for more information about the use # of tag files. # Note: Each tag file must have a unique name (where the name does NOT include -# the path). If a tag file is not located in the directory in which doxygen is +# the path). If a tag file is not located in the directory in which Doxygen is # run, you must also specify the path to the tagfile here. TAGFILES = "@QDOC_TAG_DIR@/qtcore/qtcore.tags=https://doc.qt.io/qt-5/" \ @@ -2411,7 +2468,7 @@ TAGFILES = "@QDOC_TAG_DIR@/qtcore/qtcore.tags=https://doc.qt.io/qt "@QDOC_TAG_DIR@/qtprintsupport/qtprintsupport.tags=https://doc.qt.io/qt-5/" \ "@QDOC_TAG_DIR@/qtxml/qtxml.tags=https://doc.qt.io/qt-5/" -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. @@ -2448,7 +2505,7 @@ EXTERNAL_PAGES = YES HIDE_UNDOC_RELATIONS = YES -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: # https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is @@ -2457,8 +2514,8 @@ HIDE_UNDOC_RELATIONS = YES HAVE_DOT = @HAVE_DOT@ -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed -# to run in parallel. When set to 0 doxygen will base this on the number of +# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed +# to run in parallel. When set to 0 Doxygen will base this on the number of # processors available in the system. You can set it explicitly to a value # larger than 0 to get control over the balance between CPU load and processing # speed. @@ -2469,7 +2526,7 @@ DOT_NUM_THREADS = 0 # DOT_COMMON_ATTR is common attributes for nodes, edges and labels of # subgraphs. When you want a differently looking font in the dot files that -# doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# Doxygen generates you can specify fontname, fontcolor and fontsize attributes. # For details please see Node, # Edge and Graph Attributes specification You need to make sure dot is able # to find the font, which can be done by putting it in a standard location or by @@ -2503,20 +2560,24 @@ DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will # generate a graph for each documented class showing the direct and indirect # inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and # HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case # the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the # CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used. # If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance -# relations will be shown as texts / links. +# relations will be shown as texts / links. Explicit enabling an inheritance +# graph or choosing a different representation for an inheritance graph of a +# specific class, can be accomplished by means of the command \inheritancegraph. +# Disabling an inheritance graph can be accomplished by means of the command +# \hideinheritancegraph. # Possible values are: NO, YES, TEXT, GRAPH and BUILTIN. # The default value is: YES. CLASS_GRAPH = YES -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a # graph for each documented class showing the direct and indirect implementation # dependencies (inheritance, containment, and class references variables) of the # class with other documented classes. Explicit enabling a collaboration graph, @@ -2528,7 +2589,7 @@ CLASS_GRAPH = YES COLLABORATION_GRAPH = YES -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for # groups, showing the direct groups dependencies. Explicit enabling a group # dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means # of the command \groupgraph. Disabling a directory graph can be accomplished by @@ -2539,7 +2600,7 @@ COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. # The default value is: NO. @@ -2560,10 +2621,10 @@ UML_LOOK = NO UML_LIMIT_NUM_FIELDS = 10 -# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and # methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS -# tag is set to YES, doxygen will add type and arguments for attributes and -# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# tag is set to YES, Doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen # will not generate fields with class member information in the UML graphs. The # class diagrams will look similar to the default class diagrams but using UML # notation for the relationships. @@ -2575,8 +2636,8 @@ DOT_UML_DETAILS = NO # The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters # to display on a single line. If the actual line length exceeds this threshold -# significantly it will wrapped across multiple lines. Some heuristics are apply -# to avoid ugly line breaks. +# significantly it will be wrapped across multiple lines. Some heuristics are +# applied to avoid ugly line breaks. # Minimum value: 0, maximum value: 1000, default value: 17. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2591,7 +2652,7 @@ DOT_WRAP_THRESHOLD = 17 TEMPLATE_RELATIONS = NO # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to -# YES then doxygen will generate a graph for each documented file showing the +# YES then Doxygen will generate a graph for each documented file showing the # direct and indirect include dependencies of the file with other documented # files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO, # can be accomplished by means of the command \includegraph. Disabling an @@ -2602,7 +2663,7 @@ TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are -# set to YES then doxygen will generate a graph for each documented file showing +# set to YES then Doxygen will generate a graph for each documented file showing # the direct and indirect include dependencies of the file with other documented # files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set # to NO, can be accomplished by means of the command \includedbygraph. Disabling @@ -2613,7 +2674,7 @@ INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2625,7 +2686,7 @@ INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2637,14 +2698,14 @@ CALL_GRAPH = NO CALLER_GRAPH = NO -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical # hierarchy of all classes instead of a textual one. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the # dependencies a directory has on other directories in a graphical way. The # dependency relations are determined by the #include relations between the # files in the directories. Explicit enabling a directory graph, when @@ -2703,7 +2764,7 @@ DOT_PATH = DOTFILE_DIRS = -# You can include diagrams made with dia in doxygen documentation. Doxygen will +# You can include diagrams made with dia in Doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. # If left empty dia is assumed to be found in the default search path. @@ -2716,7 +2777,7 @@ DIA_PATH = DIAFILE_DIRS = -# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the # path where java can find the plantuml.jar file or to the filename of jar file # to be used. If left blank, it is assumed PlantUML is not used or called during # a preprocessing step. Doxygen will generate a warning when it encounters a @@ -2724,20 +2785,20 @@ DIAFILE_DIRS = PLANTUML_JAR_PATH = -# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a -# configuration file for plantuml. +# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for PlantUML. PLANTUML_CFG_FILE = -# When using plantuml, the specified paths are searched for files specified by -# the !include statement in a plantuml block. +# When using PlantUML, the specified paths are searched for files specified by +# the !include statement in a PlantUML block. PLANTUML_INCLUDE_PATH = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes -# larger than this value, doxygen will truncate the graph, which is visualized -# by representing a node as a red box. Note that doxygen if the number of direct +# larger than this value, Doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that if the number of direct # children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. @@ -2767,17 +2828,17 @@ MAX_DOT_GRAPH_DEPTH = 1000 DOT_MULTI_TARGETS = NO -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. -# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal # graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate +# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate # files that are used to generate the various graphs. # # Note: This setting is not only used for dot files but also for msc temporary @@ -2786,11 +2847,11 @@ GENERATE_LEGEND = YES DOT_CLEANUP = YES -# You can define message sequence charts within doxygen comments using the \msc -# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will +# You can define message sequence charts within Doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will # use a built-in version of mscgen tool to produce the charts. Alternatively, # the MSCGEN_TOOL tag can also specify the name an external tool. For instance, -# specifying prog as the value, doxygen will call the tool as prog -T +# specifying prog as the value, Doxygen will call the tool as prog -T # -o . The external tool should support # output file formats "png", "eps", "svg", and "ismap". diff --git a/docs/book/src/qpa-windows.md b/docs/book/src/qpa-windows.md index 07e39d912..d379f98cb 100644 --- a/docs/book/src/qpa-windows.md +++ b/docs/book/src/qpa-windows.md @@ -5,5 +5,10 @@ KDDockWidgets not only works fine on `Windows` it also implements some native fe - Support for native Windows drop shadow around the frame - Support mixing with MFC event loop +## Known issues + +- Turning off "Show window contents while dragging" is not supported, as Qt won't receive + any mouse or window move event until mouse is released. + Note: `MinGW` compiler is not tested, but probably works.
Note: KDDW is tested with Windows 10 and 11. `Windows 7` can be made to work, upon request. diff --git a/docs/developer/branching.md b/docs/developer/branching.md index 0cdcfed0a..5b56b165c 100644 --- a/docs/developer/branching.md +++ b/docs/developer/branching.md @@ -17,9 +17,9 @@ If the current stable branch is X.Y then the new branch will be called X.Y+1. For example, if the current stable branch is 2.1 then the new stable branch will be 2.2, like so: ```shell -git checkout main -git branch 2.2 -git checkout 2.2 + git checkout main + git branch 2.2 + git checkout 2.2 ``` ## New major version @@ -30,9 +30,9 @@ If the current stable branch is X.Y then the new branch will be called X+1.0. For example, if the current stable branch is 2.1 then the new stable branch will be 3.0, like so: ```shell -git checkout main -git branch 3.0 -git checkout 3.0 + git checkout main + git branch 3.0 + git checkout 3.0 ``` ## After branching @@ -61,6 +61,6 @@ Make all the above changes and then git commit and push the new branch. ### And finally -* Update the KDABCI to the new stable branch (contact the KDAB CI team) +* Update the KDABCI to the new stable branch (contact the KDAB CI team ) * Update the Github Default Branch (see Default Branch setting at ) * Initiate CI builds (both github and KDAB) of the new branch and make sure all is green before continuing. diff --git a/docs/developer/prerelease-source.md b/docs/developer/prerelease-source.md index 0d461e792..e341d09cd 100644 --- a/docs/developer/prerelease-source.md +++ b/docs/developer/prerelease-source.md @@ -1,6 +1,18 @@ # Pre-release source code review -Before creating the tag for the new release check the following: +See the bash script `deploy/release-kddockwidgets.sh` in this project +which automatically performs all these checks. Additionally, +`deploy/release-kddockwidgets.sh` does a build of the documentation +plus creates and signs tar/zip balls. If all goes well, the user +will be prompted to create the tag. + +To use it run: + +```shell + ./deploy/release-kddockwidgets.sh X.Y.Z` # where X.Y.Z is the release version. +``` + +Pre-release checklist: * sync KDAB cmake files to upstream @@ -8,7 +20,7 @@ Before creating the tag for the new release check the following: * sync KDE cmake files to upstream - compare the cmake/ECM files to their upstream versions in git@invent.kde.org:frameworks/extra-cmake-modules + compare the cmake/ECM files to their upstream versions in * ensures the Doxygen.cmake file is up-to-date for the doxygen version we use on KDABCI @@ -26,15 +38,12 @@ Before creating the tag for the new release check the following: * Add the real release date to the Changelog section header "vX.Y.Z (unreleased)" -* updates distro/.spec and distro/.dsc files -* (TODO) script to do that^^ - -* git commit any changes made above and make sure the CIs are green before continuing. +* `git commit` any changes made above and make sure the CIs are green before continuing. Then create the new tag using the command: ```shell -git tag -m KDDockWidgets vX.Y.Z X.Y.Z" + git tag -m KDDockWidgets vX.Y.Z X.Y.Z" ``` **DO NOT PUSH THE TAG YET!** diff --git a/docs/developer/release-todo.md b/docs/developer/release-todo.md new file mode 100644 index 000000000..c86255dcf --- /dev/null +++ b/docs/developer/release-todo.md @@ -0,0 +1,80 @@ +# Release Checklist + +## Prerelease Source Checking + +* make sure the [github actions CI](https://github.com/KDAB/KDDockWidgets/actions) is green +* make sure the [KDAB CI](https://kdab.ci.kdab.com/#/projects/19) is green +* look for any static checking issues (clazy, clang-tidy, cppcheck, etc) that may need fixing. + check [KDAB CI](https://kdab-artifacts.ci.kdab.com/analysis/kddockwidgets-stable) + and [Github Nightly CI](https://github.com/KDAB/KDDockWidgets/actions/workflows/nightly.yml) +* look for any changes in the README.md that may need updating or improving. +* follow the [prerelease source code review](prerelease-source.md) instructions. +* merge any changes made during the review +* create the tag (**do not push the tag yet**) + +## Prerelease Build Checking + +Any last changes before pushing the tag? Any CI failures? + +If so: + +```shell + git -d vX.Y.Z # delete the tag; good thing we didn't push it yet + commit and push fixes + update Changelog as necessary + ./deploy/release-kddockwidget.sh X.Y.Z + git tag -m KDDockWidgets vX.Y.Z X.Y.Z +``` + +## Release + +### Push the tag + +```shell +git push --tags +``` + +### Github + +#### Make a release on Github + +Go to and make an official release. + +* push the "Draft a new release" button. +* use the Changelog to help write the release description. +* hang the kddockwidgets-X.Y.Z.tar.gz, kddockwidgets-X.Y.Z.zip and kddockwidgets-X.Y.0-doc.zip + (for major and minor releases) on the github release page. +* also hang the associated .asc files on the github release page. + +#### Change the default branch + +For major (X.Y.0) releases, change the default branch at + to X.Y + +## Commercial release + +For our paying licensed clients we provide a source code download from our customers.kdab.com portal. + +Create a KDADM Jira asking our admins to hang the tar and zips in the customers download area. +The admins should copy kddockwidgets-X.Y.Z.tar.gz, kddockwidgets-X.Y.Z.zip and kddockwidgets-X.Y.0-doc.zip +from . + +## Postrelease + +### Announcing + +* update the + [Products Release Schedule wiki](https://wiki.kdab.com/display/Products/Product+Release+Schedule) + and [KDDockWidgets wiki](https://wiki.kdab.com/display/Products/KDDockWidgets) + with new version numbers + +* email the marketing team and ask to have the news of + the KDDockWidgets release posted to KDAB social media. + +### Prepare for Next Release + +In the branch: + +* increment the KDDockWidgets_VERSION_PATCH value in the top-level CMakeLists.txt +* add a new stanza to the top of Changelog for "X.Y.Z+1 (unreleased)" +* merge to the "main" branch diff --git a/src/Config.cpp b/src/Config.cpp index f7ef27090..a8e1912ff 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -11,7 +11,7 @@ /** * @file - * @brief Application wide config to tune certain beahviours of the framework. + * @brief Application wide config to tune certain framework behaviors. * * @author Sérgio Martins \ */ diff --git a/src/core/Position.cpp b/src/core/Position.cpp index ece7fb249..d367e36e5 100644 --- a/src/core/Position.cpp +++ b/src/core/Position.cpp @@ -198,7 +198,7 @@ LayoutSaver::Position Position::serialize() const p.indexOfFloatingWindow = fw->beingDeleted() ? -1 : DockRegistry::self()->floatingWindows().indexOf( - fw); + fw); } else { p.mainWindowUniqueName = mainWindow->uniqueName(); assert(!p.mainWindowUniqueName.isEmpty()); diff --git a/src/core/Separator.cpp b/src/core/Separator.cpp index 93ccd5005..bc74b32b8 100644 --- a/src/core/Separator.cpp +++ b/src/core/Separator.cpp @@ -106,7 +106,7 @@ Separator::Separator(LayoutingHost *host, Qt::Orientation orientation, Core::Ite view()->show(); view()->init(); d->lazyResizeRubberBand = d->usesLazyResize ? Config::self().viewFactory()->createRubberBand( - rubberBandIsTopLevel() ? nullptr : view()) + rubberBandIsTopLevel() ? nullptr : view()) : nullptr; setVisible(true); } diff --git a/src/core/TitleBar.cpp b/src/core/TitleBar.cpp index 22be2a4bb..d7f27e20a 100644 --- a/src/core/TitleBar.cpp +++ b/src/core/TitleBar.cpp @@ -41,8 +41,8 @@ using namespace KDDockWidgets::Core; TitleBar::TitleBar(Group *parent) : Controller( - ViewType::TitleBar, - Config::self().viewFactory()->createTitleBar(this, parent ? parent->view() : nullptr)) + ViewType::TitleBar, + Config::self().viewFactory()->createTitleBar(this, parent ? parent->view() : nullptr)) , Draggable(view()) , d(new Private()) , m_group(parent) @@ -67,8 +67,8 @@ TitleBar::TitleBar(Group *parent) TitleBar::TitleBar(FloatingWindow *parent) : Controller( - ViewType::TitleBar, - Config::self().viewFactory()->createTitleBar(this, parent ? parent->view() : nullptr)) + ViewType::TitleBar, + Config::self().viewFactory()->createTitleBar(this, parent ? parent->view() : nullptr)) , Draggable(view()) , d(new Private()) , m_group(nullptr) diff --git a/src/core/WindowBeingDragged.cpp b/src/core/WindowBeingDragged.cpp index c7df30f37..bbd23bf6d 100644 --- a/src/core/WindowBeingDragged.cpp +++ b/src/core/WindowBeingDragged.cpp @@ -69,7 +69,9 @@ WindowBeingDragged::WindowBeingDragged(FloatingWindow *fw, Draggable *draggable) , m_guard(m_draggableView) { init(); - updateTransparency(/*enable=*/true); + + // Dragged windows normally have transparency, unless we don't have drop indicators + updateTransparency(/*enable=*/!Config::self().dropIndicatorsInhibited()); } WindowBeingDragged::WindowBeingDragged(Draggable *draggable) diff --git a/src/core/spdlog_formatters_p.h b/src/core/spdlog_formatters_p.h index ea6be5ca1..5c79cfbfa 100644 --- a/src/core/spdlog_formatters_p.h +++ b/src/core/spdlog_formatters_p.h @@ -25,7 +25,7 @@ struct fmt::formatter } template - auto format(KDDockWidgets::Size size, FormatContext &ctx) + auto format(KDDockWidgets::Size size, FormatContext &ctx) const { return fmt::format_to(ctx.out(), "{}x{}", size.width(), size.height()); } @@ -40,7 +40,7 @@ struct fmt::formatter } template - auto format(KDDockWidgets::Point point, FormatContext &ctx) + auto format(KDDockWidgets::Point point, FormatContext &ctx) const { return fmt::format_to(ctx.out(), "{}x{}", point.x(), point.y()); } @@ -55,7 +55,7 @@ struct fmt::formatter } template - auto format(KDDockWidgets::Rect r, FormatContext &ctx) + auto format(KDDockWidgets::Rect r, FormatContext &ctx) const { return fmt::format_to(ctx.out(), "Rect({},{} {}x{})", r.x(), r.y(), r.width(), r.height()); } @@ -71,7 +71,7 @@ struct fmt::formatter } template - auto format(const QString &str, FormatContext &ctx) + auto format(const QString &str, FormatContext &ctx) const { return fmt::format_to(ctx.out(), "{}", str.toStdString()); } @@ -87,7 +87,7 @@ struct fmt::formatter> } template - auto format(const QVector &vec, FormatContext &ctx) + auto format(const QVector &vec, FormatContext &ctx) const { auto out = ctx.out(); @@ -109,7 +109,7 @@ struct fmt::formatter> } template - auto format(QFlags flags, FormatContext &ctx) + auto format(QFlags flags, FormatContext &ctx) const { auto out = ctx.out(); @@ -147,7 +147,7 @@ struct fmt::formatter } template - auto format(Qt::Orientation o, FormatContext &ctx) + auto format(Qt::Orientation o, FormatContext &ctx) const { if (o == Qt::Horizontal) { return fmt::format_to(ctx.out(), "Horizontal"); @@ -168,7 +168,7 @@ struct fmt::formatter } template - auto format(KDDockWidgets::DropLocation loc, FormatContext &ctx) + auto format(KDDockWidgets::DropLocation loc, FormatContext &ctx) const { switch (loc) { @@ -209,7 +209,7 @@ struct fmt::formatter } template - auto format(const KDDockWidgets::InitialOption &opt, FormatContext &ctx) + auto format(const KDDockWidgets::InitialOption &opt, FormatContext &ctx) const { return fmt::format_to(ctx.out(), "[InitialOption: preferredSize={}, visibility={}]", opt.preferredSize, ( int )opt.visibility); } @@ -225,7 +225,7 @@ struct fmt::formatter> } template - auto format(const KDDockWidgets::Vector &vec, FormatContext &ctx) + auto format(const KDDockWidgets::Vector &vec, FormatContext &ctx) const { auto out = ctx.out(); diff --git a/src/flutter/Platform.h b/src/flutter/Platform.h index 06958ddac..8426947eb 100644 --- a/src/flutter/Platform.h +++ b/src/flutter/Platform.h @@ -114,7 +114,7 @@ class DOCKS_EXPORT Platform : public Core::Platform void pauseForDebugger() override; /// Pauses execution, so we can attach Dart's debugger - virtual void pauseForDartDebugger() {}; + virtual void pauseForDartDebugger() { }; // Called by unit-test's main.dart. Runs the tests. // The tests are in C++, as they are the same ones for QtWidgets and QtQuick diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index d838b5449..76bb51c82 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -6206,174 +6206,173 @@ KDDW_QCORO_TASK tst_rect() KDDW_TEST_RETURN(true); } -static const auto s_tests = std::vector -{ +static const auto s_tests = std::vector { TEST(tst_simple1), - TEST(tst_simple2), - TEST(tst_resizeWindow2), - TEST(tst_hasPreviousDockedLocation), - TEST(tst_hasPreviousDockedLocation2), - TEST(tst_LayoutSaverOpenedDocks), - TEST(tst_ghostSeparator), - TEST(tst_detachFromMainWindow), - TEST(tst_floatingWindowSize), - TEST(tst_tabbingWithAffinities), - TEST(tst_floatingWindowTitleBug), - TEST(tst_setFloatingSimple), - TEST(tst_dragOverTitleBar), - TEST(tst_setFloatingGeometry), - TEST(tst_restoreEmpty), - TEST(tst_restoreCentralFrame), - TEST(tst_restoreNonExistingDockWidget), - TEST(tst_shutdown), - TEST(tst_closeDockWidgets), - TEST(tst_closeReason), - TEST(tst_layoutEqually), - TEST(tst_doubleClose), - TEST(tst_maximizeAndRestore), - TEST(tst_restoreWithNonClosableWidget), - TEST(tst_restoreCrash), - TEST(tst_restoreSideBySide), - TEST(tst_restoreWithCentralFrameWithTabs), - TEST(tst_restoreGroupOptions), - TEST(tst_restoreWithAffinity), - TEST(tst_marginsAfterRestore), - TEST(tst_restoreWithNewDockWidgets), - TEST(tst_restoreWithDockFactory), - TEST(tst_restoreWithDockFactory2), - TEST(tst_dontCloseDockWidgetBeforeRestore), - TEST(tst_dontCloseDockWidgetBeforeRestore3), - TEST(tst_dontCloseDockWidgetBeforeRestore4), - TEST(tst_skipRestoreInsideMainWindow), - TEST(tst_restoreWithNativeTitleBar), - TEST(tst_closeOnlyCurrentTab), - TEST(tst_tabWidgetCurrentIndex), - TEST(tst_propagateResize2), - TEST(tst_startClosed), - TEST(tst_closeReparentsToNull), - TEST(tst_invalidAnchorGroup), - TEST(tst_addAsPlaceholder), - TEST(tst_repeatedShowHide), - TEST(tst_removeItem), - TEST(tst_clear), - TEST(tst_crash), - TEST(tst_refUnrefItem), - TEST(tst_placeholderCount), - TEST(tst_availableLengthForOrientation), - TEST(tst_closeTabOfCentralFrame), - TEST(tst_centralGroupAffinity), - TEST(tst_setAsCurrentTab), - TEST(tst_placeholderDisappearsOnReadd), - TEST(tst_placeholdersAreRemovedProperly), - TEST(tst_preferredInitialSize), - TEST(tst_preferredInitialSizeVsMinSize), - TEST(tst_closeAllDockWidgets), - TEST(tst_toggleMiddleDockCrash), - TEST(tst_stealFrame), - TEST(tst_setFloatingWhenWasTabbed), - TEST(tst_setWidget), - TEST(tst_floatingLastPosAfterDoubleClose), - TEST(tst_registry), - TEST(tst_honourGeometryOfHiddenWindow), - TEST(tst_posAfterLeftDetach), - TEST(tst_propagateMinSize), - TEST(tst_createFloatingWindow), - TEST(tst_fairResizeAfterRemoveWidget), - TEST(tst_unfloatTabbedFloatingWidgets), - TEST(tst_unfloatTabbedFloatingWidgets2), - TEST(tst_resizeViaAnchorsAfterPlaceholderCreation), - TEST(tst_rectForDropCrash), - TEST(tst_addDockWidgetToMainWindow), - TEST(tst_addDockWidgetToContainingWindow), - TEST(tst_setFloatingAfterDraggedFromTabToSideBySide), - TEST(tst_setFloatingAFrameWithTabs), - TEST(tst_toggleDockWidgetWithHiddenTitleBar), - TEST(tst_anchorFollowingItselfAssert), - TEST(tst_isInMainWindow), - TEST(tst_sizeConstraintWarning), - TEST(tst_stuckSeparator), - TEST(tst_dockNotFillingSpace), - TEST(tst_titlebar_getter), - TEST(tst_addingOptionHiddenTabbed), - TEST(tst_maxSizedHonouredAfterRemoved), - TEST(tst_addDockWidgetAsTabToDockWidget), - TEST(tst_closeTabHidesDockWidget), - TEST(tst_propagateSizeHonoursMinSize), - TEST(tst_floatingAction), - TEST(tst_constraintsPropagateUp), - TEST(tst_addToSmallMainWindow4), - TEST(tst_addToSmallMainWindow5), - TEST(tst_dragBySingleTab), - TEST(tst_deleteOnClose), - TEST(tst_toggleAction), - TEST(tst_redocksToPreviousTabIndex), - TEST(tst_toggleTabbed2), - TEST(tst_resizePropagatesEvenly), - TEST(tst_persistentCentralWidget), - TEST(tst_titlebarNumDockWidgetsChanged), - TEST(tst_closed), - TEST(tst_restoreFlagsFromVersion16), - TEST(tst_map), - TEST(tst_childViewAt), - TEST(tst_detachPos), - TEST(tst_floatMaintainsSize), - TEST(tst_scopedValueRollback), - TEST(tst_size), - TEST(tst_point), - TEST(tst_rect), - TEST(tst_resizeInLayout), - TEST(tst_mainWindowToggle), - TEST(tst_startDragging), + TEST(tst_simple2), + TEST(tst_resizeWindow2), + TEST(tst_hasPreviousDockedLocation), + TEST(tst_hasPreviousDockedLocation2), + TEST(tst_LayoutSaverOpenedDocks), + TEST(tst_ghostSeparator), + TEST(tst_detachFromMainWindow), + TEST(tst_floatingWindowSize), + TEST(tst_tabbingWithAffinities), + TEST(tst_floatingWindowTitleBug), + TEST(tst_setFloatingSimple), + TEST(tst_dragOverTitleBar), + TEST(tst_setFloatingGeometry), + TEST(tst_restoreEmpty), + TEST(tst_restoreCentralFrame), + TEST(tst_restoreNonExistingDockWidget), + TEST(tst_shutdown), + TEST(tst_closeDockWidgets), + TEST(tst_closeReason), + TEST(tst_layoutEqually), + TEST(tst_doubleClose), + TEST(tst_maximizeAndRestore), + TEST(tst_restoreWithNonClosableWidget), + TEST(tst_restoreCrash), + TEST(tst_restoreSideBySide), + TEST(tst_restoreWithCentralFrameWithTabs), + TEST(tst_restoreGroupOptions), + TEST(tst_restoreWithAffinity), + TEST(tst_marginsAfterRestore), + TEST(tst_restoreWithNewDockWidgets), + TEST(tst_restoreWithDockFactory), + TEST(tst_restoreWithDockFactory2), + TEST(tst_dontCloseDockWidgetBeforeRestore), + TEST(tst_dontCloseDockWidgetBeforeRestore3), + TEST(tst_dontCloseDockWidgetBeforeRestore4), + TEST(tst_skipRestoreInsideMainWindow), + TEST(tst_restoreWithNativeTitleBar), + TEST(tst_closeOnlyCurrentTab), + TEST(tst_tabWidgetCurrentIndex), + TEST(tst_propagateResize2), + TEST(tst_startClosed), + TEST(tst_closeReparentsToNull), + TEST(tst_invalidAnchorGroup), + TEST(tst_addAsPlaceholder), + TEST(tst_repeatedShowHide), + TEST(tst_removeItem), + TEST(tst_clear), + TEST(tst_crash), + TEST(tst_refUnrefItem), + TEST(tst_placeholderCount), + TEST(tst_availableLengthForOrientation), + TEST(tst_closeTabOfCentralFrame), + TEST(tst_centralGroupAffinity), + TEST(tst_setAsCurrentTab), + TEST(tst_placeholderDisappearsOnReadd), + TEST(tst_placeholdersAreRemovedProperly), + TEST(tst_preferredInitialSize), + TEST(tst_preferredInitialSizeVsMinSize), + TEST(tst_closeAllDockWidgets), + TEST(tst_toggleMiddleDockCrash), + TEST(tst_stealFrame), + TEST(tst_setFloatingWhenWasTabbed), + TEST(tst_setWidget), + TEST(tst_floatingLastPosAfterDoubleClose), + TEST(tst_registry), + TEST(tst_honourGeometryOfHiddenWindow), + TEST(tst_posAfterLeftDetach), + TEST(tst_propagateMinSize), + TEST(tst_createFloatingWindow), + TEST(tst_fairResizeAfterRemoveWidget), + TEST(tst_unfloatTabbedFloatingWidgets), + TEST(tst_unfloatTabbedFloatingWidgets2), + TEST(tst_resizeViaAnchorsAfterPlaceholderCreation), + TEST(tst_rectForDropCrash), + TEST(tst_addDockWidgetToMainWindow), + TEST(tst_addDockWidgetToContainingWindow), + TEST(tst_setFloatingAfterDraggedFromTabToSideBySide), + TEST(tst_setFloatingAFrameWithTabs), + TEST(tst_toggleDockWidgetWithHiddenTitleBar), + TEST(tst_anchorFollowingItselfAssert), + TEST(tst_isInMainWindow), + TEST(tst_sizeConstraintWarning), + TEST(tst_stuckSeparator), + TEST(tst_dockNotFillingSpace), + TEST(tst_titlebar_getter), + TEST(tst_addingOptionHiddenTabbed), + TEST(tst_maxSizedHonouredAfterRemoved), + TEST(tst_addDockWidgetAsTabToDockWidget), + TEST(tst_closeTabHidesDockWidget), + TEST(tst_propagateSizeHonoursMinSize), + TEST(tst_floatingAction), + TEST(tst_constraintsPropagateUp), + TEST(tst_addToSmallMainWindow4), + TEST(tst_addToSmallMainWindow5), + TEST(tst_dragBySingleTab), + TEST(tst_deleteOnClose), + TEST(tst_toggleAction), + TEST(tst_redocksToPreviousTabIndex), + TEST(tst_toggleTabbed2), + TEST(tst_resizePropagatesEvenly), + TEST(tst_persistentCentralWidget), + TEST(tst_titlebarNumDockWidgetsChanged), + TEST(tst_closed), + TEST(tst_restoreFlagsFromVersion16), + TEST(tst_map), + TEST(tst_childViewAt), + TEST(tst_detachPos), + TEST(tst_floatMaintainsSize), + TEST(tst_scopedValueRollback), + TEST(tst_size), + TEST(tst_point), + TEST(tst_rect), + TEST(tst_resizeInLayout), + TEST(tst_mainWindowToggle), + TEST(tst_startDragging), #if !defined(KDDW_FRONTEND_FLUTTER) - TEST(tst_minMaxGuest), - TEST(tst_doesntHaveNativeTitleBar), - TEST(tst_sizeAfterRedock), - TEST(tst_honourUserGeometry), - TEST(tst_restoreMaximizedState), - TEST(tst_restoreFloatingMinimizedState), - TEST(tst_dockInternal), - TEST(tst_samePositionAfterHideRestore), - TEST(tst_restoreTwice), - TEST(tst_restoreAfterResize), - TEST(tst_restoreNestedAndTabbed), - TEST(tst_restoreWithPlaceholder), - TEST(tst_restoreAfterMinSizeChanges), - TEST(tst_lastFloatingPositionIsRestored), - TEST(tst_restoreNonClosable), - TEST(tst_restoreNlohmanException), - TEST(tst_restoreWithInvalidCurrentTab), - TEST(tst_restoreRestoresMainWindowPosition), - TEST(tst_dontCloseDockWidgetBeforeRestore2), - TEST(tst_doubleClickTabToDetach), - TEST(tst_tabTitleChanges), - TEST(tst_preventClose), - TEST(tst_addAndReadd), - TEST(tst_notClosable), - TEST(tst_availableSizeWithPlaceholders), - TEST(tst_moreTitleBarCornerCases), - TEST(tst_raise), - TEST(tst_nonDockable), - TEST(tst_flagDoubleClick), - TEST(tst_constraintsAfterPlaceholder), - TEST(tst_addToSmallMainWindow1), - TEST(tst_addToSmallMainWindow2), - TEST(tst_addToSmallMainWindow3), - TEST(tst_titleBarFocusedWhenTabsChange), - TEST(tst_toggleTabbed), - TEST(tst_currentTabMatchesDockWidget), - TEST(tst_addMDIDockWidget), - TEST(tst_mdiZorder), - TEST(tst_mdiCrash), - TEST(tst_mdiZorder2), - TEST(tst_mdiSetSize), - TEST(tst_mixedMDIRestoreToArea), - TEST(tst_redockToMDIRestoresPosition), - TEST(tst_maximizeButton), - TEST(tst_restoreAfterUnminimized), - TEST(tst_doubleScheduleDelete), - TEST(tst_minimizeRestoreBug), + TEST(tst_minMaxGuest), + TEST(tst_doesntHaveNativeTitleBar), + TEST(tst_sizeAfterRedock), + TEST(tst_honourUserGeometry), + TEST(tst_restoreMaximizedState), + TEST(tst_restoreFloatingMinimizedState), + TEST(tst_dockInternal), + TEST(tst_samePositionAfterHideRestore), + TEST(tst_restoreTwice), + TEST(tst_restoreAfterResize), + TEST(tst_restoreNestedAndTabbed), + TEST(tst_restoreWithPlaceholder), + TEST(tst_restoreAfterMinSizeChanges), + TEST(tst_lastFloatingPositionIsRestored), + TEST(tst_restoreNonClosable), + TEST(tst_restoreNlohmanException), + TEST(tst_restoreWithInvalidCurrentTab), + TEST(tst_restoreRestoresMainWindowPosition), + TEST(tst_dontCloseDockWidgetBeforeRestore2), + TEST(tst_doubleClickTabToDetach), + TEST(tst_tabTitleChanges), + TEST(tst_preventClose), + TEST(tst_addAndReadd), + TEST(tst_notClosable), + TEST(tst_availableSizeWithPlaceholders), + TEST(tst_moreTitleBarCornerCases), + TEST(tst_raise), + TEST(tst_nonDockable), + TEST(tst_flagDoubleClick), + TEST(tst_constraintsAfterPlaceholder), + TEST(tst_addToSmallMainWindow1), + TEST(tst_addToSmallMainWindow2), + TEST(tst_addToSmallMainWindow3), + TEST(tst_titleBarFocusedWhenTabsChange), + TEST(tst_toggleTabbed), + TEST(tst_currentTabMatchesDockWidget), + TEST(tst_addMDIDockWidget), + TEST(tst_mdiZorder), + TEST(tst_mdiCrash), + TEST(tst_mdiZorder2), + TEST(tst_mdiSetSize), + TEST(tst_mixedMDIRestoreToArea), + TEST(tst_redockToMDIRestoresPosition), + TEST(tst_maximizeButton), + TEST(tst_restoreAfterUnminimized), + TEST(tst_doubleScheduleDelete), + TEST(tst_minimizeRestoreBug), #endif - TEST(tst_keepLast) + TEST(tst_keepLast) }; #include "tests_main.h" diff --git a/tests/tst_docks_slow5.cpp b/tests/tst_docks_slow5.cpp index 75b09d8ab..11f5d6808 100644 --- a/tests/tst_docks_slow5.cpp +++ b/tests/tst_docks_slow5.cpp @@ -354,8 +354,7 @@ KDDW_QCORO_TASK tst_28NestedWidgets() KDDW_TEST_RETURN(true); } -static const auto s_tests = std::vector -{ +static const auto s_tests = std::vector { #if !defined(KDDW_FRONTEND_FLUTTER) TEST(tst_28NestedWidgets) #endif diff --git a/tests/tst_docks_slow6.cpp b/tests/tst_docks_slow6.cpp index 67d7f65dc..1585186dc 100644 --- a/tests/tst_docks_slow6.cpp +++ b/tests/tst_docks_slow6.cpp @@ -112,8 +112,7 @@ KDDW_QCORO_TASK tst_isFocused() KDDW_CO_RETURN(true); } -static const auto s_tests = std::vector -{ +static const auto s_tests = std::vector { #if !defined(KDDW_FRONTEND_FLUTTER) TEST(tst_isFocused) #endif diff --git a/tests/wayland/CMakeLists.txt b/tests/wayland/CMakeLists.txt index 399fc2830..c54ec5c0e 100644 --- a/tests/wayland/CMakeLists.txt +++ b/tests/wayland/CMakeLists.txt @@ -47,4 +47,4 @@ function(add_wayland_test test srcs) ) endfunction() -add_wayland_test(tst_wayland_qtwidgets tst_qtwidgets.cpp) +add_wayland_test(tst_wayland_qtwidgets tst_wayland.cpp)