diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index 547e6a0cae1..d4807cd590c 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -7,7 +7,7 @@ on: - 'doc/**' env: - QT_VERSION: 6.7.1 + QT_VERSION: 6.7.2 MACOS_DEPLOYMENT_TARGET: 11.0 CLANG_VERSION: 18.1.7 ELFUTILS_VERSION: 0.175 diff --git a/coin/instructions/common_environment.yaml b/coin/instructions/common_environment.yaml index fc5f69aa3b5..df5a10436cd 100644 --- a/coin/instructions/common_environment.yaml +++ b/coin/instructions/common_environment.yaml @@ -10,7 +10,7 @@ instructions: variableValue: https://ci-files02-hki.ci.qt.io/packages/jenkins/qtcreator_libclang/libclang-release_18.1.7-based - type: EnvironmentVariable variableName: QTC_QT_BASE_URL - variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/6.7/6.7.1-released/Qt" + variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/6.7/6.7.2-released/Qt" - type: EnvironmentVariable variableName: QTC_QT_MODULES variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine" diff --git a/dist/changelog/changes-14.0.1.md b/dist/changelog/changes-14.0.1.md new file mode 100644 index 00000000000..ba34bb30ad5 --- /dev/null +++ b/dist/changelog/changes-14.0.1.md @@ -0,0 +1,92 @@ +Qt Creator 14.0.1 +================= + +Qt Creator version 14.0.1 contains bug fixes. + +The most important changes are listed in this document. For a complete list of +changes, see the Git log for the Qt Creator sources that you can check out from +the public Git repository. For example: + + + +General +------- + +* Fixed wrong colors when using a light theme on a dark system + ([QTCREATORBUG-31226](https://bugreports.qt.io/browse/QTCREATORBUG-31226)) + +Editing +------- + +* Fixed a crash when selecting a context menu item for an editor that was + closed in the meantime + ([QTCREATORBUG-31232](https://bugreports.qt.io/browse/QTCREATORBUG-31232)) + +### C++ + +* Fixed a crash in the type hierarchy builder + ([QTCREATORBUG-31318](https://bugreports.qt.io/browse/QTCREATORBUG-31318)) +* Fixed the highlighting of non-plain character literals + ([QTCREATORBUG-31342](https://bugreports.qt.io/browse/QTCREATORBUG-31342)) + +### QML + +* Fixed that context help could show help from the wrong module + ([QTCREATORBUG-31280](https://bugreports.qt.io/browse/QTCREATORBUG-31280)) + +### FakeVim + +* Fixed that invalid values could be set for the tabstop size + ([QTCREATORBUG-28082](https://bugreports.qt.io/browse/QTCREATORBUG-28082)) + +Projects +-------- + +### CMake + +* Fixed the application of changes to the `Initial Arguments` + ([QTCREATORBUG-31320](https://bugreports.qt.io/browse/QTCREATORBUG-31320)) + +Debugging +--------- + +### C++ + +* Fixed pretty printing for Qt 4 + ([QTCREATORBUG-31355](https://bugreports.qt.io/browse/QTCREATORBUG-31355)) + +Analyzer +-------- + +### Axivion + +* Fixed a crash when creating links from the issues table to column data + +### Valgrind + +* Fixed missing error kinds for newer Valgrind versions in the parser + ([QTCREATORBUG-31376](https://bugreports.qt.io/browse/QTCREATORBUG-31376)) + +Platforms +--------- + +### Docker + +* Fixed a crash when adding a Docker device while an application is running + on a Docker device + ([QTCREATORBUG-31364](https://bugreports.qt.io/browse/QTCREATORBUG-31364)) + +Credits for these changes go to: +-------------------------------- +Alessandro Portale +Alexandre Laurent +André Pönitz +Andrew Shark +Christian Kandeler +Christian Stenger +Cristian Adam +Eike Ziller +Leena Miettinen +Marco Bubke +Marcus Tillmanns +Mehdi Salem diff --git a/dist/changelog/template.md b/dist/changelog/template.md index 66e94906aea..e6a4b2fcb31 100644 --- a/dist/changelog/template.md +++ b/dist/changelog/template.md @@ -5,10 +5,9 @@ Qt Creator version 13 contains bug fixes and new features. The most important changes are listed in this document. For a complete list of changes, see the Git log for the Qt Creator sources that you can check out from -the public Git repository. For example: +the public Git repository or view online at - git clone git://code.qt.io/qt-creator/qt-creator.git - git log --cherry-pick --pretty=oneline origin/12.0..v13.0.0 + New plugins ----------- @@ -46,6 +45,8 @@ Editing ### SCXML +### FakeVim + ### Binary Files Projects @@ -83,6 +84,8 @@ Analyzer ### CTF Visualizer +### Valgrind + ### Cppcheck Terminal diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc index c3b9692c5ae..59e26fd0994 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc @@ -170,7 +170,7 @@ \image qtcreator-build-cmake-output.png {CMake output in Projects mode} - To clear the search results, select the \inlineimage icons/clean_pane_small.png + To clear the output from CMake, select the \inlineimage icons/clean_pane_small.png (\uicontrol Clear) button. You can enter a string in the \uicontrol Filter field to filter output. diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index f941fda579e..26884aee027 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -8,7 +8,7 @@ // ********************************************************************** /*! - \previouspage creator-testing.html + \previouspage creator-configuring-projects.html \page creator-debugging.html \nextpage creator-debugger-engines.html diff --git a/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc b/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc index 9bbfe729d93..7f2d57e8eb3 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc @@ -469,7 +469,7 @@ */ /*! - \page creator-how-to.html + \page creator-how-to-insert-multiple-cursors.html \previouspage creator-how-tos.html \ingroup creator-how-to-edit diff --git a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc index 01eb71f171f..ff05251fe30 100644 --- a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc +++ b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc @@ -2,7 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! - \page creator-run-settings-\B2Q.html + \page creator-run-settings-b2qt.html \previouspage creator-reference.html \ingroup creator-reference-run-configurations diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-select-build-systems.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-select-build-systems.qdoc index 1add6213144..2458cb4db72 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-how-to-select-build-systems.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-select-build-systems.qdoc @@ -2,9 +2,8 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! - \previouspage creator-project-creating.html \page creator-how-to-select-build-system.html - \nextpage creator-file-creating.html + \previouspage creator-how-tos.html \ingroup creator-how-to-projects-create diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc index 11c3c984301..aa9fd67a479 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc @@ -51,7 +51,7 @@ 14 4 - + ProjectExplorer.Project.Updater.FileVersion 10 @@ -82,7 +82,7 @@ - + ProjectExplorer.Project.PluginSettings diff --git a/share/qtcreator/CMakeLists.txt b/share/qtcreator/CMakeLists.txt index a0becf4281d..03a8ae2b75f 100644 --- a/share/qtcreator/CMakeLists.txt +++ b/share/qtcreator/CMakeLists.txt @@ -40,6 +40,24 @@ set(resource_files debugger/stdtypes.py debugger/utils.py debugger/loadorder.txt + + debugger-with-python2/qttypes.py + debugger-with-python2/personaltypes.py + debugger-with-python2/android_stdtypes.py + debugger-with-python2/README.txt + debugger-with-python2/gdbbridge.py + debugger-with-python2/cdbbridge.py + debugger-with-python2/lldbbridge.py + debugger-with-python2/misctypes.py + debugger-with-python2/opencvtypes.py + debugger-with-python2/libcpp_stdtypes.py + debugger-with-python2/creatortypes.py + debugger-with-python2/stdtypes.py + debugger-with-python2/gdbtracepoint.py + debugger-with-python2/utils.py + debugger-with-python2/boosttypes.py + debugger-with-python2/dumper.py + debugger-with-python2/pdbbridge.py ) # copy resource directories during build diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index e447c639cf5..a9427b2c608 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -288,8 +288,6 @@ class DumperBase(): # A hack to cover most of the changes from Qt 5 to 6 if version == 0x60000 and self.qtversionAtLeast6 is not None: return self.qtversionAtLeast6 - if version == 0x50000: # FIXME: This drops unknown 4.x for now - return True return self.qtVersion() >= version def qtVersionPing(self, typeid, size_for_qt5=-1): @@ -496,7 +494,7 @@ class DumperBase(): native_type = self.lookupNativeType(typename) if native_type is None: #sCANNOT DETERMINE SIZE FOR TYelf.dump_location() - self.dump_location() + #self.dump_location() self.warn("TYPEIDS: %s" % self.typeid_cache) self.warn("COULD NOT FIND TYPE '%s'" % typename) return None @@ -1070,7 +1068,7 @@ class DumperBase(): def check(self, exp): if not exp: self.warn('Check failed: %s' % exp) - self.dump_location() + #self.dump_location() raise RuntimeError('Check failed: %s' % exp) def check_typeid(self, typeid): @@ -3716,7 +3714,7 @@ typename)) return size, typeid typeobj = self.lookupType(typename) - self.warn("LOOKUP FIELD TYPE: %s TYPEOBJ: %s" % (typename, typeobj)) + #self.warn("LOOKUP FIELD TYPE: %s TYPEOBJ: %s" % (typename, typeobj)) if typeobj is not None: typeid = typeobj.typeid size = self.type_size(typeid) diff --git a/share/qtcreator/themes/light-palette.inc b/share/qtcreator/themes/light-palette.inc index 99fe763a8bd..069dd3d329d 100644 --- a/share/qtcreator/themes/light-palette.inc +++ b/share/qtcreator/themes/light-palette.inc @@ -5,7 +5,7 @@ PaletteWindowText=ff000000 PaletteWindowTextDisabled=PaletteTextDisabled PaletteBase=PaletteWindow PaletteBaseDisabled=PaletteWindowDisabled -PaletteAlternateBase=ff515151 +PaletteAlternateBase=fff7f7f7 ;PaletteAlternateBaseDisabled PaletteToolTipBase=PaletteDark ;PaletteToolTipBaseDisabled diff --git a/share/qtcreator/translations/qtcreator_fr.ts b/share/qtcreator/translations/qtcreator_fr.ts index 5f03828b04d..2f571f310a6 100644 --- a/share/qtcreator/translations/qtcreator_fr.ts +++ b/share/qtcreator/translations/qtcreator_fr.ts @@ -11548,6 +11548,14 @@ Cela ne peut être annulé. Cannot parse "%1". Impossible d'analyser « %1 ». + + Android package installation finished with success. + Installation du paquet Android terminée avec succès. + + + Android package installation failed. + Échec lors de l'installation du paquet Android. + Android package installation failed. %1 @@ -12873,7 +12881,7 @@ Exécutable : %2 Skip throwing assertions - Ignore les assertions + Ignorer les assertions Skips all assertions that test for thrown exceptions. @@ -13024,7 +13032,7 @@ Exécutable : %2 Run disabled tests - Exécute les tests désactivés + Exécuter les tests désactivés Executes disabled tests when performing a test run. @@ -13045,7 +13053,7 @@ Exécutable : %2 Throw on failure GTest option gtest_throw_on_failure - Envoi d'une exception en cas d'échec + Envoyer une exception en cas d'échec Turns assertion failures into C++ exceptions. @@ -13220,7 +13228,7 @@ Voir la documentation de Google Test pour plus d'informations sur les filtr Disable crash handler while debugging - Désactive le gestionnaire de plantage lors du débogage + Désactiver le gestionnaire de plantage lors du débogage Enables interrupting tests on assertions. @@ -13228,7 +13236,7 @@ Voir la documentation de Google Test pour plus d'informations sur les filtr Use XML output - Utilise la sortie XML + Utiliser la sortie XML XML output is recommended, because it avoids parsing issues, while plain text is more human readable.<p>Warning: Plain text misses some information, such as duration. @@ -13703,7 +13711,7 @@ Cela peut provoquer des problèmes lors de l'exécution. Automatically scroll results - Défile automatiquement les résultats + Faire défiler automatiquement les résultats Number of worker threads used when scanning for tests. @@ -13723,7 +13731,7 @@ Cela peut provoquer des problèmes lors de l'exécution. Group results by application - Regrouppe les résultats par application + Regrouper les résultats par application Process arguments @@ -13781,7 +13789,7 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Automatically run - Exécute automatiquement + Exécuter automatiquement Active Test Frameworks diff --git a/share/share.qbs b/share/share.qbs index 5ba7dea233e..64940074448 100644 --- a/share/share.qbs +++ b/share/share.qbs @@ -14,6 +14,7 @@ Product { "android/**/*", "cplusplus/**/*", "debugger/**/*", + "debugger-with-python2/**/*", "designer/**/*", "glsl/**/*", "jsonschemas/**/*", @@ -36,6 +37,7 @@ Product { "qml-type-descriptions/qbs-bundle.json", "qml-type-descriptions/qbs.qmltypes", "debugger/**/__pycache__/*", + "debugger-with-python2/**/__pycache__/*", ] } diff --git a/src/libs/extensionsystem/iplugin.cpp b/src/libs/extensionsystem/iplugin.cpp index a7d35a0c4db..7365e4908c4 100644 --- a/src/libs/extensionsystem/iplugin.cpp +++ b/src/libs/extensionsystem/iplugin.cpp @@ -30,7 +30,7 @@ */ /*! - \enum IPlugin::ShutdownFlag + \enum ExtensionSystem::IPlugin::ShutdownFlag This enum type holds whether the plugin is shut down synchronously or asynchronously. diff --git a/src/libs/solutions/tasking/tasktree.cpp b/src/libs/solutions/tasking/tasktree.cpp index f9c750e1289..b4cfa7e2a4c 100644 --- a/src/libs/solutions/tasking/tasktree.cpp +++ b/src/libs/solutions/tasking/tasktree.cpp @@ -629,19 +629,19 @@ private: */ /*! - \typealias CustomTask::Task + \typealias Tasking::CustomTask::Task Type alias for the task type associated with the custom task's \c Adapter. */ /*! - \typealias CustomTask::Deleter + \typealias Tasking::CustomTask::Deleter Type alias for the task's type deleter associated with the custom task's \c Adapter. */ /*! - \typealias CustomTask::TaskSetupHandler + \typealias Tasking::CustomTask::TaskSetupHandler Type alias for \c std::function. @@ -676,7 +676,7 @@ private: */ /*! - \typealias CustomTask::TaskDoneHandler + \typealias Tasking::CustomTask::TaskDoneHandler Type alias for \c std::function or DoneResult. @@ -865,7 +865,7 @@ private: */ /*! - \variable nullItem + \variable Tasking::nullItem A convenient global group's element indicating a no-op item. @@ -883,7 +883,7 @@ private: */ /*! - \variable successItem + \variable Tasking::successItem A convenient global executable element containing an empty, successful, synchronous task. @@ -912,7 +912,7 @@ private: */ /*! - \variable errorItem + \variable Tasking::errorItem A convenient global executable element containing an empty, erroneous, synchronous task. @@ -941,7 +941,7 @@ private: */ /*! - \variable sequential + \variable Tasking::sequential A convenient global group's element describing the sequential execution mode. This is the default execution mode of the Group element. @@ -956,7 +956,7 @@ private: */ /*! - \variable parallel + \variable Tasking::parallel A convenient global group's element describing the parallel execution mode. All the direct child tasks of a group are started after the group is started, @@ -967,7 +967,7 @@ private: */ /*! - \variable parallelIdealThreadCountLimit + \variable Tasking::parallelIdealThreadCountLimit A convenient global group's element describing the parallel execution mode with a limited number of tasks running simultanously. The limit is equal to the ideal number of threads excluding the calling thread. @@ -981,39 +981,39 @@ private: */ /*! - \variable stopOnError + \variable Tasking::stopOnError A convenient global group's element describing the StopOnError workflow policy. This is the default workflow policy of the Group element. */ /*! - \variable continueOnError + \variable Tasking::continueOnError A convenient global group's element describing the ContinueOnError workflow policy. */ /*! - \variable stopOnSuccess + \variable Tasking::stopOnSuccess A convenient global group's element describing the StopOnSuccess workflow policy. */ /*! - \variable continueOnSuccess + \variable Tasking::continueOnSuccess A convenient global group's element describing the ContinueOnSuccess workflow policy. */ /*! - \variable stopOnSuccessOrError + \variable Tasking::stopOnSuccessOrError A convenient global group's element describing the StopOnSuccessOrError workflow policy. */ /*! - \variable finishAllAndSuccess + \variable Tasking::finishAllAndSuccess A convenient global group's element describing the FinishAllAndSuccess workflow policy. */ /*! - \variable finishAllAndError + \variable Tasking::finishAllAndError A convenient global group's element describing the FinishAllAndError workflow policy. */ @@ -1104,7 +1104,7 @@ private: */ /*! - \typealias GroupItem::GroupSetupHandler + \typealias Tasking::GroupItem::GroupSetupHandler Type alias for \c std::function. @@ -1134,7 +1134,7 @@ private: */ /*! - \typealias GroupItem::GroupDoneHandler + \typealias Tasking::GroupItem::GroupDoneHandler Type alias for \c std::function or DoneResult. @@ -3607,13 +3607,13 @@ void TimeoutTaskAdapter::start() } /*! - \typealias TaskTreeTask + \typealias Tasking::TaskTreeTask Type alias for the CustomTask, to be used inside recipes, associated with the TaskTree task. */ /*! - \typealias TimeoutTask + \typealias Tasking::TimeoutTask Type alias for the CustomTask, to be used inside recipes, associated with the \c std::chrono::milliseconds type. \c std::chrono::milliseconds is used to set up the diff --git a/src/libs/utils/qrcparser.cpp b/src/libs/utils/qrcparser.cpp index 5b27cac49fa..2f9671592d6 100644 --- a/src/libs/utils/qrcparser.cpp +++ b/src/libs/utils/qrcparser.cpp @@ -93,12 +93,12 @@ private: */ /*! - \typedef QrcParser::Ptr + \typedef Utils::QrcParser::Ptr Represents pointers. */ /*! - \typedef QrcParser::ConstPtr + \typedef Utils::QrcParser::ConstPtr Represents constant pointers. */ diff --git a/src/libs/utils/textfileformat.cpp b/src/libs/utils/textfileformat.cpp index 0fea53720f3..9257931b143 100644 --- a/src/libs/utils/textfileformat.cpp +++ b/src/libs/utils/textfileformat.cpp @@ -216,9 +216,9 @@ TextFileFormat::ReadResult readTextFile(const FilePath &filePath, const QTextCod Reads a text file from \a filePath into a list of strings, \a plainTextList using \a defaultCodec and text file format \a format. - Returns whether decoding was possible without errors. If errors occur, - returns an error message, \a errorString and a sample error, - \a decodingErrorSample. + Returns whether decoding was possible without errors. If an errors occur + \a errorString is set to the error message, and \a decodingErrorSample is + set to a snippet that failed to decode. */ TextFileFormat::ReadResult @@ -239,8 +239,9 @@ TextFileFormat::ReadResult Reads a text file from \a filePath into a string, \a plainText using \a defaultCodec and text file format \a format. - Returns whether decoding was possible without errors. - + Returns whether decoding was possible without errors. If an errors occur + \a errorString is set to the error message, and \a decodingErrorSample is + set to a snippet that failed to decode. */ TextFileFormat::ReadResult diff --git a/src/plugins/axivion/axivionoutputpane.cpp b/src/plugins/axivion/axivionoutputpane.cpp index 77c3b1dad81..dc6ee0da26b 100644 --- a/src/plugins/axivion/axivionoutputpane.cpp +++ b/src/plugins/axivion/axivionoutputpane.cpp @@ -514,7 +514,7 @@ static QList linksForIssue(const std::map &i const QString &line) { QList columns; auto it = issueRow.find(path); - if (it != end) { + if (it != end && !it->second.isNull()) { Link link{ FilePath::fromUserInput(it->second.getString()) }; columns.append(findColumn(it->first)); it = issueRow.find(line); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index c672515d7b2..d397f0fd1cc 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -617,10 +617,10 @@ void CMakeBuildSettingsWidget::reconfigureWithInitialParameters() if (reply != QMessageBox::Yes) return; - m_buildConfig->cmakeBuildSystem()->clearCMakeCache(); - updateInitialCMakeArguments(); + m_buildConfig->cmakeBuildSystem()->clearCMakeCache(); + if (ProjectExplorerPlugin::saveModifiedFiles()) m_buildConfig->cmakeBuildSystem()->runCMake(); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 740c2ec5564..596b11e45b1 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1240,6 +1240,11 @@ void CMakeBuildSystem::clearCMakeCache() path.removeRecursively(); emit configurationCleared(); +} + +void CMakeBuildSystem::disableCMakeBuildMenuActions() +{ + emitParsingStarted(); emitParsingFinished(false); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index 32966c64bbb..b6827385908 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -77,6 +77,7 @@ public: bool persistCMakeState(); void clearCMakeCache(); + void disableCMakeBuildMenuActions(); // Context menu actions: void buildCMakeTarget(const QString &buildTarget); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 0ab987d978a..9037fb0ad96 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -263,6 +263,7 @@ void CMakeManager::clearCMakeCache(BuildSystem *buildSystem) QTC_ASSERT(cmakeBuildSystem, return); cmakeBuildSystem->clearCMakeCache(); + cmakeBuildSystem->disableCMakeBuildMenuActions(); } void CMakeManager::runCMake(BuildSystem *buildSystem) diff --git a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp index 88431454fef..5a06598a383 100644 --- a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp +++ b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp @@ -129,7 +129,7 @@ using namespace Internal; * name. */ -/*! \enum ReadOnlyFilesDialog::ReadOnlyResult +/*! \enum Core::ReadOnlyFilesDialog::ReadOnlyResult This enum holds the operations that are allowed to make the file writable. \value RO_Cancel diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 5de0bcec80b..a13483ea430 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -208,7 +208,7 @@ void EditorManagerPlaceHolder::showEvent(QShowEvent *) */ /*! - \enum EditorManager::OpenEditorFlag + \enum Core::EditorManager::OpenEditorFlag This enum specifies settings for opening a file in an editor. diff --git a/src/plugins/coreplugin/idocument.cpp b/src/plugins/coreplugin/idocument.cpp index d16f284b4a4..ff766f60697 100644 --- a/src/plugins/coreplugin/idocument.cpp +++ b/src/plugins/coreplugin/idocument.cpp @@ -72,7 +72,7 @@ */ /*! - \enum IDocument::OpenResult + \enum Core::IDocument::OpenResult The OpenResult enum describes whether a file was successfully opened. @@ -87,13 +87,13 @@ */ /*! - \enum IDocument::ReloadSetting + \enum Core::IDocument::ReloadSetting \internal */ /*! - \enum IDocument::ChangeTrigger + \enum Core::IDocument::ChangeTrigger The ChangeTrigger enum describes whether a file was changed from \QC internally or from the outside. @@ -107,7 +107,7 @@ */ /*! - \enum IDocument::ChangeType + \enum Core::IDocument::ChangeType The ChangeType enum describes the way in which the file changed. @@ -121,7 +121,7 @@ */ /*! - \enum IDocument::ReloadFlag + \enum Core::IDocument::ReloadFlag The ReloadFlag enum describes if a file should be reloaded from disk. diff --git a/src/plugins/coreplugin/imode.cpp b/src/plugins/coreplugin/imode.cpp index b314dabf345..e0fe5fa837b 100644 --- a/src/plugins/coreplugin/imode.cpp +++ b/src/plugins/coreplugin/imode.cpp @@ -74,7 +74,7 @@ public: */ /*! - \property IMode::enabled + \property Core::IMode::enabled This property holds whether the mode is enabled. @@ -82,7 +82,7 @@ public: */ /*! - \property IMode::displayName + \property Core::IMode::displayName This property holds the display name of the mode. @@ -90,7 +90,7 @@ public: */ /*! - \property IMode::icon + \property Core::IMode::icon This property holds the icon of the mode. @@ -99,7 +99,7 @@ public: */ /*! - \property IMode::priority + \property Core::IMode::priority This property holds the priority of the mode. @@ -110,7 +110,7 @@ public: */ /*! - \property IMode::id + \property Core::IMode::id This property holds the ID of the mode. */ diff --git a/src/plugins/coreplugin/ioutputpane.cpp b/src/plugins/coreplugin/ioutputpane.cpp index d10c55eaad0..1914239e1d7 100644 --- a/src/plugins/coreplugin/ioutputpane.cpp +++ b/src/plugins/coreplugin/ioutputpane.cpp @@ -17,7 +17,7 @@ namespace Core { */ /*! - \enum IOutputPane::Flag + \enum Core::IOutputPane::Flag This enum type controls the behavior of the output pane when it is requested to show itself. diff --git a/src/plugins/coreplugin/locator/ilocatorfilter.cpp b/src/plugins/coreplugin/locator/ilocatorfilter.cpp index 44e3e0181b9..9d921866bb1 100644 --- a/src/plugins/coreplugin/locator/ilocatorfilter.cpp +++ b/src/plugins/coreplugin/locator/ilocatorfilter.cpp @@ -884,7 +884,8 @@ void ILocatorFilter::setConfigurable(bool configurable) /*! Shows the standard configuration dialog with options for the prefix string - and for isIncludedByDefault(). The \a additionalWidget is added at the top. + and for isIncludedByDefault(). \a parent is used as the dialog's parent. + The \a additionalWidget is added at the top. Ownership of \a additionalWidget stays with the caller, but its parent is reset to \c nullptr. diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp index 5051657afff..79853794480 100644 --- a/src/plugins/cppeditor/cpphighlighter.cpp +++ b/src/plugins/cppeditor/cpphighlighter.cpp @@ -472,6 +472,9 @@ void CppHighlighter::highlightStringLiteral(QStringView text, const CPlusPlus::T case T_UTF8_STRING_LITERAL: case T_UTF16_STRING_LITERAL: case T_UTF32_STRING_LITERAL: + case T_WIDE_CHAR_LITERAL: + case T_UTF16_CHAR_LITERAL: + case T_UTF32_CHAR_LITERAL: break; default: if (!tk.userDefinedLiteral()) { // Simple case: No prefix, no suffix. @@ -481,16 +484,17 @@ void CppHighlighter::highlightStringLiteral(QStringView text, const CPlusPlus::T } } + const char quote = tk.isStringLiteral() ? '"' : '\''; int stringOffset = 0; if (!tk.f.joined) { - stringOffset = text.indexOf('"', tk.utf16charsBegin()); + stringOffset = text.indexOf(quote, tk.utf16charsBegin()); QTC_ASSERT(stringOffset > 0, return); setFormat(tk.utf16charsBegin(), stringOffset - tk.utf16charsBegin(), formatForCategory(C_KEYWORD)); } int operatorOffset = tk.utf16charsBegin() + tk.utf16chars(); if (tk.userDefinedLiteral()) { - const int closingQuoteOffset = text.lastIndexOf('"', operatorOffset); + const int closingQuoteOffset = text.lastIndexOf(quote, operatorOffset); QTC_ASSERT(closingQuoteOffset >= tk.utf16charsBegin(), return); operatorOffset = closingQuoteOffset + 1; } @@ -498,7 +502,10 @@ void CppHighlighter::highlightStringLiteral(QStringView text, const CPlusPlus::T formatForCategory(C_STRING)); if (const int operatorLength = tk.utf16charsBegin() + tk.utf16chars() - operatorOffset; operatorLength > 0) { - setFormat(operatorOffset, operatorLength, formatForCategory(C_OPERATOR)); + setFormat( + operatorOffset, + operatorLength, + formatForCategory(tk.userDefinedLiteral() ? C_OVERLOADED_OPERATOR : C_OPERATOR)); } } @@ -627,6 +634,12 @@ private slots: << 49 << 1 << 49 << 1 << C_STRING; QTest::newRow("multi-line raw string literal with consecutive closing parens (suffix)") << 49 << 2 << 49 << 3 << C_KEYWORD; + QTest::newRow("wide char literal with user-defined suffix (prefix)") + << 73 << 16 << 73 << 16 << C_KEYWORD; + QTest::newRow("wide char literal with user-defined suffix (content)") + << 73 << 17 << 73 << 18 << C_STRING; + QTest::newRow("wide char literal with user-defined suffix (suffix)") + << 73 << 20 << 73 << 22 << C_OVERLOADED_OPERATOR; } void test() diff --git a/src/plugins/cppeditor/testcases/highlightingtestcase.cpp b/src/plugins/cppeditor/testcases/highlightingtestcase.cpp index 92b4e21a260..049bc42ecfb 100644 --- a/src/plugins/cppeditor/testcases/highlightingtestcase.cpp +++ b/src/plugins/cppeditor/testcases/highlightingtestcase.cpp @@ -68,3 +68,6 @@ static void parenTest2() } } + +wchar_t operator ""_wc(const wchar_t c) { return c; } +const auto c = L'c'_wc; diff --git a/src/plugins/cppeditor/typehierarchybuilder.cpp b/src/plugins/cppeditor/typehierarchybuilder.cpp index a4266955054..a18945f065b 100644 --- a/src/plugins/cppeditor/typehierarchybuilder.cpp +++ b/src/plugins/cppeditor/typehierarchybuilder.cpp @@ -185,6 +185,7 @@ void TypeHierarchyBuilder::buildDerived(const std::optional> &futu return; Document::Ptr doc = snapshot.document(fileName); if ((_candidates.contains(fileName) && !_candidates.value(fileName).contains(symbolName)) + || !symbol->identifier() || !doc->control()->findIdentifier(symbol->identifier()->chars(), symbol->identifier()->size())) { continue; diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 2cc6b60ebb1..48a3acd60b7 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1827,6 +1827,7 @@ bool WatchModel::contextMenuEvent(const ItemViewEvent &ev) menu->addAction(s.settingsDialog.action()); // useDebuggingHelpers/useDynamicType have no auto-apply, but need to be persisted on triggered + connect(this, &WatchModel::dataChanged, menu, &QMenu::close); connect(debugHelperAction, &QAction::triggered, &s.useDebuggingHelpers, &BoolAspect::writeSettings, Qt::UniqueConnection); connect(dynamicTypeAction, &QAction::triggered, diff --git a/src/plugins/designer/formwindowfile.cpp b/src/plugins/designer/formwindowfile.cpp index c4b59131e53..aab54d96313 100644 --- a/src/plugins/designer/formwindowfile.cpp +++ b/src/plugins/designer/formwindowfile.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "formwindowfile.h" +#include "qtcreatorintegration.h" #include "designerconstants.h" #include "resourcehandler.h" @@ -230,6 +231,10 @@ bool FormWindowFile::writeFile(const Utils::FilePath &filePath, QString *errorSt { if (Designer::Constants::Internal::debug) qDebug() << Q_FUNC_INFO << this->filePath() << filePath; + auto *integration = qobject_cast(m_formWindow->core()->integration()); + Q_ASSERT(integration); + if (!integration->setQtVersionFromFile(filePath)) + integration->resetQtVersion(); return write(filePath, format(), m_formWindow->contents(), errorString); } diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp index e9a88dd2b57..3d8362180c2 100644 --- a/src/plugins/designer/qtcreatorintegration.cpp +++ b/src/plugins/designer/qtcreatorintegration.cpp @@ -37,6 +37,8 @@ #include #include +#include + #include #include #include @@ -45,16 +47,20 @@ #include #include +#include #include #include #include #include +#include #include #include #include +#include #include #include +#include Q_LOGGING_CATEGORY(log, "qtc.designer", QtWarningMsg); @@ -84,6 +90,17 @@ static void reportRenamingError(const QString &oldName, const QString &reason) .arg(oldName, reason)); } +static std::optional qtVersionFromProject(const Project *project) +{ + if (const auto *target = project->activeTarget()) { + if (const auto *kit = target->kit(); kit->isValid()) { + if (const auto *qtVersion = QtSupport::QtKitAspect::qtVersion(kit)) + return qtVersion->qtVersion(); + } + } + return std::nullopt; +} + class QtCreatorIntegration::Private { public: @@ -143,6 +160,10 @@ QtCreatorIntegration::QtCreatorIntegration(QDesignerFormEditorInterface *core, Q } } }); + + auto *fwm = core->formWindowManager(); + connect(fwm, &QDesignerFormWindowManagerInterface::activeFormWindowChanged, + this, &QtCreatorIntegration::slotActiveFormWindowChanged); } QtCreatorIntegration::~QtCreatorIntegration() @@ -433,6 +454,40 @@ static ClassDocumentPtrPair return ClassDocumentPtrPair(0, Document::Ptr()); } +void QtCreatorIntegration::slotActiveFormWindowChanged(QDesignerFormWindowInterface *formWindow) +{ + if (formWindow == nullptr + || !setQtVersionFromFile(Utils::FilePath::fromString(formWindow->fileName()))) { + resetQtVersion(); + } +} + +// Set the file's Qt version on the integration for Qt Designer to write +// it out in the appropriate format (PYSIDE-2492, scoped enum support). +bool QtCreatorIntegration::setQtVersionFromFile(const Utils::FilePath &filePath) +{ + if (const auto *uiProject = ProjectManager::projectForFile(filePath)) { + if (auto versionOpt = qtVersionFromProject(uiProject)) { + setQtVersion(versionOpt.value()); + return true; + } + } + return false; +} + +#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0) +// FIXME: To be replaced by a real property setter on QDesignerIntegration +void QtCreatorIntegration::setQtVersion(const QVersionNumber &version) +{ + setProperty("qtVersion", QVariant::fromValue(version)); +} +#endif // < 6.9 + +void QtCreatorIntegration::resetQtVersion() +{ + setQtVersion(QLibraryInfo::version()); +} + void QtCreatorIntegration::slotNavigateToSlot(const QString &objectName, const QString &signalSignature, const QStringList ¶meterNames) { diff --git a/src/plugins/designer/qtcreatorintegration.h b/src/plugins/designer/qtcreatorintegration.h index 31e3cdcb32c..1f1496e7360 100644 --- a/src/plugins/designer/qtcreatorintegration.h +++ b/src/plugins/designer/qtcreatorintegration.h @@ -8,8 +8,11 @@ QT_BEGIN_NAMESPACE class QUrl; +class QVersionNumber; QT_END_NAMESPACE +namespace Utils { class FilePath; } + namespace Designer { namespace Internal { @@ -27,10 +30,14 @@ public: void updateSelection() override; + bool setQtVersionFromFile(const Utils::FilePath &filePath); + void resetQtVersion(); + signals: void creatorHelpRequested(const QUrl &url); private: + void slotActiveFormWindowChanged(QDesignerFormWindowInterface *formWindow); void slotNavigateToSlot(const QString &objectName, const QString &signalSignature, const QStringList ¶meterNames); void slotDesignerHelpRequested(const QString &manual, const QString &document); void slotSyncSettingsToDesigner(); @@ -44,6 +51,10 @@ private: void handleSymbolRenameStage2(QDesignerFormWindowInterface *formWindow, const QString &newName, const QString &oldName); +#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0) + void setQtVersion(const QVersionNumber &version); +#endif + class Private; Private * const d; }; diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp index 35cdce0bafb..1146ac894b4 100644 --- a/src/plugins/fakevim/fakevimactions.cpp +++ b/src/plugins/fakevim/fakevimactions.cpp @@ -114,6 +114,7 @@ FakeVimSettings::FakeVimSettings() tabStop.setToolTip(Tr::tr("Vim tabstop option.")); #ifndef FAKEVIM_STANDALONE + tabStop.setRange(1, 99); backspace.setDisplayStyle(FvStringAspect::LineEditDisplay); isKeyword.setDisplayStyle(FvStringAspect::LineEditDisplay); diff --git a/src/plugins/lua/bindings/fetch.cpp b/src/plugins/lua/bindings/fetch.cpp index 9d1c9a45e5f..4e7977aa72f 100644 --- a/src/plugins/lua/bindings/fetch.cpp +++ b/src/plugins/lua/bindings/fetch.cpp @@ -75,6 +75,7 @@ void setupFetchModule() Module() { setSettingsGroup("Lua.Fetch"); + setAutoApply(false); pluginsAllowedToFetch.setSettingsKey("pluginsAllowedToFetch"); pluginsAllowedToFetch.setLabelText("Plugins allowed to fetch data from the internet"); diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 7b281f240aa..344454a05b0 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -1140,6 +1140,7 @@ LinuxDevicePrivate::LinuxDevicePrivate(LinuxDevice *parent) LinuxDevicePrivate::~LinuxDevicePrivate() { + QMutexLocker locker(&m_shellMutex); auto closeShell = [this] { m_shellThread.quit(); m_shellThread.wait(); diff --git a/src/plugins/valgrind/xmlprotocol/error.h b/src/plugins/valgrind/xmlprotocol/error.h index a9dd3278b8f..209b3199482 100644 --- a/src/plugins/valgrind/xmlprotocol/error.h +++ b/src/plugins/valgrind/xmlprotocol/error.h @@ -38,7 +38,14 @@ enum MemcheckError Leak_PossiblyLost, Leak_StillReachable, Leak_IndirectlyLost, - ReallocSizeZero + ReallocSizeZero, + InvalidSize, + InvalidSizeAndAlignment, + InvalidAlignment, + MismatchedAllocateDeallocateSize, + MismatchedAllocateDeallocateAlignment, + FishyValue, + // CoreMemError // questionable, seems to be unlikely to happen }; Q_ENUM_NS(MemcheckError); diff --git a/src/plugins/vcpkg/vcpkgsettings.cpp b/src/plugins/vcpkg/vcpkgsettings.cpp index 160f57ef6ed..a6b43fdbdb3 100644 --- a/src/plugins/vcpkg/vcpkgsettings.cpp +++ b/src/plugins/vcpkg/vcpkgsettings.cpp @@ -35,10 +35,12 @@ VcpkgSettings::VcpkgSettings() vcpkgRoot.setSettingsKey("VcpkgRoot"); vcpkgRoot.setExpectedKind(PathChooser::ExistingDirectory); - FilePath defaultPath = Environment::systemEnvironment().searchInPath(Constants::VCPKG_COMMAND) - .parentDir(); + FilePath defaultPath = FilePath::fromUserInput( + qtcEnvironmentVariable(Constants::ENVVAR_VCPKG_ROOT)); + if (!defaultPath.isDir()) - defaultPath = FilePath::fromUserInput(qtcEnvironmentVariable(Constants::ENVVAR_VCPKG_ROOT)); + defaultPath = Environment::systemEnvironment().searchInPath(Constants::VCPKG_COMMAND).parentDir(); + if (defaultPath.isDir()) vcpkgRoot.setDefaultPathValue(defaultPath); diff --git a/src/shared/qbs b/src/shared/qbs index 70e60671e71..34e91f7a5d8 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 70e60671e71730f294530349d1fc57cec9d215ee +Subproject commit 34e91f7a5d825c9462d59e2283be628b9d5b5817