diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index cf4964ef087..236f3cf9508 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "7.84.0") # The IDE version. -set(IDE_VERSION_COMPAT "7.84.0") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "8.0.0-rc1") # The IDE display version. +set(IDE_VERSION "8.0.0") # The IDE version. +set(IDE_VERSION_COMPAT "8.0.0") # The IDE Compatibility version. +set(IDE_VERSION_DISPLAY "8.0.0") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2022") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/doc/qtcreator/examples/textfinder/CMakeLists.txt b/doc/qtcreator/examples/textfinder/CMakeLists.txt new file mode 100644 index 00000000000..39f9d4cd471 --- /dev/null +++ b/doc/qtcreator/examples/textfinder/CMakeLists.txt @@ -0,0 +1,71 @@ +cmake_minimum_required(VERSION 3.5) + +project(TextFinder VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) + +set(TS_FILES TextFinder_de_DE.ts) + +set(PROJECT_SOURCES + main.cpp + textfinder.cpp + textfinder.h + textfinder.ui + ${TS_FILES} + textfinder.qrc +) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(TextFinder + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET TextFinder APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR +# ${CMAKE_CURRENT_SOURCE_DIR}/android) +# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation + + qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) +else() + if(ANDROID) + add_library(TextFinder SHARED + ${PROJECT_SOURCES} + ) +# Define properties for Android with Qt 5 after find_package() calls as: +# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(TextFinder + ${PROJECT_SOURCES} + ) + endif() + + qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) +endif() + +target_link_libraries(TextFinder PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) + +set_target_properties(TextFinder PROPERTIES + MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +install(TARGETS TextFinder + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(TextFinder) +endif() diff --git a/doc/qtcreator/examples/textfinder/TextFinder_de_DE.ts b/doc/qtcreator/examples/textfinder/TextFinder_de_DE.ts new file mode 100644 index 00000000000..ae942c6f1c6 --- /dev/null +++ b/doc/qtcreator/examples/textfinder/TextFinder_de_DE.ts @@ -0,0 +1,22 @@ + + + + + TextFinder + + + TextFinder + + + + + Keyword + + + + + Find + + + + diff --git a/doc/qtcreator/examples/textfinder/main.cpp b/doc/qtcreator/examples/textfinder/main.cpp index 37cc1de814f..d9799019643 100644 --- a/doc/qtcreator/examples/textfinder/main.cpp +++ b/doc/qtcreator/examples/textfinder/main.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator @@ -47,15 +47,25 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ - #include "textfinder.h" #include +#include +#include int main(int argc, char *argv[]) { - Q_INIT_RESOURCE(textfinder); QApplication a(argc, argv); + + QTranslator translator; + const QStringList uiLanguages = QLocale::system().uiLanguages(); + for (const QString &locale : uiLanguages) { + const QString baseName = "TextFinder_" + QLocale(locale).name(); + if (translator.load(":/i18n/" + baseName)) { + a.installTranslator(&translator); + break; + } + } TextFinder w; w.show(); return a.exec(); diff --git a/doc/qtcreator/examples/textfinder/textfinder.cpp b/doc/qtcreator/examples/textfinder/textfinder.cpp index f402e0f31de..06d43a4cb69 100644 --- a/doc/qtcreator/examples/textfinder/textfinder.cpp +++ b/doc/qtcreator/examples/textfinder/textfinder.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator @@ -47,18 +47,18 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ - #include "textfinder.h" //! [1] +#include "./ui_textfinder.h" #include #include //! [1] -#include //! [3] TextFinder::TextFinder(QWidget *parent) - : QWidget(parent), ui(new Ui::TextFinder) + : QWidget(parent) + , ui(new Ui::TextFinder) { ui->setupUi(this); loadTextFile(); diff --git a/doc/qtcreator/examples/textfinder/textfinder.h b/doc/qtcreator/examples/textfinder/textfinder.h index 8351a473777..2366a55aa30 100644 --- a/doc/qtcreator/examples/textfinder/textfinder.h +++ b/doc/qtcreator/examples/textfinder/textfinder.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator @@ -47,24 +47,21 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ - -#pragma once - -#include "ui_textfinder.h" +#ifndef TEXTFINDER_H +#define TEXTFINDER_H #include -namespace Ui -{ - class TextFinder; -} +QT_BEGIN_NAMESPACE +namespace Ui { class TextFinder; } +QT_END_NAMESPACE class TextFinder : public QWidget { Q_OBJECT public: - TextFinder(QWidget *parent = 0); + TextFinder(QWidget *parent = nullptr); ~TextFinder(); //! [0] @@ -76,3 +73,4 @@ private: void loadTextFile(); //! [0] }; +#endif // TEXTFINDER_H diff --git a/doc/qtcreator/examples/textfinder/textfinder.pro b/doc/qtcreator/examples/textfinder/textfinder.pro deleted file mode 100644 index f8f547aef7c..00000000000 --- a/doc/qtcreator/examples/textfinder/textfinder.pro +++ /dev/null @@ -1,13 +0,0 @@ -TARGET = TextFinder -TEMPLATE = app - -QT += widgets - -SOURCES += main.cpp\ - textfinder.cpp - -HEADERS += textfinder.h - -FORMS += textfinder.ui - -RESOURCES += textfinder.qrc diff --git a/doc/qtcreator/examples/textfinder/textfinder.qrc b/doc/qtcreator/examples/textfinder/textfinder.qrc index 03cc512f4d6..fb804b5eca1 100644 --- a/doc/qtcreator/examples/textfinder/textfinder.qrc +++ b/doc/qtcreator/examples/textfinder/textfinder.qrc @@ -1,5 +1,5 @@ - - - input.txt - - \ No newline at end of file + + + input.txt + + diff --git a/doc/qtcreator/examples/textfinder/textfinder.ui b/doc/qtcreator/examples/textfinder/textfinder.ui index ba8018742a5..33f9d9c9729 100644 --- a/doc/qtcreator/examples/textfinder/textfinder.ui +++ b/doc/qtcreator/examples/textfinder/textfinder.ui @@ -6,33 +6,30 @@ 0 0 - 378 - 158 + 800 + 600 - Find Text + TextFinder - + - - - - - - + + + - &Keyword: - - - lineEdit + Keyword - + + + + - &Find + Find @@ -41,38 +38,8 @@ - - - - Qt::Vertical - - - - 20 - 16 - - - - - - - lineEdit - returnPressed() - findButton - animateClick() - - - 261 - 17 - - - 320 - 17 - - - - + diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard2.png b/doc/qtcreator/images/qtcreator-add-resource-wizard2.png index 8efcf7c4a7a..13246171a3b 100644 Binary files a/doc/qtcreator/images/qtcreator-add-resource-wizard2.png and b/doc/qtcreator/images/qtcreator-add-resource-wizard2.png differ diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard3.png b/doc/qtcreator/images/qtcreator-add-resource-wizard3.png index 9b4188e718d..1ca3c01636e 100644 Binary files a/doc/qtcreator/images/qtcreator-add-resource-wizard3.png and b/doc/qtcreator/images/qtcreator-add-resource-wizard3.png differ diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard4.png b/doc/qtcreator/images/qtcreator-add-resource-wizard4.png new file mode 100644 index 00000000000..ea985fc5ea0 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-add-resource-wizard4.png differ diff --git a/doc/qtcreator/images/qtcreator-add-resource.png b/doc/qtcreator/images/qtcreator-add-resource.png index 42da7b0173c..dd7a2c59cdd 100644 Binary files a/doc/qtcreator/images/qtcreator-add-resource.png and b/doc/qtcreator/images/qtcreator-add-resource.png differ diff --git a/doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png b/doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png index 2afd5e6c149..9d4e7b2ca03 100644 Binary files a/doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png and b/doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png differ diff --git a/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png index 9bcb248e0f8..e0e5bcda818 100644 Binary files a/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png and b/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png differ diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png index b829cee9512..292cac5e7ee 100644 Binary files a/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png and b/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png differ diff --git a/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png index e7b04b20542..81faa7e18e6 100644 Binary files a/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png and b/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png differ diff --git a/doc/qtcreator/images/qtcreator-textfinder-contents.png b/doc/qtcreator/images/qtcreator-textfinder-contents.png index 213edc62b1e..f8362911e36 100644 Binary files a/doc/qtcreator/images/qtcreator-textfinder-contents.png and b/doc/qtcreator/images/qtcreator-textfinder-contents.png differ diff --git a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc index 546cbd20277..84133a9f48d 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -68,9 +68,8 @@ \image qtcreator-new-project-build-system-qt-gui.png "Define Build System dialog" - \li In the \uicontrol {Build system} field, select the build system to - use for building and running the project: \l qmake, - \l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}. + \li In the \uicontrol {Build system} field, select \l {Setting Up CMake} + {CMake} as the build system to use for building the project. \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol{Class Information} dialog. @@ -117,8 +116,7 @@ \note The project opens in the \uicontrol Edit mode, and these instructions are hidden. To return to these instructions, open the \uicontrol Help mode. - If you selected qmake as the build system, the TextFinder project now - contains the following files: + The TextFinder project now contains the following files: \list @@ -126,14 +124,13 @@ \li textfinder.h \li textfinder.cpp \li textfinder.ui - \li textfinder.pro + \li CMakeLists.txt \endlist \image qtcreator-textfinder-contents.png "TextFinder project contents" The .h and .cpp files come with the necessary boiler plate code. - The .pro file is complete. If you selected CMake as the build system, \QC created a CMakeLists.txt project file for you. @@ -312,7 +309,7 @@ \li In the \uicontrol{Name} field, enter \b{textfinder}. - \li In the \uicontrol{Path} field, enter \c{C:\Qt\examples\TextFinder}, + \li In the \uicontrol{Path} field, enter the path to the project, and select \uicontrol Next or \uicontrol Continue. The \uicontrol{Project Management} dialog opens. @@ -320,10 +317,16 @@ \image qtcreator-add-resource-wizard3.png "Project Management dialog" - \li In the \uicontrol{Add to project} field, select \b{TextFinder.pro} + \li In the \uicontrol{Add to project} field, select \b{TextFinder} and select \uicontrol{Finish} or \uicontrol Done to open the file in the code editor. + \li In the \uicontrol Copy to Clipboard dialog, select \uicontrol Yes to + copy the path to the resource file to the clipboard for adding it + to the CMakeLists.txt file. + + \image qtcreator-add-resource-wizard4.png "Copy to Clipboard dialog" + \li Select \uicontrol Add > \uicontrol {Add Prefix}. \li In the \uicontrol{Prefix} field, replace the default prefix with a slash @@ -336,10 +339,20 @@ \endlist - \section1 Compiling and Running Your Program + \section1 Adding Resources to Project File + + For the text file to appear when you run the application, you must specify + the resource file as a source file in the \e CMakeLists.txt file that the + wizard created for you: + + \quotefromfile TextFinder/CMakeLists.txt + \skipto set(PROJECT_SOURCES + \printuntil ) + + \section1 Compiling and Running Your Application Now that you have all the necessary files, select the \inlineimage icons/run_small.png - button to compile and run your program. + button to compile and run your Application. */ diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index dfa8b056fc4..deb25dff2c2 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -6,15 +6,15 @@ import qbs.Utilities Module { Depends { name: "cpp"; required: false } - property string qtcreator_display_version: '8.0.0-rc1' - property string ide_version_major: '7' - property string ide_version_minor: '84' + property string qtcreator_display_version: '8.0.0' + property string ide_version_major: '8' + property string ide_version_minor: '0' property string ide_version_release: '0' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release - property string ide_compat_version_major: '7' - property string ide_compat_version_minor: '84' + property string ide_compat_version_major: '8' + property string ide_compat_version_minor: '0' property string ide_compat_version_release: '0' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release diff --git a/qtcreator_ide_branding.pri b/qtcreator_ide_branding.pri index ae387b60577..5e44fbf06d4 100644 --- a/qtcreator_ide_branding.pri +++ b/qtcreator_ide_branding.pri @@ -1,6 +1,6 @@ -QTCREATOR_VERSION = 7.84.0 -QTCREATOR_COMPAT_VERSION = 7.84.0 -QTCREATOR_DISPLAY_VERSION = 8.0.0-rc1 +QTCREATOR_VERSION = 8.0.0 +QTCREATOR_COMPAT_VERSION = 8.0.0 +QTCREATOR_DISPLAY_VERSION = 8.0.0 QTCREATOR_COPYRIGHT_YEAR = 2022 IDE_DISPLAY_NAME = Qt Creator diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index e121ece7da5..222c1dc526e 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -791,6 +791,7 @@ class Dumper(DumperBase): def lookupNativeType(self, name): #DumperBase.warn('LOOKUP TYPE NAME: %s' % name) + typeobj = self.typeCache.get(name) if typeobj is not None: #DumperBase.warn('CACHED: %s' % name) @@ -846,6 +847,15 @@ class Dumper(DumperBase): if typeobj is not None: return typeobj + # For QMetaType based typenames we have to re-format the type name. + # Converts "T>"" to "T >" since FindFirstType + # expects it that way. + name = name.replace(',', ', ').replace('>>', '> >') + typeobj = self.target.FindFirstType(name) + if typeobj.IsValid(): + self.typeCache[name] = typeobj + return typeobj + return lldb.SBType() def setupInferior(self, args): diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml index f2df9c0d042..cd31bcdddcb 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml @@ -55,6 +55,8 @@ SecondColumnLayout { property color originalColor property bool isVector3D: false + property alias spacer: spacer + function isNotInGradientMode() { return ceMode.currentValue === "Solid" } @@ -1310,17 +1312,7 @@ SecondColumnLayout { } } - Spacer { implicitWidth: StudioTheme.Values.controlLabelGap } - - ControlLabel { - text: "Hex" - horizontalAlignment: Text.AlignLeft - width: StudioTheme.Values.controlLabelWidth - + StudioTheme.Values.controlGap - + StudioTheme.Values.linkControlWidth - } - - ExpandingSpacer {} + ExpandingSpacer { id: spacer} StudioControls.Menu { id: contextMenu diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml index ecb4936bd7d..9c3f3ec43cb 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml @@ -47,6 +47,9 @@ Row { // Current item property string absoluteFilePath: "" + property alias comboBox: comboBox + property alias spacer: spacer + FileResourcesModel { id: fileModel modelNodeBackendProperty: modelNodeBackend @@ -501,7 +504,9 @@ Row { } } - Spacer { implicitWidth: StudioTheme.Values.twoControlColumnGap } + Spacer { id: spacer + implicitWidth: StudioTheme.Values.twoControlColumnGap + } IconIndicator { icon: StudioTheme.Constants.addFile diff --git a/share/qtcreator/translations/qtcreator_ja.ts b/share/qtcreator/translations/qtcreator_ja.ts index a74564d2189..c1085df3af4 100644 --- a/share/qtcreator/translations/qtcreator_ja.ts +++ b/share/qtcreator/translations/qtcreator_ja.ts @@ -8168,10 +8168,6 @@ SSH 認証が必要とされるリポジトリで使用されます(SSH の SSH_ Whether the grid wraps key navigation. グリッドがキーナビゲーションをラップするかどうか。 - - Whether the grid wraps key navigation. - グリッドがキーナビゲーションをラップするかどうか。 - Orientation 方向 @@ -9020,22 +9016,6 @@ preferShaping プロパティを false に設定すると、このような機 Add Annotation アノテーションを追加する - - Exports this item as an alias property of the root item. - このアイテムを、ルートアイテムのエイリアスプロパティとしてエクスポートします。 - - - Component - コンポーネント - - - ID - ID - - - Custom ID - Custom ID - Visibility 可視性 @@ -9106,10 +9086,6 @@ preferShaping プロパティを false に設定すると、このような機 Exports this item as an alias property of the root item. このアイテムを、ルートアイテムのエイリアスプロパティとしてエクスポートします。 - - Exports this item as an alias property of the root item. - このアイテムを、ルートアイテムのエイリアスプロパティとしてエクスポートします。 - TextInputSection @@ -15854,10 +15830,6 @@ to version control (%2) Evaluating Type Hierarchy 型階層を評価する - - Derived - 派生 - Evaluating type hierarchy... 型階層を評価する... @@ -20466,10 +20438,6 @@ Do you want to retry? Cannot evaluate %1 in current stack frame. 現在のスタック・フレームでは、%1 を評価できません。 - - QML Debugger disconnected. - QML デバッガは切断しました。 - Context: コンテキスト: @@ -27683,10 +27651,6 @@ to project "%2". Import Build ビルドをインポートする - - %1 - temporary - %1 - テンポラリ - Imported Kit インポートされたキット @@ -30646,22 +30610,6 @@ Preselects a desktop Qt for building the application if available. Could not add %1 to project. プロジェクトに %1 を追加できませんでした。 - - All Files (%1) - すべてのファイル (%1) - - - Add Assets - アセットを追加する - - - Failed to Add Files - ファイルの追加に失敗しました - - - Could not add %1 to project. - プロジェクトに %1 を追加できませんでした。 - Resources Title of library resources view @@ -30821,14 +30769,6 @@ Locked items cannot be modified or selected. %1 is an invalid ID. %1 は無効な id です。 - - Invalid ID - 無効な ID - - - %1 is an invalid ID. - %1 は無効な id です。 - %1 already exists. %1 は既に存在しています。 @@ -31192,10 +31132,6 @@ Ids must begin with a lowercase letter. &Go into Component コンポーネント内へ移動(&G) - - &Go into Component - コンポーネント内へ移動(&G) - Export as &Image... 画像としてエクスポート(&I)... @@ -31910,10 +31846,6 @@ Do you want to save the data first? Kit has no device. キットにデバイスがありません。 - - Qt version is too old. - Qt のバージョンが古すぎます。 - Qt version has no qmlscene command. Qt バージョンには qmlscene コマンドがありません。 diff --git a/src/libs/languageserverprotocol/jsonrpcmessages.h b/src/libs/languageserverprotocol/jsonrpcmessages.h index 187cf673b95..3764775eaed 100644 --- a/src/libs/languageserverprotocol/jsonrpcmessages.h +++ b/src/libs/languageserverprotocol/jsonrpcmessages.h @@ -48,17 +48,15 @@ class JsonRpcMessage; class LANGUAGESERVERPROTOCOL_EXPORT MessageId : public Utils::variant { public: - MessageId() = default; + MessageId() : variant(QString()) {} explicit MessageId(int id) : variant(id) {} explicit MessageId(const QString &id) : variant(id) {} explicit MessageId(const QJsonValue &value) { if (value.isDouble()) - *this = MessageId(value.toInt()); - else if (value.isString()) - *this = MessageId(value.toString()); + emplace(value.toInt()); else - m_valid = false; + emplace(value.toString()); } operator QJsonValue() const @@ -70,7 +68,14 @@ public: return QJsonValue(); } - bool isValid() const { return m_valid; } + bool isValid() const + { + if (Utils::holds_alternative(*this)) + return true; + const QString *id = Utils::get_if(this); + QTC_ASSERT(id, return false); + return !id->isEmpty(); + } QString toString() const { @@ -89,9 +94,6 @@ public: return QT_PREPEND_NAMESPACE(qHash(Utils::get(id))); return QT_PREPEND_NAMESPACE(qHash(0)); } - -private: - bool m_valid = true; }; template diff --git a/src/plugins/clangcodemodel/clangdfollowsymbol.cpp b/src/plugins/clangcodemodel/clangdfollowsymbol.cpp index 4c7400914ab..102e49acf4e 100644 --- a/src/plugins/clangcodemodel/clangdfollowsymbol.cpp +++ b/src/plugins/clangcodemodel/clangdfollowsymbol.cpp @@ -135,7 +135,7 @@ public: std::set openedFiles; VirtualFunctionAssistProcessor *virtualFuncAssistProcessor = nullptr; QMetaObject::Connection focusChangedConnection; - bool finished = false; + bool done = false; }; ClangdFollowSymbol::ClangdFollowSymbol(ClangdClient *client, const QTextCursor &cursor, @@ -146,14 +146,14 @@ ClangdFollowSymbol::ClangdFollowSymbol(ClangdClient *client, const QTextCursor & openInSplit)) { // Abort if the user does something else with the document in the meantime. - connect(document, &TextDocument::contentsChanged, this, &ClangdFollowSymbol::done, + connect(document, &TextDocument::contentsChanged, this, &ClangdFollowSymbol::emitDone, Qt::QueuedConnection); if (editorWidget) { connect(editorWidget, &CppEditorWidget::cursorPositionChanged, - this, &ClangdFollowSymbol::done, Qt::QueuedConnection); + this, &ClangdFollowSymbol::emitDone, Qt::QueuedConnection); } d->focusChangedConnection = connect(qApp, &QApplication::focusChanged, - this, &ClangdFollowSymbol::done, Qt::QueuedConnection); + this, &ClangdFollowSymbol::emitDone, Qt::QueuedConnection); // Step 1: Follow the symbol via "Go to Definition". At the same time, request the // AST node corresponding to the cursor position, so we can find out whether @@ -163,7 +163,7 @@ ClangdFollowSymbol::ClangdFollowSymbol(ClangdClient *client, const QTextCursor & if (!self) return; if (!link.hasValidTarget()) { - emit self->done(); + self->emitDone(); return; } self->d->defLink = link; @@ -205,6 +205,15 @@ void ClangdFollowSymbol::clear() d->pendingGotoDefRequests.clear(); } +void ClangdFollowSymbol::emitDone() +{ + if (d->done) + return; + + d->done = true; + emit done(); +} + bool ClangdFollowSymbol::Private::defLinkIsAmbiguous() const { // Even if the call is to a virtual function, it might not be ambiguous: @@ -238,18 +247,18 @@ void ClangdFollowSymbol::Private::handleDocumentInfoResults() // If something went wrong, we just follow the original link. if (symbolsToDisplay.isEmpty()) { callback(defLink); - emit q->done(); + q->emitDone(); return; } if (symbolsToDisplay.size() == 1) { callback(symbolsToDisplay.first().second); - emit q->done(); + q->emitDone(); return; } QTC_ASSERT(virtualFuncAssistProcessor && virtualFuncAssistProcessor->running(), - emit q->done(); return); + q->emitDone(); return); virtualFuncAssistProcessor->finalize(); } @@ -301,7 +310,7 @@ void ClangdFollowSymbol::VirtualFunctionAssistProcessor::resetData(bool resetFol return; m_followSymbol->d->virtualFuncAssistProcessor = nullptr; if (resetFollowSymbolData) - emit m_followSymbol->done(); + m_followSymbol->emitDone(); m_followSymbol = nullptr; } @@ -374,7 +383,7 @@ void ClangdFollowSymbol::Private::handleGotoDefinitionResult() // No dis-ambiguation necessary. Call back with the link and finish. if (!defLinkIsAmbiguous()) { callback(defLink); - emit q->done(); + q->emitDone(); return; } @@ -408,7 +417,7 @@ void ClangdFollowSymbol::Private::handleGotoImplementationResult( // We didn't find any further candidates, so jump to the original definition link. if (allLinks.size() == 1 && pendingGotoImplRequests.isEmpty()) { callback(allLinks.first()); - emit q->done(); + q->emitDone(); return; } diff --git a/src/plugins/clangcodemodel/clangdfollowsymbol.h b/src/plugins/clangcodemodel/clangdfollowsymbol.h index 4512675d041..fffe2c42b9f 100644 --- a/src/plugins/clangcodemodel/clangdfollowsymbol.h +++ b/src/plugins/clangcodemodel/clangdfollowsymbol.h @@ -55,6 +55,7 @@ signals: void done(); private: + void emitDone(); class VirtualFunctionAssistProcessor; class VirtualFunctionAssistProvider; diff --git a/src/plugins/clangcodemodel/clangdswitchdecldef.cpp b/src/plugins/clangcodemodel/clangdswitchdecldef.cpp index d3ce7187631..28c27034f48 100644 --- a/src/plugins/clangcodemodel/clangdswitchdecldef.cpp +++ b/src/plugins/clangcodemodel/clangdswitchdecldef.cpp @@ -68,6 +68,7 @@ public: const LinkHandler callback; optional ast; optional docSymbols; + bool done = false; }; ClangdSwitchDeclDef::ClangdSwitchDeclDef(ClangdClient *client, TextDocument *doc, @@ -75,14 +76,14 @@ ClangdSwitchDeclDef::ClangdSwitchDeclDef(ClangdClient *client, TextDocument *doc : QObject(client), d(new Private(this, client, doc, cursor, editorWidget, callback)) { // Abort if the user does something else with the document in the meantime. - connect(doc, &TextDocument::contentsChanged, this, &ClangdSwitchDeclDef::done, + connect(doc, &TextDocument::contentsChanged, this, &ClangdSwitchDeclDef::emitDone, Qt::QueuedConnection); if (editorWidget) { connect(editorWidget, &CppEditorWidget::cursorPositionChanged, - this, &ClangdSwitchDeclDef::done, Qt::QueuedConnection); + this, &ClangdSwitchDeclDef::emitDone, Qt::QueuedConnection); } connect(qApp, &QApplication::focusChanged, - this, &ClangdSwitchDeclDef::done, Qt::QueuedConnection); + this, &ClangdSwitchDeclDef::emitDone, Qt::QueuedConnection); connect(client->documentSymbolCache(), &DocumentSymbolCache::gotSymbols, this, [this](const DocumentUri &uri, const DocumentSymbolsResult &symbols) { @@ -101,11 +102,11 @@ ClangdSwitchDeclDef::ClangdSwitchDeclDef(ClangdClient *client, TextDocument *doc if (!self) return; if (!d->document) { - emit done(); + emitDone(); return; } if (!ast.isValid()) { - emit done(); + emitDone(); return; } d->ast = ast; @@ -122,6 +123,15 @@ ClangdSwitchDeclDef::~ClangdSwitchDeclDef() delete d; } +void ClangdSwitchDeclDef::emitDone() +{ + if (d->done) + return; + + d->done = true; + emit done(); +} + optional ClangdSwitchDeclDef::Private::getFunctionNode() const { QTC_ASSERT(ast, return {}); @@ -160,7 +170,7 @@ QTextCursor ClangdSwitchDeclDef::Private::cursorForFunctionName(const ClangdAstN void ClangdSwitchDeclDef::Private::handleDeclDefSwitchReplies() { if (!document) { - emit q->done(); + q->emitDone(); return; } @@ -171,7 +181,7 @@ void ClangdSwitchDeclDef::Private::handleDeclDefSwitchReplies() ast->print(0); const Utils::optional functionNode = getFunctionNode(); if (!functionNode) { - emit q->done(); + q->emitDone(); return; } @@ -182,7 +192,7 @@ void ClangdSwitchDeclDef::Private::handleDeclDefSwitchReplies() client->followSymbol(document.data(), funcNameCursor, editorWidget, callback, true, false); } - emit q->done(); + q->emitDone(); } } // namespace ClangCodeModel::Internal diff --git a/src/plugins/clangcodemodel/clangdswitchdecldef.h b/src/plugins/clangcodemodel/clangdswitchdecldef.h index 8c278bf6555..44e296686db 100644 --- a/src/plugins/clangcodemodel/clangdswitchdecldef.h +++ b/src/plugins/clangcodemodel/clangdswitchdecldef.h @@ -52,6 +52,7 @@ signals: void done(); private: + void emitDone(); class Private; Private * const d; }; diff --git a/src/plugins/languageclient/semantichighlightsupport.cpp b/src/plugins/languageclient/semantichighlightsupport.cpp index 9536052b811..7fbf6645912 100644 --- a/src/plugins/languageclient/semantichighlightsupport.cpp +++ b/src/plugins/languageclient/semantichighlightsupport.cpp @@ -88,6 +88,7 @@ void SemanticTokenSupport::reloadSemanticTokensImpl(TextDocument *textDocument, filePath, documentVersion = m_client->documentVersion(filePath)]( const SemanticTokensFullRequest::Response &response) { + m_runningRequests.remove(filePath); if (const auto error = response.error()) { qCDebug(LOGLSPHIGHLIGHT) << "received error" << error->code() << error->message() << "for" << filePath; @@ -120,6 +121,10 @@ void SemanticTokenSupport::reloadSemanticTokensImpl(TextDocument *textDocument, request.setResponseCallback(responseCallback); qCDebug(LOGLSPHIGHLIGHT) << "Requesting all tokens for" << filePath << "with version" << m_client->documentVersion(filePath); + MessageId &id = m_runningRequests[filePath]; + if (id.isValid()) + m_client->cancelRequest(id); + id = request.id(); m_client->sendMessage(request); } } @@ -151,6 +156,7 @@ void SemanticTokenSupport::updateSemanticTokensImpl(TextDocument *textDocument, request.setResponseCallback( [this, filePath, documentVersion, remainingRerequests]( const SemanticTokensFullDeltaRequest::Response &response) { + m_runningRequests.remove(filePath); if (const auto error = response.error()) { qCDebug(LOGLSPHIGHLIGHT) << "received error" << error->code() << error->message() << "for" << filePath; @@ -168,6 +174,10 @@ void SemanticTokenSupport::updateSemanticTokensImpl(TextDocument *textDocument, }); qCDebug(LOGLSPHIGHLIGHT) << "Requesting delta for" << filePath << "with version" << documentVersion; + MessageId &id = m_runningRequests[filePath]; + if (id.isValid()) + m_client->cancelRequest(id); + id = request.id(); m_client->sendMessage(request); return; } diff --git a/src/plugins/languageclient/semantichighlightsupport.h b/src/plugins/languageclient/semantichighlightsupport.h index a03947c9153..d8314979111 100644 --- a/src/plugins/languageclient/semantichighlightsupport.h +++ b/src/plugins/languageclient/semantichighlightsupport.h @@ -120,6 +120,7 @@ private: QStringList m_tokenTypeStrings; QStringList m_tokenModifierStrings; QSet m_docReloadQueue; + QHash m_runningRequests; }; } // namespace LanguageClient diff --git a/src/plugins/qmldesigner/components/connectioneditor/connectionview.cpp b/src/plugins/qmldesigner/components/connectioneditor/connectionview.cpp index 4884925c0e3..b174cafe6db 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionview.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionview.cpp @@ -35,6 +35,10 @@ #include #include #include +#include +#include + +#include #include @@ -268,6 +272,25 @@ BackendModel *ConnectionView::backendModel() const return m_backendModel; } +ConnectionView *ConnectionView::instance() +{ + + static ConnectionView *s_instance = nullptr; + + if (s_instance) + return s_instance; + + const auto views = QmlDesignerPlugin::instance()->viewManager().views(); + for (auto *view : views) { + ConnectionView *myView = qobject_cast(view); + if (myView) + s_instance = myView; + } + + QTC_ASSERT(s_instance, return nullptr); + return s_instance; +} + } // namesapce Internal } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/connectioneditor/connectionview.h b/src/plugins/qmldesigner/components/connectioneditor/connectionview.h index fb934ba3855..7bf3064f830 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionview.h +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionview.h @@ -83,13 +83,14 @@ public: QTableView *dynamicPropertiesTableView() const; QTableView *backendView() const; -protected: + DynamicPropertiesModel *dynamicPropertiesModel() const; + ConnectionViewWidget *connectionViewWidget() const; ConnectionModel *connectionModel() const; BindingModel *bindingModel() const; - DynamicPropertiesModel *dynamicPropertiesModel() const; BackendModel *backendModel() const; + static ConnectionView *instance(); private: //variables QPointer m_connectionViewWidget; diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp index e45cac43287..49446c324e0 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp @@ -63,22 +63,6 @@ QString idOrTypeNameForNode(const QmlDesigner::ModelNode &modelNode) return idLabel; } -QmlDesigner::PropertyName unusedProperty(const QmlDesigner::ModelNode &modelNode) -{ - QmlDesigner::PropertyName propertyName = "property"; - int i = 0; - if (modelNode.metaInfo().isValid()) { - while (true) { - const QmlDesigner::PropertyName currentPropertyName = propertyName + QString::number(i).toLatin1(); - if (!modelNode.hasProperty(currentPropertyName) && !modelNode.metaInfo().hasProperty(currentPropertyName)) - return currentPropertyName; - i++; - } - } - - return propertyName; -} - QVariant convertVariantForTypeName(const QVariant &variant, const QmlDesigner::TypeName &typeName) { QVariant returnValue = variant; @@ -120,6 +104,22 @@ namespace QmlDesigner { namespace Internal { +QmlDesigner::PropertyName DynamicPropertiesModel::unusedProperty(const QmlDesigner::ModelNode &modelNode) +{ + QmlDesigner::PropertyName propertyName = "property"; + int i = 0; + if (modelNode.metaInfo().isValid()) { + while (true) { + const QmlDesigner::PropertyName currentPropertyName = propertyName + QString::number(i).toLatin1(); + if (!modelNode.hasProperty(currentPropertyName) && !modelNode.metaInfo().hasProperty(currentPropertyName)) + return currentPropertyName; + i++; + } + } + + return propertyName; +} + DynamicPropertiesModel::DynamicPropertiesModel(ConnectionView *parent) : QStandardItemModel(parent) , m_connectionView(parent) diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h index 3b7d0cf4231..a5b674c1f8a 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h @@ -69,6 +69,8 @@ public: BindingProperty replaceVariantWithBinding(const PropertyName &name, bool copyValue = false); void resetProperty(const PropertyName &name); + QmlDesigner::PropertyName unusedProperty(const QmlDesigner::ModelNode &modelNode); + protected: void addProperty(const QVariant &propertyValue, const QString &propertyType, diff --git a/src/plugins/qmldesigner/components/edit3d/backgroundcolorselection.cpp b/src/plugins/qmldesigner/components/edit3d/backgroundcolorselection.cpp index 3d7a9207c08..40d5ca4084b 100644 --- a/src/plugins/qmldesigner/components/edit3d/backgroundcolorselection.cpp +++ b/src/plugins/qmldesigner/components/edit3d/backgroundcolorselection.cpp @@ -23,8 +23,6 @@ ** ****************************************************************************/ -#pragma once - #include #include diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.h index 4ae156dc921..af96ddd5813 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.h +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.h @@ -187,4 +187,3 @@ private: QML_DECLARE_TYPE(PropertyEditorValue) QML_DECLARE_TYPE(PropertyEditorNodeWrapper) -QML_DECLARE_TYPE(QQmlPropertyMap) diff --git a/src/plugins/qmldesigner/designercore/include/viewmanager.h b/src/plugins/qmldesigner/designercore/include/viewmanager.h index dd77c07f459..93d05c7087d 100644 --- a/src/plugins/qmldesigner/designercore/include/viewmanager.h +++ b/src/plugins/qmldesigner/designercore/include/viewmanager.h @@ -105,6 +105,7 @@ public: void disableStandardViews(); void enableStandardViews(); + QList views() const; private: // functions Q_DISABLE_COPY(ViewManager) @@ -122,7 +123,6 @@ private: // functions void switchStateEditorViewToBaseState(); void switchStateEditorViewToSavedState(); - QList views() const; QList standardViews() const; private: // variables diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 38a02059696..28d99003cae 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -255,6 +255,8 @@ void DesignModeWidget::setup() // First get all navigation views QList factories = Core::INavigationWidgetFactory::allNavigationFactories(); + QList viewCommands; + for (Core::INavigationWidgetFactory *factory : factories) { Core::NavigationView navigationView; navigationView.widget = nullptr; @@ -304,7 +306,7 @@ void DesignModeWidget::setup() actionToggle.withSuffix(uniqueId + "Widget"), designContext); command->setAttribute(Core::Command::CA_Hide); - mviews->addAction(command); + viewCommands.append(command); } } @@ -327,7 +329,7 @@ void DesignModeWidget::setup() actionToggle.withSuffix(widgetInfo.uniqueId + "Widget"), designContext); command->setAttribute(Core::Command::CA_Hide); - mviews->addAction(command); + viewCommands.append(command); } // Finally the output pane @@ -347,12 +349,19 @@ void DesignModeWidget::setup() actionToggle.withSuffix("OutputPaneWidget"), designContext); command->setAttribute(Core::Command::CA_Hide); - mviews->addAction(command); + viewCommands.append(command); connect(outputPanePlaceholder, &Core::OutputPanePlaceHolder::visibilityChangeRequested, m_outputPaneDockWidget, &ADS::DockWidget::toggleView); } + std::sort(viewCommands.begin(), viewCommands.end(), [](Core::Command *first, Core::Command *second){ + return first->description() < second->description(); + }); + + for (Core::Command *command : viewCommands) + mviews->addAction(command); + // Create toolbars auto toolBar = new QToolBar(); diff --git a/src/plugins/remotelinux/makeinstallstep.cpp b/src/plugins/remotelinux/makeinstallstep.cpp index 534ebc25399..79a90814eea 100644 --- a/src/plugins/remotelinux/makeinstallstep.cpp +++ b/src/plugins/remotelinux/makeinstallstep.cpp @@ -107,7 +107,7 @@ MakeInstallStep::MakeInstallStep(BuildStepList *parent, Id id) : MakeStep(parent cleanInstallRootAspect->setSettingsKey(CleanInstallRootAspectId); cleanInstallRootAspect->setLabel(tr("Clean install root first:"), BoolAspect::LabelPlacement::InExtraLabel); - cleanInstallRootAspect->setValue(false); + cleanInstallRootAspect->setValue(true); const auto commandLineAspect = addAspect(); commandLineAspect->setId(FullCommandLineAspectId); diff --git a/src/shared/qbs b/src/shared/qbs index 85711c54b13..5d45d6e6a5b 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 85711c54b13cb119ccfc0473bfe0a064e3ca6403 +Subproject commit 5d45d6e6a5b4fbb13b9ee3e5949dbfd1978c667a diff --git a/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp b/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp index fe3fadd4f7d..2a6f7b1ac30 100644 --- a/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp +++ b/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp @@ -403,7 +403,7 @@ protected: if (Symbol *s = klass->find(accept0)) { if (Function *meth = s->type()->asFunctionType()) { if (! meth->isPureVirtual()) { - for (const ClassOrNamespace *u : b->usings()) { + for (ClassOrNamespace *u : b->usings()) { if (interfaces.contains(u)) { // qDebug() << oo(klass->name()) << "implements" << oo(u->symbols().first()->name()); } else {