From 085edb502f4a41e1cd22beb768161bd18a148bf6 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 30 Aug 2024 10:37:17 +0200 Subject: [PATCH 1/8] Update qbs submodule to HEAD of 2.4 branch Change-Id: I6d45cf83662542d6dd8a0762579c1a9a749c2851 Reviewed-by: Christian Stenger --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index 64e82d38558..f2906471ba3 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 64e82d38558dccc0ddfb1bdcefe11d13a43fafaf +Subproject commit f2906471ba374685347926432c2cbbca127cfb75 From 69c61143f3693f26bd803090325fe0b67eeee56e Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 30 Aug 2024 11:58:45 +0200 Subject: [PATCH 2/8] QmlJSEditor: Remove dependency on CMakeProjectManager again We must not needlessly introduce dependencies on specific build systems. Amends 1b57e95c14d78119bbf8358bb52dfc1be0cde140. Change-Id: I2d7c7c7db06defe57b113e901a416cde40dfe3b8 Reviewed-by: Sami Shalayel Reviewed-by: Christian Stenger --- .../cmakeprojectmanager/cmakebuildsystem.cpp | 6 +++++ .../cmakeprojectmanager/cmakebuildsystem.h | 1 + .../cmakelocatorfilter.cpp | 6 ++--- .../cmakeprojectmanager/targethelper.cpp | 27 +++++-------------- .../cmakeprojectmanager/targethelper.h | 10 +++---- src/plugins/projectexplorer/buildsystem.h | 1 + src/plugins/projectexplorer/project.cpp | 9 +++++++ src/plugins/projectexplorer/project.h | 2 ++ src/plugins/qmljseditor/CMakeLists.txt | 2 +- src/plugins/qmljseditor/qmltaskmanager.cpp | 6 ++--- 10 files changed, 36 insertions(+), 34 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index a150d82f9a5..a56d82c9342 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -15,6 +15,7 @@ #include "cmakespecificsettings.h" #include "cmaketoolmanager.h" #include "projecttreehelper.h" +#include "targethelper.h" #include @@ -1014,6 +1015,11 @@ bool CMakeBuildSystem::renameFile(Node *context, return false; } +void CMakeBuildSystem::buildNamedTarget(const QString &target) +{ + CMakeProjectManager::Internal::buildTarget(this, target); +} + FilePaths CMakeBuildSystem::filesGeneratedFrom(const FilePath &sourceFile) const { FilePath project = projectDirectory(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index b6827385908..8223a7c98d7 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -64,6 +64,7 @@ public: bool renameFile(ProjectExplorer::Node *context, const Utils::FilePath &oldFilePath, const Utils::FilePath &newFilePath) final; + void buildNamedTarget(const QString &target) final; Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &sourceFile) const final; QString name() const final { return QLatin1String("cmake"); } diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index 01ed02bdb0c..9dc375d22c6 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -23,7 +23,7 @@ using namespace Utils; namespace CMakeProjectManager::Internal { -using BuildAcceptor = std::function; +using BuildAcceptor = std::function; // CMakeBuildTargetFilter @@ -62,8 +62,8 @@ static LocatorMatcherTasks cmakeMatchers(const BuildAcceptor &acceptor) LocatorFilterEntry entry; entry.displayName = displayName; if (acceptor) { - entry.acceptor = [projectPath, displayName, acceptor] { - acceptor(projectPath, displayName); + entry.acceptor = [bs, displayName, acceptor] { + acceptor(bs, displayName); return AcceptResult(); }; } diff --git a/src/plugins/cmakeprojectmanager/targethelper.cpp b/src/plugins/cmakeprojectmanager/targethelper.cpp index 3d18deaa84a..c058f0ad482 100644 --- a/src/plugins/cmakeprojectmanager/targethelper.cpp +++ b/src/plugins/cmakeprojectmanager/targethelper.cpp @@ -4,34 +4,21 @@ #include "targethelper.h" #include +#include #include -#include -#include -#include #include "cmakebuildstep.h" -#include "cmakebuildsystem.h" -#include "cmakeproject.h" -namespace CMakeProjectManager { +namespace CMakeProjectManager::Internal { -void buildTarget(const Utils::FilePath &projectPath, const QString &targetName) +void buildTarget(const ProjectExplorer::BuildSystem *buildSystem, const QString &targetName) { - // Get the project containing the target selected - const auto cmakeProject = qobject_cast(Utils::findOrDefault( - ProjectExplorer::ProjectManager::projects(), [projectPath](ProjectExplorer::Project *p) { - return p->projectFilePath() == projectPath; - })); - if (!cmakeProject || !cmakeProject->activeTarget() - || !cmakeProject->activeTarget()->activeBuildConfiguration()) - return; - - if (ProjectExplorer::BuildManager::isBuilding(cmakeProject)) + if (ProjectExplorer::BuildManager::isBuilding(buildSystem->project())) ProjectExplorer::BuildManager::cancel(); // Find the make step const ProjectExplorer::BuildStepList *buildStepList - = cmakeProject->activeTarget()->activeBuildConfiguration()->buildSteps(); + = buildSystem->buildConfiguration()->buildSteps(); const auto buildStep = buildStepList->firstOfType(); if (!buildStep) return; @@ -41,8 +28,8 @@ void buildTarget(const Utils::FilePath &projectPath, const QString &targetName) buildStep->setBuildTargets({targetName}); // Build - ProjectExplorer::BuildManager::buildProjectWithDependencies(cmakeProject); + ProjectExplorer::BuildManager::buildProjectWithDependencies(buildSystem->project()); buildStep->setBuildTargets(oldTargets); } -} // namespace CMakeProjectManager +} // namespace CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/targethelper.h b/src/plugins/cmakeprojectmanager/targethelper.h index 1053d2b6d1b..7bd8680432b 100644 --- a/src/plugins/cmakeprojectmanager/targethelper.h +++ b/src/plugins/cmakeprojectmanager/targethelper.h @@ -3,12 +3,10 @@ #pragma once -#include "cmake_global.h" +namespace ProjectExplorer { class BuildSystem; } -#include +namespace CMakeProjectManager::Internal { -namespace CMakeProjectManager { +void buildTarget(const ProjectExplorer::BuildSystem *buildSystem, const QString &targetName); -CMAKE_EXPORT void buildTarget(const Utils::FilePath &projectPath, const QString &targetName); - -} // namespace CMakeProjectManager +} // namespace CMakeProjectManager::Internal diff --git a/src/plugins/projectexplorer/buildsystem.h b/src/plugins/projectexplorer/buildsystem.h index 276427a7f91..19f32d83f87 100644 --- a/src/plugins/projectexplorer/buildsystem.h +++ b/src/plugins/projectexplorer/buildsystem.h @@ -82,6 +82,7 @@ public: const Utils::FilePath &newFilePath); virtual bool addDependencies(Node *context, const QStringList &dependencies); virtual bool supportsAction(Node *context, ProjectAction action, const Node *node) const; + virtual void buildNamedTarget(const QString &target) { Q_UNUSED(target) } virtual QString name() const = 0; // Owned by the build system. Use only in main thread. Can go away at any time. diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index a46f5d5eefc..b72a4fdaa6c 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -1071,6 +1071,15 @@ void Project::configureAsExampleProject(Kit * /*kit*/) { } +void Project::buildTarget(const QString &target) +{ + if (!activeTarget() || !activeTarget()->activeBuildConfiguration() + || !activeTarget()->activeBuildConfiguration()->buildSystem()) { + return; + } + activeTarget()->activeBuildConfiguration()->buildSystem()->buildNamedTarget(target); +} + bool Project::hasMakeInstallEquivalent() const { return d->m_hasMakeInstallEquivalent; diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index ec6c341bb2f..c043a7d2f98 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -129,6 +129,8 @@ public: bool needsBuildConfigurations() const; virtual void configureAsExampleProject(ProjectExplorer::Kit *kit); + void buildTarget(const QString &target); + virtual ProjectImporter *projectImporter() const; virtual DeploymentKnowledge deploymentKnowledge() const { return DeploymentKnowledge::Bad; } diff --git a/src/plugins/qmljseditor/CMakeLists.txt b/src/plugins/qmljseditor/CMakeLists.txt index 6f42b6794e5..122bb39aed1 100644 --- a/src/plugins/qmljseditor/CMakeLists.txt +++ b/src/plugins/qmljseditor/CMakeLists.txt @@ -1,5 +1,5 @@ add_qtc_plugin(QmlJSEditor - DEPENDS LanguageUtils QmlJS QmlEditorWidgets CMakeProjectManager + DEPENDS LanguageUtils QmlJS QmlEditorWidgets PLUGIN_DEPENDS Core ProjectExplorer QmlJSTools TextEditor LanguageClient SOURCES qmlexpressionundercursor.cpp qmlexpressionundercursor.h diff --git a/src/plugins/qmljseditor/qmltaskmanager.cpp b/src/plugins/qmljseditor/qmltaskmanager.cpp index 46cabe60992..5a4828d88b2 100644 --- a/src/plugins/qmljseditor/qmltaskmanager.cpp +++ b/src/plugins/qmljseditor/qmltaskmanager.cpp @@ -5,7 +5,6 @@ #include "qmljseditorconstants.h" #include "qmllssettings.h" -#include #include #include #include @@ -120,11 +119,10 @@ void QmlTaskManager::updateSemanticMessagesNow() static void triggerQmllintCMakeTarget() { - CMakeProjectManager::buildTarget( - ProjectManager::startupProject()->projectFilePath(), Constants::QMLLINT_BUILD_TARGET); + if (ProjectManager::startupProject()) + ProjectManager::startupProject()->buildTarget(Constants::QMLLINT_BUILD_TARGET); } - void QmlTaskManager::updateMessagesNow(bool updateSemantic) { // heuristic: qmllint will output meaningful warnings if qmlls is enabled From 1fdeed37f4e1292fc719b9d6cb36e993e790a72f Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 27 Aug 2024 15:16:40 +0200 Subject: [PATCH 3/8] Doc: Describe accessibility features in "Configuring Qt Creator" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: QTCREATORBUG-31440 Change-Id: Id5c7f662ea188e34ce8e68607cc3a619fa0c4028 Reviewed-by: Kai Köhne --- .../creator-only/creator-configuring.qdoc | 112 ++++++++++++------ 1 file changed, 73 insertions(+), 39 deletions(-) diff --git a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc index 388801786f3..fa7b1ddc554 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc @@ -22,10 +22,12 @@ Qt versions and compilers by adding the paths to them and by creating \l{Kits}{kits} that use them. - To make \QC behave more like your favorite code editor or IDE, - change the preferences for keyboard shortcuts, color schemes, generic - highlighting, code snippets, and version control systems. Manage plugins - to turn on and off \QC features. + To make \QC behave more like your favorite code editor or IDE, change the + preferences for generic highlighting, code snippets, and version control + systems. Manage plugins to turn on and off \QC features. + + To make \QC more accessible, use keyboard navigation or adjust colors and + zoom levels. The following sections summarize the options that you have and point you to detailed information to help you specify any required settings and to make @@ -69,41 +71,6 @@ For more information, see \l{Manage Kits}{How To: Manage Kits} and \l{Develop for Devices}{How To: Develop for Devices}. - \section1 Changing Keyboard Shortcuts - - You can use \QC with your favorite keyboard shortcuts. - - To view and edit all keyboard shortcuts defined in \QC, go to \preferences > - \uicontrol Environment > \uicontrol Keyboard. For more information, see - \l{Keyboard Shortcuts}. - - \section1 Changing Color Schemes - - Themes set the appearance of the \QC UI: widgets, colors, and icons. - - To switch themes, go to \preferences > \uicontrol Environment > - \uicontrol Interface and select a theme in \uicontrol Theme. - - Use the \QC text and code editors with your favorite color scheme that sets - highlighting of code elements and the background color. Select one of the - predefined color schemes or create custom ones. The color schemes apply to - highlighting C++ files, QML files, and generic files. - - To change the color scheme, go to \preferences > - \uicontrol {Text Editor} > \uicontrol {Font & Colors}. - - For more information, see \l{Change editor colors}. - - \l{https://api.kde.org/frameworks/syntax-highlighting/html/index.html} - {KSyntaxHighlighting} offers generic highlighting. It is the syntax - highlighting engine for Kate syntax definitions. \QC comes with most of - the commonly used syntax files, and you can download additional files. - - To download and use highlight definition files, go to \preferences > - \uicontrol {Text Editor} > \uicontrol {Generic Highlighter}. - - For more information, see \l{Download highlight definitions}. - \section1 Adding Your Own Code Snippets As you write code, \QC suggests properties, IDs, and code snippets to @@ -144,5 +111,72 @@ To install plugins, go to \uicontrol Help > \uicontrol {About Plugins} and select \uicontrol {Install Plugins}. + \section1 Accessibility + + You can use keyboard shortcuts to navigate the UI without a mouse, or set + zoom levels and change colors to improve the visibility of the text. Also, + \QC supports screen readers. + + \section2 Changing Keyboard Shortcuts + + You can use \QC with your favorite keyboard shortcuts. + + To view and edit all keyboard shortcuts defined in \QC, go to \preferences > + \uicontrol Environment > \uicontrol Keyboard. For more information, see + \l{Keyboard Shortcuts}. + + \section2 Navigating with the Keyboard + + To move between UI controls, press the the \key Tab key or the \key Left, + \key Right, \key Up, and \key Down arrow keys. + + \section2 Setting Zoom Levels + + To set editor font and colors, select \preferences > + \uicontrol {Text Editor} > \uicontrol {Font & Colors}. + + Select the font family and size, and set the zoom level in percentage for + viewing the text or use keyboard shortcuts or the mouse wheel to zoom in or + out. + + To improve the readability of text in the editor, adjust the line spacing. + + For more information, see \l{Font & Colors}. + + The system configuration determines the font sizes in other parts of \QC. + + When viewing output, use the \inlineimage icons/plus.png {Plus button} and + \inlineimage icons/minus.png {Minus button} buttons or keyboard shortcuts to + set the zoom level. + + For more information, see \l{View output}. + + \section2 Changing Color Schemes + + Themes set the appearance of the \QC UI: widgets, colors, and icons. + + To switch themes, go to \preferences > \uicontrol Environment > + \uicontrol Interface and select a theme in \uicontrol Theme. + + Use the \QC text and code editors with your favorite color scheme that sets + highlighting of code elements and the background color. Select one of the + predefined color schemes or create custom ones. The color schemes apply to + highlighting C++ files, QML files, and generic files. + + To change the color scheme, go to \preferences > + \uicontrol {Text Editor} > \uicontrol {Font & Colors}. + + For more information, see \l{Change editor colors}. + + \l{https://api.kde.org/frameworks/syntax-highlighting/html/index.html} + {KSyntaxHighlighting} offers generic highlighting. It is the syntax + highlighting engine for Kate syntax definitions. \QC comes with most of + the commonly used syntax files, and you can download additional files. + + To download and use highlight definition files, go to \preferences > + \uicontrol {Text Editor} > \uicontrol {Generic Highlighter}. + + For more information, see \l{Download highlight definitions}. + \sa {Installation}, {Reset \QC settings}, {Preferences} */ From b1aa5eeeb4288f83d8cc50a10ac643a07e69fbd2 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 2 Sep 2024 08:53:13 +0200 Subject: [PATCH 4/8] CMake: Fix build Amends 69c61143f3693f26bd803090325fe0b67eeee56e Change-Id: Ife0c4817be19c7123199797e3b8846390748257d Reviewed-by: Jarek Kobus --- src/plugins/cmakeprojectmanager/targethelper.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/targethelper.h b/src/plugins/cmakeprojectmanager/targethelper.h index 7bd8680432b..c1d2edd9889 100644 --- a/src/plugins/cmakeprojectmanager/targethelper.h +++ b/src/plugins/cmakeprojectmanager/targethelper.h @@ -3,6 +3,8 @@ #pragma once +#include + namespace ProjectExplorer { class BuildSystem; } namespace CMakeProjectManager::Internal { From 8e599baf71b8f63d5c63f8f9da0ef6c75107be90 Mon Sep 17 00:00:00 2001 From: Alexandre Laurent Date: Wed, 28 Aug 2024 18:19:40 +0200 Subject: [PATCH 5/8] French strings fixes discovered while exploring the application Change-Id: I8f97fdd4cf06720e384960f9cd9eb18f9683ad28 Reviewed-by: Olivier Delaune Reviewed-by: Eike Ziller --- share/qtcreator/translations/qtcreator_fr.ts | 123 +++++++------------ 1 file changed, 42 insertions(+), 81 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_fr.ts b/share/qtcreator/translations/qtcreator_fr.ts index 2f571f310a6..19ae1e26c62 100644 --- a/share/qtcreator/translations/qtcreator_fr.ts +++ b/share/qtcreator/translations/qtcreator_fr.ts @@ -5373,7 +5373,8 @@ Erreur : Axis - + Peut être au pluriel ? + Axe Threshold @@ -6184,10 +6185,6 @@ est en cours. QKeychain::JobPrivate - - Unknown error - Erreur inconnue - Access to keychain denied keychain ? @@ -6345,46 +6342,6 @@ Do you want to edit this effect? Assurez-vous de l'avoir sauvegardé dans le compositeur d'effet. Souhaitez-vous éditer cet effet ? - - Access to keychain denied - Accès au porte-clés refusé - - - No keyring daemon - Aucun démon de trousseau disponible - - - Already unlocked - Déjà déverrouillé - - - No such keyring - Aucun trousseau de ce type - - - Bad arguments - Arguments incorrects - - - I/O error - Erreur d'E/S - - - Cancelled - Annulé - - - Keyring already exists - Le trousseau existe déjà - - - No match - Aucun résultat - - - Unknown error - Erreur inconnue - Entry not found Entrée introuvable @@ -12958,7 +12915,7 @@ Exécutable : %2 Stop on failure - Arrêt sur échec + Arrêter sur échec Run tests in parallel mode using given number of jobs. @@ -13204,7 +13161,7 @@ Voir la documentation de Google Test pour plus d'informations sur les filtr Event counter - Compteurd'événements + Compteur d'événements Uses event counter when executing benchmarks. @@ -15659,11 +15616,11 @@ Par exemple, « Revision : 15 » laissera la branche à la révis CMake arguments: - Arguments de Cmake : + Arguments de CMake : Tool arguments: - Arguments de l’outil : + Arguments de l'outil : Stage for installation @@ -16048,7 +16005,7 @@ Par exemple, « Revision : 15 » laissera la branche à la révis CMake generator defines how a project is built when using CMake.<br>This setting is ignored when using other build systems. - + Le générateur CMake définit comment le projet est compilé par CMake.<br>Ce paramètre est ignoré lors de l'utilisation d'un autre système de compilation. CMake Tool is unconfigured, CMake generator will be ignored. @@ -17818,8 +17775,8 @@ Définissez d’abord un exécutable valide. Class View - Ou est-ce un rapport avec la Vue ? (graphics/view) - Affichage de la classe + Ce texte est affiché dans le combobox du panneau de gauche (où l'on affiche la hiérarchie du projets ou le système de fichiers). Peut être que "symboles" aurait plus sa place, sachant que ce mode affiche une liste des classes et les symboles définis par ces classes. + Classes @@ -20315,7 +20272,8 @@ provided they were unmodified before the refactoring. Whole words o&nly - &Mots complets uniquement + On trouve, plus couramment, l'expression "Mots entiers" + &Mots entiers uniquement Use re&gular expressions @@ -20403,7 +20361,7 @@ provided they were unmodified before the refactoring. Whole Words Only - Mots complets uniquement + Mots entiers uniquement Use Regular Expressions @@ -20696,7 +20654,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <html><body style="color:#909090; font-size:14px"><div align='center'><div style="font-size:20px">Open a document</div><table><tr><td><hr/><div style="margin-top: 5px">&bull; File > Open File or Project (%1)</div><div style="margin-top: 5px">&bull; File > Recent Files</div><div style="margin-top: 5px">&bull; Tools > Locate (%2) and</div><div style="margin-left: 1em">- type to open file from any open project</div>%4%5<div style="margin-left: 1em">- type <code>%3&lt;space&gt;&lt;filename&gt;</code> to open file from file system</div><div style="margin-left: 1em">- select one of the other filters for jumping to a location</div><div style="margin-top: 5px">&bull; Drag and drop files here</div></td></tr></table></div></body></html> - <html><body style="color:#909090; font-size:14px"><div align='center'><div style="font-size:20px">Ouvrir un document</div><table><tr><td><hr/><div style="margin-top: 5px">&bull; Fichier> Ouvrir un fichier ou un projet (%1)</div><div style="margin-top: 5px">&bull; Fichier > Fichiers récents</div><div style="margin-top: 5px">&bull; Outils > Localiser (%2) et</div><div style="margin-left: 1em">- taper pour ouvrir un fichier à partir de n’importe quel projet ouvert</div>%4%5<div style="margin-left: 1em">- saisir <code>%3&lt;espace&gt;&lt;nom du fichier&gt;</code> pour ouvrir le fichier à partir du système de fichiers</div><div style="margin-left: 1em">- sélectionner l’un des autres filtres pour accéder à un emplacement donné</div><div style="margin-top: 5px">&bull; Glisser-déposer des fichiers ici</div></td></tr></table></div></body></html> + <html><body style="color:#909090; font-size:14px"><div align='center'><div style="font-size:20px">Ouvrir un document</div><table><tr><td><hr/><div style="margin-top: 5px">&bull; Fichier > Ouvrir un fichier ou un projet (%1)</div><div style="margin-top: 5px">&bull; Fichier > Fichiers récents</div><div style="margin-top: 5px">&bull; Outils > Localiser (%2) et</div><div style="margin-left: 1em">- taper pour ouvrir un fichier à partir de n’importe quel projet ouvert</div>%4%5<div style="margin-left: 1em">- saisir <code>%3&lt;espace&gt;&lt;nom du fichier&gt;</code> pour ouvrir le fichier à partir du système de fichiers</div><div style="margin-left: 1em">- sélectionner l’un des autres filtres pour accéder à un emplacement donné</div><div style="margin-top: 5px">&bull; Glisser-déposer des fichiers ici</div></td></tr></table></div></body></html> <div style="margin-left: 1em">- type <code>%1&lt;space&gt;&lt;pattern&gt;</code> to jump to a class definition</div> @@ -21214,8 +21172,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Type - <html><head/><body><p>MIME magic data is interpreted as defined by the Shared MIME-info Database specification from <a href="http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html">freedesktop.org</a>.<hr/></p></body></html> - <html><head/><body><p>Les données magiques MIME sont interprétées conformément à la spécification de la base de données partagée d’informations MIME de <a href="http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html">freedesktop.org</a>.<hr/></p></body></html> + <html><head/><body><p>MIME magic data is interpreted as defined by the Shared MIME-info Database specification from <a href="https://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec/">freedesktop.org</a>.<hr/></p></body></html> + <html><head/><body><p>Les données magiques MIME sont interprétées conformément à la spécification de la base de données partagée d’informations MIME fournie par <a href="https://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec/">freedesktop.org</a>.<hr/></p></body></html> String @@ -23862,7 +23820,7 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer Switch Between Function Declaration/Definition - Changer entre la définition et déclaration de la fonction + Changer entre la définition et la déclaration de la fonction Open Function Declaration/Definition in Next Split @@ -26804,7 +26762,8 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si Global Debugger &Log - &Journal du débogueur général + Je pense que "Global" se réfère au log et non au débogueur. + &Journal général du débogueur Reload Debugging Helpers @@ -27195,7 +27154,7 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si Start and Break on Main - Démarrer et s’arrêter sur le Main + Démarrer et s'arrêter sur la fonction Main DAP @@ -27344,7 +27303,8 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si <html><head/><body><p>You are trying to run the tool "%1" on an application in %2 mode. The tool is designed to be used %3.</p><p>Run-time characteristics differ significantly between optimized and non-optimized binaries. Analytical findings for one mode may or may not be relevant for the other.</p><p>Running tools that need debug symbols on binaries that don't provide any may lead to missing function names or otherwise insufficient output.</p><p>Do you want to continue and run the tool in %2 mode?</p></body></html> - <html><head/><body><p>Vous essayez d’exécuter l’outil « %1 » sur une application en mode %2. L’outil est conçu pour être utilisé en mode %3.</p><p>Les caractéristiques d’exécution diffèrent considérablement entre les binaires optimisés et non optimisés. L’exécution d’outils nécessitant des symboles de débogage sur des binaires qui n’en fournissent pas peut conduire à des noms de fonctions manquants ou à des résultats insuffisants.</p><p>Voulez-vous continuer et exécuter l’outil en mode %2 ?</p></body></html> + %3 est remplacé par la chaîne précédente (on optimized code...) + <html><head/><body><p>Vous essayez d'exécuter l'outil « %1 » sur une application en mode %2. L'outil est conçu pour être utilisé %3.</p><p>Les caractéristiques d'exécution diffèrent considérablement entre les binaires optimisés et non optimisés. L'exécution d'outils nécessitant des symboles de débogage sur des binaires qui n'en fournissent pas peut conduire à des noms de fonctions manquants ou à des résultats insuffisants.</p><p>Voulez-vous continuer et exécuter l'outil en mode %2 ?</p></body></html> Start @@ -30909,7 +30869,7 @@ Raison : %3 Plugin Emulation - Émulation de plug-in + Émulation de greffon Use smartcase @@ -30917,7 +30877,7 @@ Raison : %3 Use wrapscan - Utiliser recherche circulaire + Utiliser la recherche circulaire Use ignorecase @@ -32712,7 +32672,7 @@ Valider maintenant ? Manage Remotes... - + Gérer les dépôts distants… Git &Tools @@ -41850,7 +41810,7 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Nim Script File - + Fichier de script Nim Creates an empty Nim file using UTF-8 charset. @@ -43467,7 +43427,8 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u Standard error - Sortie erreur (stderr) + A revoir -> Sortie d'erreur + Sortie d'erreur (stderr) E&rror message: @@ -43926,7 +43887,7 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u Files in All Project Directories: - Fichiers dans tous les répertoires du projet : + Fichiers dans tous les répertoires du projet : Setting @@ -55011,7 +54972,8 @@ Ne s’applique pas aux espaces blancs dans les commentaires et dans les chaîne Underline - + Vu dans LibreOffice + Soulignage Color: @@ -57242,7 +57204,7 @@ dans « %2 ». Show %1 Column - + Afficher la colonne « %1 » No clangd executable specified. @@ -57272,7 +57234,7 @@ dans « %2 ». Error while trying to copy file: %1 - + Erreur lors de la copie du fichier : %1 Could not copy file: %1 @@ -57441,7 +57403,7 @@ Pour définir ou changer une variable, utilisez VARIABLE=VALEUR. Pour désactiver une variable, préfixez la ligne avec le caractère « # ». Pour suffixer une variable, utilisez VARIABLE+=VALEUR. Pour préfixer une variable, utilisez VARIABLE=+VALEUR. -Les variables existantes peuvent être référencées dans une VALEUR avec ${OTHER}. +Les variables existantes peuvent être référencées dans une VALEUR avec ${AUTRE}. Pour effacer une variable, placez son nom sur une ligne avec rien d'autre sur celle-ci. Les lignes débutant avec « ### » seront traitées comme commentaires. @@ -57754,7 +57716,7 @@ Les lignes débutant avec « ### » seront traitées comme commentaire Backtrace frame count: - Backtracer le nombre de trames : + Nombre de trames à remonter : Suppression files: @@ -57906,7 +57868,7 @@ Avec la simulation du cache, d’autres compteurs d’évènements sont activés Check for leaks on finish: - Vérification des fuites lorsque c’est fini : + Vérification des fuites à la fin : Summary Only @@ -59205,7 +59167,7 @@ Vérifiez les paramètres pour vous assurer que Valgrind est installé et dispon Wrap submit message at: - Limiter la largeur du message à : + Limiter la taille du message à : characters @@ -59550,7 +59512,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e Mode Selector - + Sélecteur de mode Select different modes depending on the task at hand. @@ -59558,7 +59520,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e <p style="margin-top: 30px"><table><tr><td style="padding-right: 20px">Welcome:</td><td>Open examples, tutorials, and recent sessions and projects.</td></tr><tr><td>Edit:</td><td>Work with code and navigate your project.</td></tr><tr><td>Design:</td><td>Visually edit Widget-based user interfaces, state charts and UML models.</td></tr><tr><td>Debug:</td><td>Analyze your application with a debugger or other analyzers.</td></tr><tr><td>Projects:</td><td>Manage project settings.</td></tr><tr><td>Help:</td><td>Browse the help database.</td></tr></table></p> - <p style="margin-top: 30px"><table><tr><td style="padding-right: 20px">Accueil :</td><td>Ouvrez des exemples, des tutoriels et des sessions et projets récents.</td></tr><td>Modifier :</td><td>Travaillez avec le code et naviguez dans votre projet.</td></tr><tr><td>Design:</td><td>Modifiez visuellement des interfaces utilisateur basées sur des widgets, des diagrammes d’état et des modèles UML. </td></tr><ttr><td>Débogage :</td><td>Analysez votre application avec un débogueur ou d’autres analyseurs.</td></tr><tr><td>Projets :</td><td>Gérez les paramètres du projet.</td></tr><tr><td>Aide :</td><td>Parcourez la base de données d’aide.</td></tr></table></p> + <p style="margin-top: 30px"><table><tr><td style="padding-right: 20px">Accueil :</td><td>Ouvrez des exemples, des tutoriels et des sessions et projets récents.</td></tr><tr><td>Modifier :</td><td>Travaillez avec le code et naviguez dans votre projet.</td></tr><tr><td>Design :</td><td>Modifiez visuellement des interfaces utilisateur basées sur des widgets, des diagrammes d'état et des modèles UML. </td></tr><tr><td>Débogage :</td><td>Analysez votre application avec un débogueur ou d'autres analyseurs.</td></tr><tr><td>Projets :</td><td>Gérez les paramètres du projet.</td></tr><tr><td>Aide :</td><td>Parcourez la base de données d'aide.</td></tr></table></p> Kit Selector @@ -59590,7 +59552,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e Build the active project. - Compiler le projet actif. + Compile le projet actif. Locator @@ -59610,7 +59572,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e Find compile and application output here, as well as a list of configuration and build issues, and the panel for global searches. - Vous y trouverez les résultats de la compilation et de l’application, ainsi qu’une liste des problèmes de configuration et de compilation, et le panneau des recherches générales. + Vous y trouverez les résultats de la compilation et de l'application, ainsi qu’une liste des problèmes de configuration et de compilation, ainsi que le panneau des recherches globales. Progress Indicator @@ -59634,8 +59596,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e You have now completed the UI tour. To learn more about the highlighted controls, see <a style="color: #41CD52" href="qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html">User Interface</a>. - Vous avez maintenant terminé la visite guidée de l’interface utilisateur -Pour en savoir plus sur les contrôles mis en évidence, voir l’<a style="color: #41CD52" href="qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html">interface utilisateur</a>. + Vous avez maintenant terminé la visite guidée de l'interface utilisateur. Pour en savoir plus sur les contrôles mis en évidence, consultez la page d'aide concernant l'<a style="color: #41CD52" href="qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html">interface utilisateur</a>. UI Introduction %1/%2 > @@ -60869,7 +60830,7 @@ Elle est utilisée pour calculer la taille totale implicite. Current value of the Slider. The default value is 0.0. - + Valeur actuelle du slider. La valeur par défaut est 0.0. Maximum value From e437e8d42531cdeaa4583e3afa20069b36f3b7d5 Mon Sep 17 00:00:00 2001 From: Jussi Witick Date: Wed, 21 Aug 2024 12:55:10 +0300 Subject: [PATCH 6/8] Fix warnings when building QSR 2.1 application template The text area was too small on certain platforms where the used font was not necessarily available. Use more common "Arial" font and increase the text area size slightly. Task-number: QSR-2450 Change-Id: If74e807c935b8e82958419e7d5d6254dd551e2cb Reviewed-by: Teemu Holappa (cherry picked from commit d451cbb7637cfc76d617df689436b437418933a3) --- src/plugins/saferenderer/wizards/qsrapp2_1/main.qml.tpl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/saferenderer/wizards/qsrapp2_1/main.qml.tpl b/src/plugins/saferenderer/wizards/qsrapp2_1/main.qml.tpl index 9f3130bbf0a..115a6dcd4b5 100644 --- a/src/plugins/saferenderer/wizards/qsrapp2_1/main.qml.tpl +++ b/src/plugins/saferenderer/wizards/qsrapp2_1/main.qml.tpl @@ -13,12 +13,12 @@ Window { objectName: "safetextitem" x: 206 y: 208 - width: 340 - height: 40 + width: 380 + height: 50 color: "#8ae234" fillColor: "black" text: "Hello Qt Safe Renderer!" - font.family: "Lato" + font.family: "Arial" horizontalAlignment: Text.AlignLeft font.pixelSize: 32 } From 9d2281aff4d2282bc0b022eca670acca21be3deb Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 1 Sep 2024 15:50:08 +0300 Subject: [PATCH 7/8] Revert "Debugger: simplify interrupting windows processes" Console applications on MinGW/GDB stop when adding or removing a breakpoint, and cannot be continued from this point. This reverts commit 9d88da6c2bc40b17215137d9b2face5aafdfae3d. The commit was partially reverted in 2364448f910, but looks like this only solved some of the use-cases. This is yet another partial revert. It recovers the old behavior for GDB, and leaves out only CDB part. Fixes: QTCREATORBUG-31518 Change-Id: I98c4a99fbd1e30a48731ee992e2b9ff20ac0350b Reviewed-by: David Schulz --- src/plugins/debugger/procinterrupt.cpp | 117 ++++++++++++++++-- .../desktopprocesssignaloperation.cpp | 96 ++++++++++++-- 2 files changed, 189 insertions(+), 24 deletions(-) diff --git a/src/plugins/debugger/procinterrupt.cpp b/src/plugins/debugger/procinterrupt.cpp index 0f104f3bfc0..2459d41b371 100644 --- a/src/plugins/debugger/procinterrupt.cpp +++ b/src/plugins/debugger/procinterrupt.cpp @@ -23,23 +23,118 @@ static inline QString msgCannotInterrupt(qint64 pid, const QString &why) # define PROCESS_SUSPEND_RESUME (0x0800) #endif // PROCESS_SUSPEND_RESUME +static BOOL isWow64Process(HANDLE hproc) +{ + using LPFN_ISWOW64PROCESS = BOOL (WINAPI*)(HANDLE, PBOOL); + + BOOL ret = false; + + static LPFN_ISWOW64PROCESS fnIsWow64Process = NULL; + if (!fnIsWow64Process) { + if (HMODULE hModule = GetModuleHandle(L"kernel32.dll")) + fnIsWow64Process = reinterpret_cast(GetProcAddress(hModule, "IsWow64Process")); + } + + if (!fnIsWow64Process) { + qWarning("Cannot retrieve symbol 'IsWow64Process'."); + return false; + } + + if (!fnIsWow64Process(hproc, &ret)) { + qWarning("IsWow64Process() failed for %p: %s", + hproc, qPrintable(Utils::winErrorMessage(GetLastError()))); + return false; + } + return ret; +} + // Open the process and break into it bool Debugger::Internal::interruptProcess(qint64 pID, QString *errorMessage) { bool ok = false; HANDLE inferior = NULL; - const DWORD rights = PROCESS_QUERY_INFORMATION | PROCESS_SET_INFORMATION | PROCESS_VM_OPERATION - | PROCESS_VM_WRITE | PROCESS_VM_READ | PROCESS_DUP_HANDLE - | PROCESS_TERMINATE | PROCESS_CREATE_THREAD | PROCESS_SUSPEND_RESUME; - inferior = OpenProcess(rights, FALSE, DWORD(pID)); - if (inferior == NULL) { - *errorMessage = QString::fromLatin1("Cannot open process %1: %2") - .arg(pID) - .arg(Utils::winErrorMessage(GetLastError())); - } else if (ok = DebugBreakProcess(inferior); !ok) { - *errorMessage = "DebugBreakProcess failed: " + Utils::winErrorMessage(GetLastError()); - } + do { + const DWORD rights = PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION + |PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ + |PROCESS_DUP_HANDLE|PROCESS_TERMINATE|PROCESS_CREATE_THREAD|PROCESS_SUSPEND_RESUME; + inferior = OpenProcess(rights, FALSE, DWORD(pID)); + if (inferior == NULL) { + *errorMessage = QString::fromLatin1("Cannot open process %1: %2"). + arg(pID).arg(Utils::winErrorMessage(GetLastError())); + break; + } + enum DebugBreakApi { + UseDebugBreakApi, + UseWin64Interrupt, + UseWin32Interrupt + }; +/* + Windows 64 bit has a 32 bit subsystem (WOW64) which makes it possible to run a + 32 bit application inside a 64 bit environment. + When GDB is used DebugBreakProcess must be called from the same system (32/64 bit) running + the inferior. + Therefore we need helper executables (win(32/64)interrupt.exe) on Windows 64 bit calling + DebugBreakProcess from the correct system. + + DebugBreak matrix for windows + + Api = UseDebugBreakApi + Win64 = UseWin64Interrupt + Win32 = UseWin32Interrupt + N/A = This configuration is not possible + + | Windows 32bit | Windows 64bit + | QtCreator 32bit | QtCreator 32bit | QtCreator 64bit + | Inferior 32bit | Inferior 32bit | Inferior 64bit | Inferior 32bit | Inferior 64bit | +----------|-----------------|-----------------|-----------------|-----------------|----------------| +GDB 32bit | Api | Api | NA | Win32 | NA | + 64bit | NA | Api | Win64 | Win32 | Api | +----------|-----------------|-----------------|-----------------|-----------------|----------------| + +*/ + + DebugBreakApi breakApi = UseDebugBreakApi; +#ifdef Q_OS_WIN64 + if (isWow64Process(inferior)) + breakApi = UseWin32Interrupt; +#else + if (isWow64Process(GetCurrentProcess()) && !isWow64Process(inferior)) + breakApi = UseWin64Interrupt; +#endif + if (breakApi == UseDebugBreakApi) { + ok = DebugBreakProcess(inferior); + if (!ok) + *errorMessage = "DebugBreakProcess failed: " + Utils::winErrorMessage(GetLastError()); + } else { + const QString executable = breakApi == UseWin32Interrupt + ? QCoreApplication::applicationDirPath() + "/win32interrupt.exe" + : QCoreApplication::applicationDirPath() + "/win64interrupt.exe"; + if (!QFileInfo::exists(executable)) { + *errorMessage = QString::fromLatin1( + "%1 does not exist. If you have built %2 " + "on your own, checkout " + "https://code.qt.io/cgit/qt-creator/binary-artifacts.git/.") + .arg(QDir::toNativeSeparators(executable), + QGuiApplication::applicationDisplayName()); + break; + } + switch (QProcess::execute(executable, QStringList(QString::number(pID)))) { + case -2: + *errorMessage = QString::fromLatin1("Cannot start %1. Check src\\tools\\win64interrupt\\win64interrupt.c for more information."). + arg(QDir::toNativeSeparators(executable)); + break; + case 0: + ok = true; + break; + default: + *errorMessage = QDir::toNativeSeparators(executable) + + " could not break the process."; + break; + } + break; + } + } while (false); if (inferior != NULL) CloseHandle(inferior); if (!ok) diff --git a/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp b/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp index 773f4d3bca5..70412124462 100644 --- a/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp +++ b/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp @@ -102,20 +102,90 @@ void DesktopProcessSignalOperation::killProcessSilently(qint64 pid) void DesktopProcessSignalOperation::interruptProcessSilently(qint64 pid) { #ifdef Q_OS_WIN + enum SpecialInterrupt { NoSpecialInterrupt, Win32Interrupt, Win64Interrupt }; + + bool is64BitSystem = is64BitWindowsSystem(); + SpecialInterrupt si = NoSpecialInterrupt; + if (is64BitSystem) + si = is64BitWindowsBinary(m_debuggerCommand) ? Win64Interrupt : Win32Interrupt; + /* + Windows 64 bit has a 32 bit subsystem (WOW64) which makes it possible to run a + 32 bit application inside a 64 bit environment. + When GDB is used DebugBreakProcess must be called from the same system (32/64 bit) running + the inferior. If CDB is used we could in theory break wow64 processes, + but the break is actually a wow64 breakpoint. CDB is configured to ignore these + breakpoints, because they also appear on module loading. + Therefore we need helper executables (win(32/64)interrupt.exe) on Windows 64 bit calling + DebugBreakProcess from the correct system. + + DebugBreak matrix for windows + + Api = UseDebugBreakApi + Win64 = UseWin64InterruptHelper + Win32 = UseWin32InterruptHelper + N/A = This configuration is not possible + + | Windows 32bit | Windows 64bit + | QtCreator 32bit | QtCreator 32bit | QtCreator 64bit + | Inferior 32bit | Inferior 32bit | Inferior 64bit | Inferior 32bit | Inferior 64bit +----------|-----------------|-----------------|-----------------|-----------------|---------------- +CDB 32bit | Api | Api | N/A | Win32 | N/A + 64bit | N/A | Win64 | Win64 | Api | Api +----------|-----------------|-----------------|-----------------|-----------------|---------------- +GDB 32bit | Api | Api | N/A | Win32 | N/A + 64bit | N/A | N/A | Win64 | N/A | Api +----------|-----------------|-----------------|-----------------|-----------------|---------------- + + */ HANDLE inferior = NULL; - const DWORD rights = PROCESS_QUERY_INFORMATION | PROCESS_SET_INFORMATION | PROCESS_VM_OPERATION - | PROCESS_VM_WRITE | PROCESS_VM_READ | PROCESS_DUP_HANDLE - | PROCESS_TERMINATE | PROCESS_CREATE_THREAD | PROCESS_SUSPEND_RESUME; - inferior = OpenProcess(rights, FALSE, pid); - if (inferior == NULL) { - appendMsgCannotInterrupt( - pid, Tr::tr("Cannot open process: %1") + winErrorMessage(GetLastError())); - } else if (!DebugBreakProcess(inferior)) { - appendMsgCannotInterrupt( - pid, - Tr::tr("DebugBreakProcess failed:") + QLatin1Char(' ') - + winErrorMessage(GetLastError())); - } + do { + const DWORD rights = PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION + |PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ + |PROCESS_DUP_HANDLE|PROCESS_TERMINATE|PROCESS_CREATE_THREAD|PROCESS_SUSPEND_RESUME; + inferior = OpenProcess(rights, FALSE, pid); + if (inferior == NULL) { + appendMsgCannotInterrupt(pid, Tr::tr("Cannot open process: %1") + + winErrorMessage(GetLastError())); + break; + } + bool creatorIs64Bit = is64BitWindowsBinary( + FilePath::fromUserInput(QCoreApplication::applicationFilePath())); + if (!is64BitSystem + || si == NoSpecialInterrupt + || (si == Win64Interrupt && creatorIs64Bit) + || (si == Win32Interrupt && !creatorIs64Bit)) { + if (!DebugBreakProcess(inferior)) { + appendMsgCannotInterrupt(pid, Tr::tr("DebugBreakProcess failed:") + + QLatin1Char(' ') + winErrorMessage(GetLastError())); + } + } else if (si == Win32Interrupt || si == Win64Interrupt) { + QString executable = QCoreApplication::applicationDirPath(); + executable += si == Win32Interrupt + ? QLatin1String("/win32interrupt.exe") + : QLatin1String("/win64interrupt.exe"); + if (!QFileInfo::exists(executable)) { + appendMsgCannotInterrupt(pid, + Tr::tr("%1 does not exist. If you built %2 " + "yourself, check out https://code.qt.io/cgit/" + "qt-creator/binary-artifacts.git/.") + .arg(QDir::toNativeSeparators(executable), + QGuiApplication::applicationDisplayName())); + } + switch (QProcess::execute(executable, QStringList(QString::number(pid)))) { + case -2: + appendMsgCannotInterrupt(pid, Tr::tr( + "Cannot start %1. Check src\\tools\\win64interrupt\\win64interrupt.c " + "for more information.").arg(QDir::toNativeSeparators(executable))); + break; + case 0: + break; + default: + appendMsgCannotInterrupt(pid, QDir::toNativeSeparators(executable) + + QLatin1Char(' ') + Tr::tr("could not break the process.")); + break; + } + } + } while (false); if (inferior != NULL) CloseHandle(inferior); #else From aea4c09497a0393b1f9967dbbe203e278ad86d11 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Mon, 2 Sep 2024 09:31:28 +0200 Subject: [PATCH 8/8] Lua: Pull in upstream fix for sol library Fixes: QTCREATORBUG-31517 Change-Id: I800dcf5eb6a63d867bc59de9ba18472ab029dc6b Reviewed-by: Eike Ziller --- src/libs/3rdparty/sol2/include/sol/sol.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/3rdparty/sol2/include/sol/sol.hpp b/src/libs/3rdparty/sol2/include/sol/sol.hpp index 85665a50c93..c3e5fa31ae3 100644 --- a/src/libs/3rdparty/sol2/include/sol/sol.hpp +++ b/src/libs/3rdparty/sol2/include/sol/sol.hpp @@ -6818,7 +6818,8 @@ namespace sol { static_assert(std::is_constructible::value, "T must be constructible with Args"); *this = nullopt; - this->construct(std::forward(args)...); + new (static_cast(this)) optional(std::in_place, std::forward(args)...); + return **this; } /// Swaps this optional with the other.