diff options
112 files changed, 793 insertions, 880 deletions
diff --git a/dist/changes-4.0.0.md b/dist/changes-4.0.0.md index 64d309e2957..57ce375c7ec 100644 --- a/dist/changes-4.0.0.md +++ b/dist/changes-4.0.0.md @@ -20,6 +20,7 @@ General * Fixed issues with HiDPI (QTCREATORBUG-15222) * Fixed that switching theme did not switch editor color scheme (QTCREATORBUG-15229) +* Fixed crash when double clicking wizard (QTCREATORBUG-15968) Editing @@ -28,15 +29,20 @@ Editing * Added `Go to Previous Split or Window` * Fixed whitespace cleaning for mixed tabs and spaces configurations (QTCREATORBUG-7994) +* Fixed download of highlighting files (QTCREATORBUG-15997) +* Fixed crash when cutting text from multiple splits (QTCREATORBUG-16046) Help * Fixed issues with scrolling to right position (QTCREATORBUG-15548) +* Fixed images overlapping text with older Qt documentation (QTCREATORBUG-15887) +* Fixed fallback font (QTCREATORBUG-15887) QMake Projects * Added wizard for creating `Qt Labs Controls Application` * Added support for `STATECHARTS` +* Fixed crash when switching session while project is read (QTCREATORBUG-15993) CMake Projects @@ -62,6 +68,7 @@ Qt Support C++ Support * Fixed issue with negative enum values +* Fixed completion of Doxygen tags (QTCREATORBUG-9373, QTCREATORBUG-15143) * Clang code model * Simplified activation (it is now active if the plugin is enabled) * Added customizable configurations for warnings (global and per project) @@ -71,16 +78,23 @@ C++ Support QML Support * Fixed various issues with QML/JS Console (QTCREATORBUG-14931) +* Fixed resolution of `alias` directives in `.qrc` files Debugging -* Added pretty printers for `std::set`, `std::map` and `std::multimap` - (for simple types of keys and values) +* Added pretty printers for `std::set`, `std::map`, `std::multimap` + (for simple types of keys and values), `std::valarray` and `QBitArray` * Improved performance for watches * Improved visualization of `QByteArray` and `char[]` with non-printable values (QTCREATORBUG-15549) * CDB * Fixed showing value of `std::[w]string` (QTCREATORBUG-15016) +* GDB + * Fixed import of system pretty printer (QTCREATORBUG-15923) + * Fixed changing display format for `float` (QTCREATORBUG-12800) +* LLDB + * Fixed issues with Xcode 7.3 + (QTCREATORBUG-15965, QTCREATORBUG-15945, QTCREATORBUG-15949) QML Profiler @@ -95,6 +109,7 @@ QML Profiler Clang Static Analyzer * Fixed analyzing with MinGW tool chain settings +* Fixed that Clang was run with default target instead of project target Test Integration @@ -102,6 +117,7 @@ Test Integration * Fixed resolution of source file of failed test on Windows (QTCREATORBUG-15667) * Fixed that additional output of passing tests was ignored * Fixed test detection with CMake projects (QTCREATORBUG-15813) +* Fixed crash while editing test (QTCREATORBUG-16062) * Google Test * Added support for typed tests * Fixed parsing of file and line information diff --git a/doc/examples/transitions/MainForm.ui.qml b/doc/examples/transitions/MainForm.ui.qml index f599b842a34..61a0e92b295 100644 --- a/doc/examples/transitions/MainForm.ui.qml +++ b/doc/examples/transitions/MainForm.ui.qml @@ -1,79 +1,38 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 +import QtQuick 2.6 +import QtQuick.Controls 1.5 +import QtQuick.Layouts 1.3 Item { + id: page width: 640 height: 480 + property alias mouseArea1: mouseArea1 + property alias mouseArea3: mouseArea3 + property alias mouseArea2: mouseArea2 property alias bottomLeftRect: bottomLeftRect property alias middleRightRect: middleRightRect property alias topLeftRect: topLeftRect property alias icon: icon - property alias mouseArea1: mouseArea1 - property alias mouseArea2: mouseArea2 - property alias mouseArea3: mouseArea3 + + Image { + id: icon + x: 10 + y: 20 + source: "qt-logo.png" + } Rectangle { id: topLeftRect - width: 46 - height: 55 + width: 55 + height: 41 color: "#00000000" - radius: 6 + radius: 0 + border.color: "#808080" anchors.left: parent.left anchors.leftMargin: 10 anchors.top: parent.top anchors.topMargin: 20 - border.color: "#808080" + border.width: 1 MouseArea { id: mouseArea1 @@ -83,12 +42,12 @@ Item { Rectangle { id: middleRightRect - x: 6 + x: -8 y: 6 - width: 46 - height: 55 + width: 55 + height: 41 color: "#00000000" - radius: 6 + radius: 0 anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right anchors.rightMargin: 10 @@ -96,32 +55,27 @@ Item { id: mouseArea2 anchors.fill: parent } + border.width: 1 border.color: "#808080" } Rectangle { id: bottomLeftRect - x: 0 - y: 4 - width: 46 - height: 55 + y: -2 + width: 55 + height: 41 color: "#00000000" - radius: 6 + radius: 0 anchors.bottom: parent.bottom anchors.bottomMargin: 20 + anchors.left: parent.left + anchors.leftMargin: 10 MouseArea { id: mouseArea3 anchors.fill: parent } - anchors.left: parent.left + border.width: 1 border.color: "#808080" - anchors.leftMargin: 10 } - Image { - id: icon - x: 10 - y: 20 - source: "qt-logo.png" - } } diff --git a/doc/examples/transitions/main.cpp b/doc/examples/transitions/main.cpp index 618e0f3da83..d76049d67eb 100644 --- a/doc/examples/transitions/main.cpp +++ b/doc/examples/transitions/main.cpp @@ -1,53 +1,3 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - #include <QGuiApplication> #include <QQmlApplicationEngine> diff --git a/doc/examples/transitions/main.qml b/doc/examples/transitions/main.qml index 113cb551b04..b2d6928de41 100644 --- a/doc/examples/transitions/main.qml +++ b/doc/examples/transitions/main.qml @@ -1,122 +1,72 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.5 -import QtQuick.Controls 1.4 +import QtQuick 2.6 +import QtQuick.Controls 1.5 import QtQuick.Dialogs 1.2 ApplicationWindow { visible: true - title: qsTr("Transitions") width: 330 height: 330 + title: qsTr("Transitions") MainForm { anchors.fill: parent id: page mouseArea1 { - onClicked: stateGroup.state = ' ' - } - mouseArea2 { - onClicked: stateGroup.state = 'State1' - } - mouseArea3 { - onClicked: stateGroup.state = 'State2' - } + onClicked: stateGroup.state = ' ' + } + mouseArea2 { + onClicked: stateGroup.state = 'State1' + } + mouseArea3 { + onClicked: stateGroup.state = 'State2' + } } StateGroup { - id: stateGroup - states: [ - State { - name: "State1" + id: stateGroup + states: [ + State { + name: "State1" - PropertyChanges { - target: page.icon - x: page.middleRightRect.x - y: page.middleRightRect.y - } - }, - State { - name: "State2" + PropertyChanges { + target: page.icon + x: page.middleRightRect.x + y: page.middleRightRect.y + } + }, + State { + name: "State2" - PropertyChanges { - target: page.icon - x: page.bottomLeftRect.x - y: page.bottomLeftRect.y + PropertyChanges { + target: page.icon + x: page.bottomLeftRect.x + y: page.bottomLeftRect.y + } } - } - ] - transitions: [ - Transition { - from: "*"; to: "State1" - NumberAnimation { - easing.type: Easing.OutBounce - properties: "x,y"; - duration: 1000 - } - }, - Transition { - from: "*"; to: "State2" - NumberAnimation { - properties: "x,y"; - easing.type: Easing.InOutQuad; - duration: 2000 - } - }, - Transition { - NumberAnimation { - properties: "x,y"; - duration: 200 + ] + transitions: [ + Transition { + from: "*"; to: "State1" + NumberAnimation { + easing.type: Easing.OutBounce + properties: "x,y"; + duration: 1000 + } + }, + Transition { + from: "*"; to: "State2" + NumberAnimation { + properties: "x,y"; + easing.type: Easing.InOutQuad; + duration: 2000 + } + }, + Transition { + NumberAnimation { + properties: "x,y"; + duration: 200 + } } - } - ] - } - } + ] + } +} diff --git a/doc/examples/transitions/qt-logo.png b/doc/examples/transitions/qt-logo.png Binary files differindex 14ddf2a0289..f465822ed08 100644 --- a/doc/examples/transitions/qt-logo.png +++ b/doc/examples/transitions/qt-logo.png diff --git a/doc/images/qmldesigner-bindings.png b/doc/images/qmldesigner-bindings.png Binary files differindex ad29109beea..723fe3ea119 100644 --- a/doc/images/qmldesigner-bindings.png +++ b/doc/images/qmldesigner-bindings.png diff --git a/doc/images/qmldesigner-connections.png b/doc/images/qmldesigner-connections.png Binary files differindex 356fa0f0d10..6548e88e904 100644 --- a/doc/images/qmldesigner-connections.png +++ b/doc/images/qmldesigner-connections.png diff --git a/doc/images/qmldesigner-dynamicprops.png b/doc/images/qmldesigner-dynamicprops.png Binary files differindex 7807918131b..04949ac6814 100644 --- a/doc/images/qmldesigner-dynamicprops.png +++ b/doc/images/qmldesigner-dynamicprops.png diff --git a/doc/images/qmldesigner-element-properties.png b/doc/images/qmldesigner-element-properties.png Binary files differindex e1680dfaefa..76b4ca25ce5 100644 --- a/doc/images/qmldesigner-element-properties.png +++ b/doc/images/qmldesigner-element-properties.png diff --git a/doc/images/qmldesigner-element-size.png b/doc/images/qmldesigner-element-size.png Binary files differindex 63bdb533fd8..47c555642f1 100644 --- a/doc/images/qmldesigner-element-size.png +++ b/doc/images/qmldesigner-element-size.png diff --git a/doc/images/qmldesigner-export-item.png b/doc/images/qmldesigner-export-item.png Binary files differindex 83ba7b1afca..4dd43614906 100644 --- a/doc/images/qmldesigner-export-item.png +++ b/doc/images/qmldesigner-export-item.png diff --git a/doc/images/qmldesigner-navigator-arrows.png b/doc/images/qmldesigner-navigator-arrows.png Binary files differindex 9f8f0eb950b..06d884b5c51 100644 --- a/doc/images/qmldesigner-navigator-arrows.png +++ b/doc/images/qmldesigner-navigator-arrows.png diff --git a/doc/images/qmldesigner-navigator.png b/doc/images/qmldesigner-navigator.png Binary files differindex e58152bbb68..fc168249f8f 100644 --- a/doc/images/qmldesigner-navigator.png +++ b/doc/images/qmldesigner-navigator.png diff --git a/doc/images/qmldesigner-new-project.png b/doc/images/qmldesigner-new-project.png Binary files differindex 1619fd18b3b..3d8e5265f03 100644 --- a/doc/images/qmldesigner-new-project.png +++ b/doc/images/qmldesigner-new-project.png diff --git a/doc/images/qmldesigner-preview-size.png b/doc/images/qmldesigner-preview-size.png Binary files differindex 9f67cc50035..63003fa46f9 100644 --- a/doc/images/qmldesigner-preview-size.png +++ b/doc/images/qmldesigner-preview-size.png diff --git a/doc/images/qmldesigner-properties-explicit-base.png b/doc/images/qmldesigner-properties-explicit-base.png Binary files differindex c3e10adcef7..e8f845dd222 100644 --- a/doc/images/qmldesigner-properties-explicit-base.png +++ b/doc/images/qmldesigner-properties-explicit-base.png diff --git a/doc/images/qmldesigner-properties-explicit-state1.png b/doc/images/qmldesigner-properties-explicit-state1.png Binary files differindex c33ff6c140e..152c94297f3 100644 --- a/doc/images/qmldesigner-properties-explicit-state1.png +++ b/doc/images/qmldesigner-properties-explicit-state1.png diff --git a/doc/images/qmldesigner-qml-components.png b/doc/images/qmldesigner-qml-components.png Binary files differindex 593c81a8eee..e4653da5409 100644 --- a/doc/images/qmldesigner-qml-components.png +++ b/doc/images/qmldesigner-qml-components.png diff --git a/doc/images/qmldesigner-screen-design.png b/doc/images/qmldesigner-screen-design.png Binary files differindex a5aa8a54151..4cecbbb390e 100644 --- a/doc/images/qmldesigner-screen-design.png +++ b/doc/images/qmldesigner-screen-design.png diff --git a/doc/images/qmldesigner-states.png b/doc/images/qmldesigner-states.png Binary files differindex f768bdddc9a..460c810e211 100644 --- a/doc/images/qmldesigner-states.png +++ b/doc/images/qmldesigner-states.png diff --git a/doc/images/qmldesigner-transitions.png b/doc/images/qmldesigner-transitions.png Binary files differindex 1fee9d18275..66624e93d26 100644 --- a/doc/images/qmldesigner-transitions.png +++ b/doc/images/qmldesigner-transitions.png diff --git a/doc/images/qmldesigner-tutorial-quick-toolbar.png b/doc/images/qmldesigner-tutorial-quick-toolbar.png Binary files differindex 48ffc07c352..51c3616eaa5 100644 --- a/doc/images/qmldesigner-tutorial-quick-toolbar.png +++ b/doc/images/qmldesigner-tutorial-quick-toolbar.png diff --git a/doc/images/qmldesigner-tutorial-topleftrect.png b/doc/images/qmldesigner-tutorial-topleftrect.png Binary files differindex 3cc9d64c8e6..b4e0d22f05e 100644 --- a/doc/images/qmldesigner-tutorial-topleftrect.png +++ b/doc/images/qmldesigner-tutorial-topleftrect.png diff --git a/doc/images/qmldesigner-tutorial-ui-ready.png b/doc/images/qmldesigner-tutorial-ui-ready.png Binary files differnew file mode 100644 index 00000000000..3a3b3110811 --- /dev/null +++ b/doc/images/qmldesigner-tutorial-ui-ready.png diff --git a/doc/images/qmldesigner-tutorial-user-icon.png b/doc/images/qmldesigner-tutorial-user-icon.png Binary files differindex 2e3f84ee0c1..ee3a14485e0 100644 --- a/doc/images/qmldesigner-tutorial-user-icon.png +++ b/doc/images/qmldesigner-tutorial-user-icon.png diff --git a/doc/images/qmldesigner-tutorial.png b/doc/images/qmldesigner-tutorial.png Binary files differindex a70f2860b6e..3cf47bc2fef 100644 --- a/doc/images/qmldesigner-tutorial.png +++ b/doc/images/qmldesigner-tutorial.png diff --git a/doc/images/qmldesigner-uiforms-example-main-view.png b/doc/images/qmldesigner-uiforms-example-main-view.png Binary files differindex 099611c10fe..9fc098b9feb 100644 --- a/doc/images/qmldesigner-uiforms-example-main-view.png +++ b/doc/images/qmldesigner-uiforms-example-main-view.png diff --git a/doc/images/qmldesigner-visual-editor.png b/doc/images/qmldesigner-visual-editor.png Binary files differindex f40fd880f94..7831f615b84 100644 --- a/doc/images/qmldesigner-visual-editor.png +++ b/doc/images/qmldesigner-visual-editor.png diff --git a/doc/images/qtcreator-locator-customize.png b/doc/images/qtcreator-locator-customize.png Binary files differindex 01aaab0a767..c9899959df2 100644 --- a/doc/images/qtcreator-locator-customize.png +++ b/doc/images/qtcreator-locator-customize.png diff --git a/doc/images/qtcreator-modeleditor-classes.png b/doc/images/qtcreator-modeleditor-classes.png Binary files differindex f85430190f5..182a1596e88 100644 --- a/doc/images/qtcreator-modeleditor-classes.png +++ b/doc/images/qtcreator-modeleditor-classes.png diff --git a/doc/images/qtcreator-modeleditor-packages.png b/doc/images/qtcreator-modeleditor-packages.png Binary files differindex 67170bc53fa..50ba8f86d6c 100644 --- a/doc/images/qtcreator-modeleditor-packages.png +++ b/doc/images/qtcreator-modeleditor-packages.png diff --git a/doc/images/qtcreator-modeleditor.png b/doc/images/qtcreator-modeleditor.png Binary files differindex de936c26e8d..52a404f59db 100644 --- a/doc/images/qtcreator-modeleditor.png +++ b/doc/images/qtcreator-modeleditor.png diff --git a/doc/images/qtcreator-project-options-deploy.png b/doc/images/qtcreator-project-options-deploy.png Binary files differindex d4c0f8cad2f..d921afe180e 100644 --- a/doc/images/qtcreator-project-options-deploy.png +++ b/doc/images/qtcreator-project-options-deploy.png diff --git a/doc/images/qtcreator-refactoring-find.png b/doc/images/qtcreator-refactoring-find.png Binary files differindex 288b51a0304..d2524de7ec1 100644 --- a/doc/images/qtcreator-refactoring-find.png +++ b/doc/images/qtcreator-refactoring-find.png diff --git a/doc/images/qtcreator-refactoring-replace.png b/doc/images/qtcreator-refactoring-replace.png Binary files differindex 8cf98e94d19..4c62c5f0656 100644 --- a/doc/images/qtcreator-refactoring-replace.png +++ b/doc/images/qtcreator-refactoring-replace.png diff --git a/doc/images/qtcreator-refactoring-virtual-function-dialog.png b/doc/images/qtcreator-refactoring-virtual-function-dialog.png Binary files differindex b761f33db10..6fd776c9cdb 100644 --- a/doc/images/qtcreator-refactoring-virtual-function-dialog.png +++ b/doc/images/qtcreator-refactoring-virtual-function-dialog.png diff --git a/doc/images/qtcreator-search-allprojects.png b/doc/images/qtcreator-search-allprojects.png Binary files differindex 8cecbf686ee..f78038af4bb 100644 --- a/doc/images/qtcreator-search-allprojects.png +++ b/doc/images/qtcreator-search-allprojects.png diff --git a/doc/images/qtcreator-search-cpp-symbols.png b/doc/images/qtcreator-search-cpp-symbols.png Binary files differindex 706ec20ade8..9f34e8f621c 100644 --- a/doc/images/qtcreator-search-cpp-symbols.png +++ b/doc/images/qtcreator-search-cpp-symbols.png diff --git a/doc/images/qtcreator-searchresults.png b/doc/images/qtcreator-searchresults.png Binary files differindex 0b9c06cae8f..02835cbb4b4 100644 --- a/doc/images/qtcreator-searchresults.png +++ b/doc/images/qtcreator-searchresults.png diff --git a/doc/src/editors/creator-editors.qdoc b/doc/src/editors/creator-editors.qdoc index e1a803ab401..64b8fa167f2 100644 --- a/doc/src/editors/creator-editors.qdoc +++ b/doc/src/editors/creator-editors.qdoc @@ -1507,7 +1507,7 @@ \li \uicontrol {All Projects} searches files matching the defined file pattern in all currently open projects. - For example, to search for \c previewer only in \c {.cpp} + For example, to search for a string only in \c {.cpp} and \c {.h} files, enter in \uicontrol {File pattern} \c {*.cpp,*.h}. diff --git a/doc/src/editors/creator-modeling.qdoc b/doc/src/editors/creator-modeling.qdoc index de6afd6afb8..588b722a216 100644 --- a/doc/src/editors/creator-modeling.qdoc +++ b/doc/src/editors/creator-modeling.qdoc @@ -87,6 +87,9 @@ the editor to copy all elements to the clipboard by using 300 dpi. Then paste the diagram to an application that can print images. + To save diagrams as images, select \uicontrol Tools > + \uicontrol {Model Editor} > \uicontrol {Export Diagram}. + \section1 Creating Models To create models: diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc index 7ec6f935c0e..ae8c6b2ba0d 100644 --- a/doc/src/howto/creator-ui.qdoc +++ b/doc/src/howto/creator-ui.qdoc @@ -47,7 +47,9 @@ \li Open tutorials and example projects - \li Read news from the online community and Qt labs + \li Read news from the online community and Qt blogs + + \li Create or manage a Qt Account \endlist @@ -451,6 +453,13 @@ Select toolbar buttons to run applications, to attach the debugger to the running application, and to stop running or debugging. + To specify settings for displaying application output, select + \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > + \uicontrol General. You can select whether to open the + \uicontrol{Application Output} pane on output when running or debugging + applications, to clear old output on a new run, to word-wrap output, and to + limit output to the specified number of lines. + \section2 Compile Output The \uicontrol{Compile Output} pane provides all output from the compiler. @@ -464,6 +473,11 @@ Select the \uicontrol {Cancel Build} button to cancel the build. + To specify whether to open the \uicontrol {Compile Output} pane on output + when building applications, select \uicontrol Tools > \uicontrol Options > + \uicontrol {Build & Run} > \uicontrol General, and then select the + \uicontrol {Open Compile Output pane when building} check box. + \section2 Debugger Console In the \uicontrol {Debugger Console}, you can type JavaScript expressions and use them to get diff --git a/doc/src/projects/creator-projects-builds-customizing.qdoc b/doc/src/projects/creator-projects-builds-customizing.qdoc index 3b1b6016604..be8f94fe1db 100644 --- a/doc/src/projects/creator-projects-builds-customizing.qdoc +++ b/doc/src/projects/creator-projects-builds-customizing.qdoc @@ -47,4 +47,13 @@ \image qtcreator-project-options-deploy.png "Project General Options" + On Windows, you can use \c jom instead of \c nmake for building the project + to distribute the compilation process to multiple CPU cores. You can download + \c jom from \l{http://download.qt.io/official_releases/jom}{Qt Downloads}. + To use \c jom, select the \uicontrol {Use jom instead of nmake} check box. + Deselect the check box if you experience build problems. + + You can specify the default build directory in the + \uicontrol {Default build directory} field using \QC variables (2). + */ diff --git a/doc/src/qnx/creator-deployment-qnx.qdoc b/doc/src/qnx/creator-deployment-qnx.qdoc index b0d3cc67f6c..90c36930a9d 100644 --- a/doc/src/qnx/creator-deployment-qnx.qdoc +++ b/doc/src/qnx/creator-deployment-qnx.qdoc @@ -47,7 +47,7 @@ \image qtcreator-qnx-deployment.png "Deploy to device" The files to be installed are listed in the \uicontrol {Deployment} step, - the \uicontrol {Files to install for subproject} field. The + the \uicontrol {Files to deploy} field. The \uicontrol {Local File Path} field displays the location of the file on the development PC. The \uicontrol {Remote Directory} field displays the folder where the file is installed on the device. Text in red color indicates that diff --git a/doc/src/qtquick/qtquick-app-tutorial.qdoc b/doc/src/qtquick/qtquick-app-tutorial.qdoc index 85bc3ff2483..7f122c33112 100644 --- a/doc/src/qtquick/qtquick-app-tutorial.qdoc +++ b/doc/src/qtquick/qtquick-app-tutorial.qdoc @@ -74,8 +74,11 @@ \li In the \uicontrol Navigator, select \uicontrol RowLayout and press \key Delete to delete it. + \li Select \uicontrol Item in the navigator, and enter \e page in the + \uicontrol Id field. + \li In \uicontrol Library > \uicontrol Resources, select qt-logo.png and - drag and drop it to the \uicontrol Item in the navigator. + drag and drop it to the \e page in the navigator. \image qmldesigner-tutorial-user-icon.png "Image properties" @@ -101,8 +104,8 @@ \li In the \uicontrol Id field, enter \e topLeftRect. - \li In the \uicontrol Size field, set \uicontrol W to \e 46 and - \uicontrol H to \e 55, for the rectangle size to match the image + \li In the \uicontrol Size field, set \uicontrol W to \e 55 and + \uicontrol H to \e 41, for the rectangle size to match the image size. \li In the \uicontrol Color field, click the @@ -113,9 +116,6 @@ \li In the \uicontrol {Border color} field, set the border color to \e #808080. - \li In the \uicontrol Radius field, select \e 6 to create rounded - corners for the rectangle. - \li Click \uicontrol {Layout}, and then click the top and left anchor buttons to anchor the rectangle to the top left corner of the page. @@ -187,6 +187,8 @@ the \uicontrol Edit mode to add animation to the application, as described in the following section. + \image qmldesigner-tutorial-ui-ready.png "Transitions UI" + \section1 Adding Application Logic The new project wizard adds boilerplate code to the \e main.qml file to @@ -207,7 +209,7 @@ \quotefromfile transitions/main.qml \skipto ApplicationWindow - \printuntil height + \printuntil title \li Specify an id for the MainForm type to be able to use the properties that you exported in \e MainForm.ui.qml: diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 6fd697fcc3b..506f2379a80 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -160,6 +160,7 @@ lldb.SBType.__str__ = lldb.SBType.GetName class Dumper(DumperBase): def __init__(self): DumperBase.__init__(self) + lldb.theDumper = self self.outputLock = threading.Lock() self.debugger = lldb.SBDebugger.Create() @@ -1489,6 +1490,21 @@ class Dumper(DumperBase): bp.SetIgnoreCount(int(args["ignorecount"])) bp.SetCondition(self.hexdecode(args["condition"])) bp.SetEnabled(bool(args["enabled"])) + bp.SetScriptCallbackBody('\n'.join([ + "def foo(frame = frame, bp_loc = bp_loc, dict = internal_dict):", + " " + self.hexdecode(args["command"]).replace('\n', '\n '), + "from cStringIO import StringIO", + "origout = sys.stdout", + "sys.stdout = StringIO()", + "result = foo()", + "d = lldb.theDumper", + "output = d.hexencode(sys.stdout.getvalue())", + "sys.stdout = origout", + "d.report('output={channel=\"stderr\",data=\"' + output + '\"}')", + "if result is False:", + " d.reportState('continueafternextstop')", + "return True" + ])) if isinstance(bp, lldb.SBBreakpoint): bp.SetOneShot(bool(args["oneshot"])) self.reportResult(self.describeBreakpoint(bp) + extra, args) diff --git a/share/qtcreator/themes/default.creatortheme b/share/qtcreator/themes/default.creatortheme index b6dcbcca124..28b7e642d67 100644 --- a/share/qtcreator/themes/default.creatortheme +++ b/share/qtcreator/themes/default.creatortheme @@ -1,5 +1,5 @@ [General] -ThemeName=Default +ThemeName=Classic PreferredStyles= [Palette] diff --git a/share/qtcreator/themes/defaultflat.creatortheme b/share/qtcreator/themes/flat.creatortheme index c8d51b6ca7b..8affc8eb383 100644 --- a/share/qtcreator/themes/defaultflat.creatortheme +++ b/share/qtcreator/themes/flat.creatortheme @@ -1,5 +1,5 @@ [General] -ThemeName=Default Flat +ThemeName=Flat PreferredStyles= [Palette] @@ -61,13 +61,13 @@ IconsWarningColor=ffecbc1c IconsWarningToolBarColor=fff2d76e IconsErrorColor=ffdf4f4f IconsErrorToolBarColor=ffdb6f71 -IconsRunColor=dda4d576 -IconsStopColor=ddff8c8c +IconsRunColor=ff93be6c +IconsStopColor=ffe27f7f IconsDebugColor=toolBarItem -IconsInterruptColor=dd7488db +IconsInterruptColor=ff6a7bc3 IconsNavigationArrowsColor=ffebc322 -IconsBuildHammerHandleColor=dddd7710 -IconsBuildHammerHeadColor=dd989898 +IconsBuildHammerHandleColor=ffc26b14 +IconsBuildHammerHeadColor=ff868687 IconsModeWelcomeActiveColor=ff80c342 IconsModeEditActiveColor=ff99aaef IconsModeDesignActiveColor=ffbb6000 diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts index 06a6914e404..84944ea4b4c 100644 --- a/share/qtcreator/translations/qtcreator_ru.ts +++ b/share/qtcreator/translations/qtcreator_ru.ts @@ -341,7 +341,7 @@ </message> <message> <source>The process "%1" crashed.</source> - <translation>Процесс «%1» завершился крахом.</translation> + <translation>Процесс «%1» аварийно завершился.</translation> </message> <message> <source>Another application with the same package id but signed with different certificate already exists. @@ -791,7 +791,7 @@ Do you want to uninstall the existing package?</source> </message> <message> <source>"%1" died.</source> - <translation>«%1» завершился крахом.</translation> + <translation>«%1» аварийно завершился.</translation> </message> <message> <source>Unable to start "%1".</source> @@ -3633,8 +3633,8 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou <context> <name>CMakeProjectManager::CMakeBuildStep</name> <message> - <source>Qt Creator needs a cmake tool set up to build. Configure a cmake tool in the kit options.</source> - <translation>Для сборки необходимо, чтобы была задана утилита cmake. Задайте её в настройках комлекта.</translation> + <source>Qt Creator needs a CMake Tool set up to build. Configure a CMake Tool in the kit options.</source> + <translation>Для сборки необходимо, чтобы была задана утилита CMake. Задайте её в настройках комлекта.</translation> </message> </context> <context> @@ -3790,7 +3790,7 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou </message> <message> <source>*** cmake process crashed!</source> - <translation>*** процесс cmake завершился крахом!</translation> + <translation>*** процесс cmake аварийно завершился!</translation> </message> <message> <source>*** cmake process exited with exit code %1.</source> @@ -4172,9 +4172,9 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou <name>ClangStaticAnalyzer</name> <message> <source>The chosen file "%1" seems to point to an icecc binary not suitable for analyzing. -Please set a real clang executable.</source> +Please set a real Clang executable.</source> <translation>Кажется, выбранный файл «%1» указывает на программу icecc непригодную для анализа. -Укажите реальную программу clang.</translation> +Укажите реальный исполняемый файл Clang.</translation> </message> </context> <context> @@ -4203,7 +4203,7 @@ Please set a real clang executable.</source> <translation>Сообщение:</translation> </message> <message> - <source>Extended Message:</source> + <source>Extended message:</source> <translation>Подробное сообщение:</translation> </message> <message> @@ -4248,7 +4248,7 @@ Please set a real clang executable.</source> <context> <name>ClangStaticAnalyzer::Internal::ClangStaticAnalyzerDiagnosticView</name> <message> - <source>Suppress this diagnostic</source> + <source>Suppress This Diagnostic</source> <translation>Подавить эту диагностику</translation> </message> </context> @@ -4262,8 +4262,8 @@ Please set a real clang executable.</source> <context> <name>ClangStaticAnalyzer::Internal::ClangStaticAnalyzerPlugin</name> <message> - <source>Clang Static Analyzer Settings</source> - <translation>Настройки статического анализатора Clang</translation> + <source>Clang Static Analyzer</source> + <translation>Статический анализатор Clang</translation> </message> </context> <context> @@ -4328,8 +4328,8 @@ Please set a real clang executable.</source> <translation>К следующей проблеме.</translation> </message> <message> - <source>Clang Static Analyzer uses the analyzer from the clang project to find bugs.</source> - <translation>Статический анализатор Clang использует анализатор из проекта clang для поиска проблем.</translation> + <source>Clang Static Analyzer uses the analyzer from the Clang project to find bugs.</source> + <translation>Статический анализатор Clang использует анализатор из проекта Clang для поиска ошибок.</translation> </message> <message> <source>Clang Static Analyzer</source> @@ -4356,7 +4356,7 @@ Please set a real clang executable.</source> <translation>Запустить статический анализатор Clang.</translation> </message> <message> - <source>Clang Static Analyzer running.</source> + <source>Clang Static Analyzer is running.</source> <translation>Статический анализатор Clang работает.</translation> </message> <message> @@ -4383,10 +4383,6 @@ Please set a real clang executable.</source> <translation></translation> </message> <message> - <source>Suppressed Diagnostics:</source> - <translation>Подавляемые диагностики:</translation> - </message> - <message> <source>Remove Selected</source> <translation>Удалить выбранное</translation> </message> @@ -4394,6 +4390,10 @@ Please set a real clang executable.</source> <source>Remove All</source> <translation>Удалить всё</translation> </message> + <message> + <source>Suppressed diagnostics:</source> + <translation>Подавляемые диагностики:</translation> + </message> </context> <context> <name>ClangStaticAnalyzer::Internal::SuppressedDiagnosticsModel</name> @@ -7038,18 +7038,10 @@ Do you want to kill it?</source> <translation>Недавние фа&йлы</translation> </message> <message> - <source>&Save</source> - <translation>&Сохранить</translation> - </message> - <message> <source>Save</source> <translation>Сохранить</translation> </message> <message> - <source>Save &As...</source> - <translation>Сохранить &как...</translation> - </message> - <message> <source>Ctrl+Shift+S</source> <translation>Ctrl+Shift+S</translation> </message> @@ -7811,7 +7803,7 @@ Do you want to kill it?</source> </message> <message> <source>Automatically creates temporary copies of modified files. If Qt Creator is restarted after a crash or power failure, it asks whether to recover the auto-saved content.</source> - <translation>Автоматически создавать копии изменённых файлов. Если работа Qt Creator завершилась в результате краха или сбоя питания, то при перезапуске он предложит восстановить их содержимое.</translation> + <translation>Автоматически создавать копии изменённых файлов. Если работа Qt Creator завершится аварийно или из-за сбоя питания, то при перезапуске он предложит восстановить их содержимое.</translation> </message> <message> <source>Auto-save modified files</source> @@ -8007,7 +7999,7 @@ Do you want to kill it?</source> </message> <message> <source>"%1" crashed.</source> - <translation>«%1» завершился аварийно.</translation> + <translation>«%1» аварийно завершился.</translation> </message> <message> <source>"%1" failed (exit code %2).</source> @@ -11498,11 +11490,11 @@ Affected are breakpoints %1</source> </message> <message> <source>Crashed process %1</source> - <translation>Завершившийся крахом процесс %1</translation> + <translation>Аварийно завершившийся процесс %1</translation> </message> <message> <source>Attaching to crashed process %1</source> - <translation>Подключение к завершившемуся крахом процессу %1</translation> + <translation>Подключение к аварийно завершившемуся процессу %1</translation> </message> <message> <source>Process Already Under Debugger Control</source> @@ -12248,7 +12240,7 @@ Qt Creator не может подключиться к нему.</translation> </message> <message> <source>The gdb process crashed some time after starting successfully.</source> - <translation>Процесс gdb завершился крахом через некоторое время после успешного запуска.</translation> + <translation>Процесс gdb аварийно завершился через некоторое время после успешного запуска.</translation> </message> <message> <source>The gdb process was ended forcefully</source> @@ -12913,7 +12905,7 @@ markers in the source code editor.</source> </message> <message> <source>The LLDB process crashed some time after starting successfully.</source> - <translation>Процесс LLDB завершился крахом через некоторое время после успешного старта.</translation> + <translation>Процесс LLDB аварийно завершился через некоторое время после успешного старта.</translation> </message> <message> <source>An error occurred when attempting to write to the LLDB process. For example, the process may not be running, or it may have closed its input channel.</source> @@ -13304,10 +13296,6 @@ Do you want to retry?</source> <source>QML Debugger disconnected.</source> <translation>Отладчик QML отключён.</translation> </message> - <message> - <source>Context:</source> - <translation>Контекст:</translation> - </message> </context> <context> <name>Debugger::Internal::QmlInspectorAgent</name> @@ -16176,7 +16164,7 @@ will also disable the following plugins: </message> <message> <source>%1 crashed.</source> - <translation>%1 завершился крахом.</translation> + <translation>%1 аварийно завершился.</translation> </message> <message> <source>%1 returned %2.</source> @@ -16455,7 +16443,7 @@ Partial names can be used if they are unambiguous.</source> </message> <message> <source>%1 crashed.</source> - <translation>%1 завершился крахом.</translation> + <translation>%1 аварийно завершился.</translation> </message> <message> <source>%1 returned %2.</source> @@ -18259,7 +18247,7 @@ Leave empty to search through the file system.</source> <message> <source>Ref: %1 %2</source> - <translation type="unfinished">Ссылка: %1 + <translation>Ссылка: %1 %2</translation> </message> <message> @@ -19140,7 +19128,7 @@ Would you like to overwrite it?</source> <translation>Ctrl+0</translation> </message> <message> - <source>Fit To Screen</source> + <source>Fit to Screen</source> <translation>На весь экран</translation> </message> <message> @@ -20009,80 +19997,80 @@ Ids must begin with a lowercase letter.</source> </message> <message> <source>Polish</source> - <translation type="unfinished">Полировка</translation> + <translation>Полировка</translation> </message> <message> <source>Wait</source> - <translation type="unfinished">Ожидание</translation> + <translation>Ожидание</translation> </message> <message> <source>GUI Thread Sync</source> - <translation type="unfinished">Синхронизация с потоком GUI</translation> + <translation>Синхронизация с потоком GUI</translation> </message> <message> <source>Render Thread Sync</source> - <translation type="unfinished">Синхронизация с потоком рендера</translation> + <translation>Синхронизация с потоком рендера</translation> </message> <message> <source>Render</source> - <translation type="unfinished">Рендер</translation> + <translation>Рендер</translation> </message> <message> <source>Swap</source> - <translation type="unfinished">Переключение</translation> + <translation>Переключение</translation> </message> <message> <source>Render Preprocess</source> - <translation type="unfinished">Рендер - преобработка</translation> + <translation>Рендер - преобработка</translation> </message> <message> <source>Render Update</source> - <translation type="unfinished">Рендер - обновление</translation> + <translation>Рендер - обновление</translation> </message> <message> <source>Render Bind</source> - <translation type="unfinished">Рендер - привязка</translation> + <translation>Рендер - привязка</translation> </message> <message> <source>Render Render</source> - <translation type="unfinished">Рендер - рендеринг</translation> + <translation>Рендер - рендеринг</translation> </message> <message> <source>Material Compile</source> - <translation type="unfinished">Компиляция материала</translation> + <translation>Компиляция материала</translation> </message> <message> <source>Glyph Render</source> - <translation type="unfinished">Отрисовка глифов</translation> + <translation>Отрисовка глифов</translation> </message> <message> <source>Glyph Upload</source> - <translation type="unfinished">Выгрузка глифов</translation> + <translation>Выгрузка глифов</translation> </message> <message> <source>Texture Bind</source> - <translation type="unfinished">Текстуры - привязка</translation> + <translation>Текстуры - привязка</translation> </message> <message> <source>Texture Convert</source> - <translation type="unfinished">Текстуры - преобразование</translation> + <translation>Текстуры - преобразование</translation> </message> <message> <source>Texture Swizzle</source> <translatorcomment>не знаю, как выбор/обмен цветовых каналов перевести на русский</translatorcomment> - <translation type="unfinished">Текстуры - смешивание</translation> + <translation>Текстуры - смешивание</translation> </message> <message> <source>Texture Upload</source> - <translation type="unfinished">Текстуры - выгрузка</translation> + <translation>Текстуры - выгрузка</translation> </message> <message> <source>Texture Mipmap</source> - <translation type="unfinished">Текстуры - мипмамминг</translation> + <translation>Текстуры - мипмамминг</translation> </message> <message> <source>Texture Delete</source> - <translation type="unfinished">Текстуры - удаление</translation> + <translation>Текстуры - удаление</translation> </message> </context> <context> @@ -20738,7 +20726,7 @@ Ids must begin with a lowercase letter.</source> <translation>Выбор особого каталога настроек</translation> </message> <message> - <source>Config Path:</source> + <source>Config path:</source> <translation>Путь к настройкам:</translation> </message> <message> @@ -21801,6 +21789,10 @@ Ids must begin with a lowercase letter.</source> <source>Name of current build</source> <translation>Имя текущей сборки</translation> </message> + <message> + <source>The currently active run configuration's name.</source> + <translation>Имя текущей активной конфигурации запуска.</translation> + </message> </context> <context> <name>ProjectExplorer::AbiWidget</name> @@ -21833,7 +21825,7 @@ Ids must begin with a lowercase letter.</source> </message> <message> <source>The process "%1" crashed.</source> - <translation>Процесс «%1» завершился крахом.</translation> + <translation>Процесс «%1» завершился аварийно.</translation> </message> <message> <source>Could not start process "%1" %2</source> @@ -21984,7 +21976,7 @@ Ids must begin with a lowercase letter.</source> </message> <message> <source>The process crashed.</source> - <translation>Процесс завершился крахом.</translation> + <translation>Процесс аварийно завершился.</translation> </message> <message> <source>The process returned exit code %1: @@ -22504,7 +22496,7 @@ Ids must begin with a lowercase letter.</source> </message> <message> <source>Remote process crashed: %1</source> - <translation>Внешний процесс завершился крахом: %1</translation> + <translation>Внешний процесс аварийно завершился: %1</translation> </message> <message> <source>Remote process failed; exit code was %1.</source> @@ -23482,8 +23474,8 @@ Ids must begin with a lowercase letter.</source> <translation>Запускается %1...</translation> </message> <message> - <source>%1 crashed</source> - <translation>%1 завершился крахом</translation> + <source>%1 crashed.</source> + <translation>%1 аварийно завершился.</translation> </message> <message> <source>%1 exited with code %2</source> @@ -25875,6 +25867,10 @@ Please close all running instances of your application before starting a build.< <translation>Название активного комплекта.</translation> </message> <message> + <source>The currently active run configuration's name.</source> + <translation>Имя текущей активной конфигурации запуска.</translation> + </message> + <message> <source>Cancel Build && Unload</source> <translation>Отменить сборку и выгрузить</translation> </message> @@ -26412,6 +26408,10 @@ These files are preserved.</source> <context> <name>ProjectExplorer::SshDeviceProcess</name> <message> + <source>Internal error</source> + <translation>Внутренняя ошибка</translation> + </message> + <message> <source>Failed to kill remote process: %1</source> <translation>Не удалось завершить удалённый процесс: %1</translation> </message> @@ -26436,7 +26436,7 @@ These files are preserved.</source> </message> <message> <source>Error: Process listing command crashed: %1</source> - <translation>Ошибка: Команда вывода списка завершилась крахом: %1</translation> + <translation>Ошибка: Команда вывода списка аварийно завершилась: %1</translation> </message> <message> <source>Process listing command failed with exit code %1.</source> @@ -26696,7 +26696,7 @@ These files are preserved.</source> </message> <message> <source>%1 crashed</source> - <translation>%1 завершился крахом</translation> + <translation>%1 аварийно завершился</translation> </message> <message> <source>%1 exited with code %2</source> @@ -26839,15 +26839,15 @@ Maybe raise the timeout?</source> <translation>Ожидается целочисленный элемент.</translation> </message> <message> - <source>An error occurred with the clang static analyzer process.</source> + <source>An error occurred with the Clang Static Analyzer process.</source> <translation>Возникла ошибка при статическом анализе Clang.</translation> </message> <message> - <source>Clang static analyzer crashed.</source> - <translation>Статический анализ Clang завершился крахом.</translation> + <source>Clang Static Analyzer crashed.</source> + <translation>Статический анализ Clang аварийно завершился.</translation> </message> <message> - <source>Clang static analyzer finished with exit code: %1.</source> + <source>Clang Static Analyzer finished with exit code: %1.</source> <translation>Статический анализ Clang завершился с кодом %1.</translation> </message> <message> @@ -26873,7 +26873,7 @@ Output: </message> <message> <source>The SFTP server crashed: %1.</source> - <translation>Сервер SFTP завершился крахом: %1.</translation> + <translation>Сервер SFTP аварийно завершился: %1.</translation> </message> <message> <source>Unexpected packet of type %1.</source> @@ -27599,6 +27599,10 @@ Output: <translation>Не удалось обработать файлы .qbs.</translation> </message> <message> + <source>Error retrieving run environment: %1</source> + <translation>Не удалось получить среду запуска: %1</translation> + </message> + <message> <source>Qbs Run Configuration</source> <translation>Конфигурация выполнения Qbs</translation> </message> @@ -28941,8 +28945,8 @@ Neither the path to the library nor the path to its includes is added to the .pr <translation>Формы</translation> </message> <message> - <source>StateCharts</source> - <translation type="unfinished">Диаграммы состояний</translation> + <source>State charts</source> + <translation>Диаграммы состояний</translation> </message> <message> <source>Resources</source> @@ -29457,7 +29461,7 @@ Neither the path to the library nor the path to its includes is added to the .pr </message> <message> <source>Qt Quick emulation layer crashed</source> - <translation>Слой эмуляции Qt Quick завершился крахом</translation> + <translation>Слой эмуляции Qt Quick аварийно завершился</translation> </message> </context> <context> @@ -29710,16 +29714,16 @@ Neither the path to the library nor the path to its includes is added to the .pr <translation>Показывать предупреждения редактора свойств</translation> </message> <message> - <source>Forward puppet output:</source> - <translation>Перенаправление вывода:</translation> - </message> - <message> <source>Show warn exceptions</source> <translation>Предупреждающие исключения</translation> </message> <message> - <source>Debug puppet:</source> - <translation>Отладка эмулятора:</translation> + <source>Forward QML emulation layer output:</source> + <translation>Перенаправление вывода эмулятора QML:</translation> + </message> + <message> + <source>Debug QML emulation layer:</source> + <translation>Отладка эмулятора QML:</translation> </message> </context> <context> @@ -29822,11 +29826,11 @@ This is independent of the visibility property in QML.</source> </message> <message> <source>QML Emulation Layer (QML Puppet) Crashed</source> - <translation>Слой эмуляции QML (QML Puppet) завершился крахом</translation> + <translation>Слой эмуляции QML (QML Puppet) аварийно завершился</translation> </message> <message> <source>You are recording a puppet stream and the emulations layer crashed. It is recommended to reopen the Qt Quick Designer and start again.</source> - <translation>Эмуляция завершилась крахом при записи puppet-потока. Рекомендуется переоткрыть Qt Quick Designer и запустить запись снова.</translation> + <translation>Эмуляция аварийно завершилась при записи puppet-потока. Рекомендуется переоткрыть Qt Quick Designer и запустить запись снова.</translation> </message> </context> <context> @@ -31687,14 +31691,22 @@ references to elements in other files, loops, and so on.)</source> <translation>Профайлер QML (внешний)</translation> </message> <message> - <source>A Qml Profiler analysis is still in progress.</source> + <source>A QML Profiler analysis is still in progress.</source> <translation>Выполняется профилирование QML.</translation> </message> <message> - <source>Start Qml Profiler analysis.</source> + <source>Start QML Profiler analysis.</source> <translation>Начать профилирование QML.</translation> </message> <message> + <source>Disable Profiling</source> + <translation>Отключить профилирование</translation> + </message> + <message> + <source>Enable Profiling</source> + <translation>Включить профилирование</translation> + </message> + <message> <source>%1 s</source> <translation>%1 сек</translation> </message> @@ -31734,14 +31746,6 @@ Do you want to save the data first?</source> <source>Hide or show event categories.</source> <translation>Показ или скрытие категорий событий.</translation> </message> - <message> - <source>Disable profiling</source> - <translation>Отключить профилирование</translation> - </message> - <message> - <source>Enable profiling</source> - <translation>Включить профилирование</translation> - </message> </context> <context> <name>QmlProfiler::Internal::QmlProfilerTraceView</name> @@ -32078,12 +32082,12 @@ Do you want to save the data first?</source> <context> <name>QmlProfilerExtension::Internal::QmlProfilerExtensionPlugin</name> <message> - <source>Action triggered</source> + <source>Action Triggered</source> <translation>Действие сработало</translation> </message> <message> - <source>This is an action from QmlProfilerExtension.</source> - <translation>Это действие из QmlProfilerExtension.</translation> + <source>This is an action from QML Profiler Extension.</source> + <translation>Это действие из расширения QML Profiler.</translation> </message> </context> <context> @@ -33766,6 +33770,10 @@ In addition, device connectivity will be tested.</source> <context> <name>RemoteLinux::Internal::RemoteLinuxEnvironmentReader</name> <message> + <source>Error: No device</source> + <translation>Ошибка: Нет устройства</translation> + </message> + <message> <source>Error: %1</source> <translation>Ошибка: %1</translation> </message> @@ -33872,7 +33880,7 @@ In addition, device connectivity will be tested.</source> </message> <message> <source>Remote process crashed.</source> - <translation>Удалённый процесс завершился крахом.</translation> + <translation>Удалённый процесс аварийно завершился.</translation> </message> <message> <source>Unexpected output from remote process: "%1"</source> @@ -37470,8 +37478,8 @@ Will not be applied to whitespace in comments and strings.</source> <translation>Удалить</translation> </message> <message> - <source>To-Do Settings</source> - <translation>Настройки To-Do</translation> + <source>To-Do</source> + <translation>To-Do</translation> </message> </context> <context> @@ -38789,7 +38797,7 @@ Will not be applied to whitespace in comments and strings.</source> <context> <name>Valgrind::Internal::CallgrindTool</name> <message> - <source>Valgrind Function Profile uses the Callgrind tool to record function calls when a program runs.</source> + <source>Valgrind Function Profiler uses the Callgrind tool to record function calls when a program runs.</source> <translation>Профайлер функций Valgrind использует утилиту Callgrind для записи вызовов функций при работе программы.</translation> </message> <message> @@ -38869,10 +38877,18 @@ Will not be applied to whitespace in comments and strings.</source> <translation>Цены, относительные к родительской</translation> </message> <message> - <source>Show costs relative to parent functions inclusive cost.</source> + <source>Show costs relative to parent function's inclusive cost.</source> <translation>Показывать цены относительно общей цены вызвавшей функции.</translation> </message> <message> + <source>Remove template parameter lists when displaying function names.</source> + <translation>Убирать списки шаблонных параметров при отображении имён функций.</translation> + </message> + <message> + <source>Select This Function in the Analyzer Output</source> + <translation>Выбрать эту функцию в выводе анализатора</translation> + </message> + <message> <source>Cost Format</source> <translation>Формат цены</translation> </message> @@ -38881,10 +38897,6 @@ Will not be applied to whitespace in comments and strings.</source> <translation>Включить определение циклов для корректной обработки рекурсивных и циклических вызовов.</translation> </message> <message> - <source>This removes template parameter lists when displaying function names.</source> - <translation>Убирает списки шаблонных параметров при отображении имён функций.</translation> - </message> - <message> <source>Show Project Costs Only</source> <translation>Показать только цены проекта</translation> </message> @@ -38925,10 +38937,6 @@ Will not be applied to whitespace in comments and strings.</source> <translation>Не удалось обработать.</translation> </message> <message> - <source>Select this Function in the Analyzer Output</source> - <translation>Выберите эту функцию в выводе анализатора</translation> - </message> - <message> <source>Populating...</source> <translation>Заполнение...</translation> </message> diff --git a/src/libs/3rdparty/cplusplus/Symbol.cpp b/src/libs/3rdparty/cplusplus/Symbol.cpp index ae20b14bb75..e98b33a8a78 100644 --- a/src/libs/3rdparty/cplusplus/Symbol.cpp +++ b/src/libs/3rdparty/cplusplus/Symbol.cpp @@ -191,10 +191,10 @@ const StringLiteral *Symbol::fileId() const } const char *Symbol::fileName() const -{ return fileId()->chars(); } +{ return _fileId ? _fileId->chars() : ""; } unsigned Symbol::fileNameLength() const -{ return fileId()->size(); } +{ return _fileId ? _fileId->size() : 0; } const Name *Symbol::unqualifiedName() const { diff --git a/src/libs/clangbackendipc/connectionclient.cpp b/src/libs/clangbackendipc/connectionclient.cpp index c6c29458aa7..e64519e1bbe 100644 --- a/src/libs/clangbackendipc/connectionclient.cpp +++ b/src/libs/clangbackendipc/connectionclient.cpp @@ -233,12 +233,12 @@ void ConnectionClient::printLocalSocketError(QLocalSocket::LocalSocketError sock void ConnectionClient::printStandardOutput() { - QTextStream(stdout) << stdOutPrefixer.prefix(process_->readAllStandardOutput()); + qDebug("%s", stdOutPrefixer.prefix(process_->readAllStandardOutput()).constData()); } void ConnectionClient::printStandardError() { - QTextStream(stderr) << stdErrPrefixer.prefix(process_->readAllStandardError()); + qDebug("%s", stdErrPrefixer.prefix(process_->readAllStandardError()).constData()); } void ConnectionClient::finishProcess() diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp index 9fde18be189..db9d42a48f1 100644 --- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp +++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp @@ -2852,16 +2852,14 @@ static inline bool dumpQSharedPointer(const SymbolGroupValue &v, std::wostream & str << L"(null)"; return true; } - std::ostringstream namestr; - namestr << "*(" << SymbolGroupValue::stripClassPrefixes(value.type()) << ")(" - << std::showbase << std::hex << value.pointerValue() << ')'; - SymbolGroupNode *valueNode - = v.node()->symbolGroup()->addSymbol(v.module(), namestr.str(), std::string(), &std::string()); - if (!valueNode) - return false; - str << valueNode->simpleDumpValue(v.context(), encoding); - return true; + if (knownType(value.type(), KnownTypeAutoStripPointer | KnownTypeHasClassPrefix) + & KT_HasSimpleDumper) { + str << value.node()->simpleDumpValue(v.context(), encoding); + return true; + } + + return false; } } diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp index 5ec1c4fb5e5..8753b02b29e 100644 --- a/src/plugins/autotest/testcodeparser.cpp +++ b/src/plugins/autotest/testcodeparser.cpp @@ -434,6 +434,8 @@ static bool checkQmlDocumentForTestCode(QFutureInterface<TestParseResult> future const QmlJS::Document::Ptr &qmlJSDoc, const QString &proFile = QString()) { + if (qmlJSDoc.isNull()) + return false; QmlJS::AST::Node *ast = qmlJSDoc->ast(); QTC_ASSERT(ast, return false); TestQmlVisitor qmlVisitor(qmlJSDoc); diff --git a/src/plugins/autotest/testoutputreader.cpp b/src/plugins/autotest/testoutputreader.cpp index 693a897e831..639c962b06b 100644 --- a/src/plugins/autotest/testoutputreader.cpp +++ b/src/plugins/autotest/testoutputreader.cpp @@ -137,6 +137,13 @@ TestOutputReader::TestOutputReader(const QFutureInterface<TestResultPtr> &future , m_buildDir(buildDirectory) { connect(m_testApplication, &QProcess::readyRead, this, &TestOutputReader::processOutput); + connect(m_testApplication, &QProcess::readyReadStandardError, + this, &TestOutputReader::processStdError); +} + +void TestOutputReader::processStdError() +{ + qWarning() << "Ignored plain output:" << m_testApplication->readAllStandardError(); } QtTestOutputReader::QtTestOutputReader(const QFutureInterface<TestResultPtr> &futureInterface, diff --git a/src/plugins/autotest/testoutputreader.h b/src/plugins/autotest/testoutputreader.h index 4700af4c8a0..aed50b1b96b 100644 --- a/src/plugins/autotest/testoutputreader.h +++ b/src/plugins/autotest/testoutputreader.h @@ -48,6 +48,7 @@ public: protected: virtual void processOutput() = 0; + virtual void processStdError(); QFutureInterface<TestResultPtr> m_futureInterface; QProcess *m_testApplication; // not owned QString m_buildDir; diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp index c82bf911c83..93554d76a18 100644 --- a/src/plugins/autotest/testrunner.cpp +++ b/src/plugins/autotest/testrunner.cpp @@ -137,7 +137,6 @@ static void performTestRun(QFutureInterface<TestResultPtr> &futureInterface, } QProcess testProcess; - testProcess.setReadChannelMode(QProcess::MergedChannels); testProcess.setReadChannel(QProcess::StandardOutput); futureInterface.setProgressRange(0, testCaseCount); @@ -221,6 +220,10 @@ static void performTestRun(QFutureInterface<TestResultPtr> &futureInterface, eventLoop.processEvents(); } } + if (testProcess.exitStatus() == QProcess::CrashExit) { + futureInterface.reportResult(TestResultPtr(new FaultyTestResult(Result::MessageFatal, + QString::fromLatin1("Test for project \"%1\" crashed.").arg(testConfiguration->displayName())))); + } if (canceledByTimeout) { if (testProcess.state() != QProcess::NotRunning) { diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp index fa69cafe42d..4701e126a66 100644 --- a/src/plugins/autotest/testtreemodel.cpp +++ b/src/plugins/autotest/testtreemodel.cpp @@ -631,7 +631,7 @@ void TestTreeModel::markForRemoval(const QString &filePath) TestTreeItem *child = root->childItem(childRow); // Qt + named Quick Tests if (child->filePath() == filePath) { - child->markForRemoval(true); + child->markForRemovalRecursively(true); } else { // unnamed Quick Tests and GTest and Qt Tests with separated source/header int grandChildRow = child->childCount() - 1; diff --git a/src/plugins/autotest/testvisitor.cpp b/src/plugins/autotest/testvisitor.cpp index a816aa33eb5..d766cc0fdc5 100644 --- a/src/plugins/autotest/testvisitor.cpp +++ b/src/plugins/autotest/testvisitor.cpp @@ -82,7 +82,7 @@ bool TestVisitor::visit(CPlusPlus::Class *symbol) CPlusPlus::Function *functionDefinition = m_symbolFinder.findMatchingDefinition( func, CppTools::CppModelManager::instance()->snapshot(), true); - if (functionDefinition) { + if (functionDefinition && functionDefinition->fileId()) { locationAndType.m_name = QString::fromUtf8(functionDefinition->fileName()); locationAndType.m_line = functionDefinition->line(); locationAndType.m_column = functionDefinition->column() - 1; diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index ec9c2f7f49c..ee92b9ab8e1 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -37,6 +37,7 @@ #include <projectexplorer/projectexplorer.h> #include <projectexplorer/session.h> #include <texteditor/texteditor.h> +#include <utils/icon.h> #include <utils/tooltip/tooltip.h> #include <utils/qtcassert.h> #include <utils/checkablemessagebox.h> @@ -318,7 +319,8 @@ void BookmarkView::gotoBookmark(const QModelIndex &index) //// BookmarkManager::BookmarkManager() : - m_bookmarkIcon(QLatin1String(":/bookmarks/images/bookmark.png")), + m_bookmarkIcon(Utils::Icon({{QLatin1String(":/bookmarks/images/bookmark.png"), + Theme::Bookmarks_TextMarkColor}}, Icon::Tint).pixmap()), m_selectionModel(new QItemSelectionModel(this, this)) { connect(ICore::instance(), &ICore::contextChanged, diff --git a/src/plugins/bookmarks/bookmarks.qrc b/src/plugins/bookmarks/bookmarks.qrc index f0a890bf374..764b398555c 100644 --- a/src/plugins/bookmarks/bookmarks.qrc +++ b/src/plugins/bookmarks/bookmarks.qrc @@ -1,5 +1,6 @@ <RCC> <qresource prefix="/bookmarks" > <file>images/bookmark.png</file> + <file>images/bookmark@2x.png</file> </qresource> </RCC> diff --git a/src/plugins/bookmarks/images/bookmark.png b/src/plugins/bookmarks/images/bookmark.png Binary files differindex 7b2e5fd0cef..05f4eec5413 100644 --- a/src/plugins/bookmarks/images/bookmark.png +++ b/src/plugins/bookmarks/images/bookmark.png diff --git a/src/plugins/bookmarks/images/bookmark@2x.png b/src/plugins/bookmarks/images/bookmark@2x.png Binary files differnew file mode 100644 index 00000000000..903acddbd8a --- /dev/null +++ b/src/plugins/bookmarks/images/bookmark@2x.png diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index dd4f11737fd..45ed6ec252e 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -197,7 +197,7 @@ const char SETTINGS_ID_MIMETYPES[] = "E.MimeTypes"; const char SETTINGS_DEFAULTTEXTENCODING[] = "General/DefaultFileEncoding"; const char SETTINGS_THEME[] = "Core/CreatorTheme"; -const char DEFAULT_THEME[] = "default"; +const char DEFAULT_THEME[] = "flat"; const char ALL_FILES_FILTER[] = QT_TRANSLATE_NOOP("Core", "All Files (*)"); diff --git a/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp b/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp index c09ba186e6f..ca14d00ca46 100644 --- a/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp +++ b/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp @@ -27,8 +27,9 @@ #include "locatorfiltersfilter.h" #include "locatorwidget.h" -#include <coreplugin/coreicons.h> +#include <utils/icon.h> #include <utils/qtcassert.h> +#include <utils/theme/theme.h> using namespace Core; using namespace Core::Internal; @@ -39,7 +40,8 @@ LocatorFiltersFilter::LocatorFiltersFilter(Locator *plugin, LocatorWidget *locatorWidget): m_plugin(plugin), m_locatorWidget(locatorWidget), - m_icon(Icons::NEXT.icon()) + m_icon(Utils::Icon({{QLatin1String(":/core/images/next.png"), Utils::Theme::IconsWarningColor}}, + Utils::Icon::Tint).pixmap()) { setId("FiltersFilter"); setDisplayName(tr("Available filters")); diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index 913ca572d38..7233e6d5c54 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -245,7 +245,10 @@ QPalette panelPalette(const QPalette &oldPalette, bool lightColored = false) pal.setBrush(QPalette::All, QPalette::WindowText, color); pal.setBrush(QPalette::All, QPalette::ButtonText, color); pal.setBrush(QPalette::All, QPalette::Foreground, color); - color.setAlpha(100); + if (lightColored) + color.setAlpha(100); + else + color = creatorTheme()->color(Theme::IconsDisabledColor); pal.setBrush(QPalette::Disabled, QPalette::WindowText, color); pal.setBrush(QPalette::Disabled, QPalette::ButtonText, color); pal.setBrush(QPalette::Disabled, QPalette::Foreground, color); @@ -740,9 +743,9 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt painter->setPen(StyleHelper::toolBarDropShadowColor()); painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text); } - if (!(option->state & State_Enabled)) - painter->setOpacity(0.8); - painter->setPen(creatorTheme()->color(Theme::ComboBoxTextColor)); + painter->setPen(creatorTheme()->color((option->state & State_Enabled) + ? Theme::ComboBoxTextColor + : Theme::IconsDisabledColor)); painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text); painter->restore(); diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp index 55213d4f246..bb3d55c3cc3 100644 --- a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp +++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp @@ -157,10 +157,12 @@ void ClangDiagnosticConfigsWidget::syncConfigChooserToModel(const Core::Id &conf connectConfigChooserCurrentIndex(); - if (configToSelectIndex != -1) + if (configToSelectIndex != -1) { m_ui->configChooserComboBox->setCurrentIndex(configToSelectIndex); - else if (previousCurrentIndex != m_ui->configChooserComboBox->currentIndex()) + } else if (previousCurrentIndex != m_ui->configChooserComboBox->currentIndex()) { + syncOtherWidgetsToComboBox(); emit currentConfigChanged(currentConfigId()); + } } void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox() diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index f49bbf68812..207cddbf27f 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -733,6 +733,7 @@ PROPERTY(QString, functionName, setFunctionName) PROPERTY(BreakpointType, type, setType) PROPERTY(int, threadSpec, setThreadSpec) PROPERTY(QByteArray, condition, setCondition) +PROPERTY(QString, command, setCommand) PROPERTY(quint64, address, setAddress) PROPERTY(QString, expression, setExpression) PROPERTY(QString, message, setMessage) @@ -757,6 +758,7 @@ void Breakpoint::addToCommand(DebuggerCommand *cmd) const cmd->arg("type", type()); cmd->arg("ignorecount", ignoreCount()); cmd->arg("condition", condition().toHex()); + cmd->arg("command", command().toUtf8().toHex()); cmd->arg("function", functionName().toUtf8()); cmd->arg("oneshot", isOneShot()); cmd->arg("enabled", isEnabled()); diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h index 922e6fee71f..af1ac485564 100644 --- a/src/plugins/debugger/breakhandler.h +++ b/src/plugins/debugger/breakhandler.h @@ -112,6 +112,8 @@ public: QString expression() const; void setExpression(const QString &expression); QString message() const; + QString command() const; + void setCommand(const QString &command); void setMessage(const QString &m); BreakpointType type() const; void setType(const BreakpointType &type); diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 11f85289180..1c9f3741829 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -282,6 +282,7 @@ public slots: void resetLocation() { + m_lookupRequests.clear(); m_locationTimer.stop(); m_locationMark.reset(); m_stackHandler.resetLocation(); @@ -337,6 +338,9 @@ public: Utils::FileInProjectFinder m_fileFinder; QByteArray m_qtNamespace; + + // Safety net to avoid infinite lookups. + QSet<QByteArray> m_lookupRequests; // FIXME: Integrate properly. }; @@ -2022,6 +2026,23 @@ bool DebuggerEngine::canHandleToolTip(const DebuggerToolTipContext &context) con void DebuggerEngine::updateItem(const QByteArray &iname) { + if (d->m_lookupRequests.contains(iname)) { + showMessage(QString::fromLatin1("IGNORING REPEATED REQUEST TO EXPAND " + iname)); + WatchHandler *handler = watchHandler(); + WatchItem *item = handler->findItem(iname); + if (!item->hasChildren()) { + handler->notifyUpdateStarted({iname}); + item->setValue(decodeData({}, "notaccessible")); + item->setHasChildren(false); + item->outdated = false; + item->update(); + handler->notifyUpdateFinished(); + return; + } + // We could legitimately end up here after expanding + closing + re-expaning an item. + } + d->m_lookupRequests.insert(iname); + UpdateParameters params; params.partialVariable = iname; doUpdateLocals(params); diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 8d8749709fb..d4b6a8c9552 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -81,12 +81,16 @@ DebuggerMainWindow::~DebuggerMainWindow() { // As we have to setParent(0) on dock widget that are not selected, // we keep track of all and make sure we don't leak any + foreach (QDockWidget *dock, m_dockForDockId) { + if (dock && !dock->parentWidget()) + delete dock; + } + foreach (const Perspective &perspective, m_perspectiveForPerspectiveId) { foreach (const Perspective::Operation &operation, perspective.operations()) { if (operation.widget && !operation.widget->parentWidget()) { - // These are from inactive perspectives. We call setParent(0) when deactivating - // a perspective so that the widgets can't be accidentally enabled in the wrong - // perspectives. That's why we have to delete them manually here. + // These are from perspectives that never got enabled. We've taken ownership for + // those, so we need to delete them. delete operation.widget; } } @@ -154,7 +158,7 @@ void DebuggerMainWindow::finalizeSetup() hbox->addWidget(m_perspectiveChooser); hbox->addWidget(m_controlsStackWidget); hbox->addWidget(m_statusLabel); - hbox->addStretch(); + hbox->addStretch(1); hbox->addWidget(new Utils::StyledSeparator); hbox->addWidget(viewButton); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index ebe30a53a07..75ed55aff38 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -966,6 +966,7 @@ public: QIcon m_locationMarkIcon; + QLabel *m_threadLabel = 0; QComboBox *m_threadBox = 0; BaseTreeView *m_breakView = 0; @@ -1686,13 +1687,6 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, cmd = ActionManager::registerAction(qmlSelectDummyAction, Constants::QML_SELECTTOOL); debugMenu->addAction(cmd); - auto qmlZoomDummyAction = new QAction(tr("Zoom"), this); - qmlZoomDummyAction->setCheckable(true); - qmlZoomDummyAction->setIcon(Core::Icons::ZOOM_TOOLBAR.icon()); - qmlZoomDummyAction->setEnabled(false); - cmd = ActionManager::registerAction(qmlZoomDummyAction, Constants::QML_ZOOMTOOL); - debugMenu->addAction(cmd); - debugMenu->addSeparator(); // Don't add '1' to the string as it shows up in the shortcut dialog. @@ -1795,7 +1789,9 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, } toolbar.addWidget(new StyledSeparator); - toolbar.addWidget(new QLabel(tr("Threads:"))); + + m_threadLabel = new QLabel(tr("Threads:")); + toolbar.addWidget(m_threadLabel); m_threadBox = new QComboBox; m_threadBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); @@ -1810,7 +1806,6 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, // qmlToolbar.addAction(qmlShowAppOnTopDummyAction); // qmlToolbar.addWidget(new StyledSeparator); // qmlToolbar.addAction(qmlSelectDummyAction); -// qmlToolbar.addAction(qmlZoomDummyAction); // qmlToolbar.addWidget(new StyledSeparator); Perspective basePerspective({}, { @@ -2380,6 +2375,7 @@ void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine) engine->watchHandler()->resetWatchers(); m_localsView->hideProgressIndicator(); + updateActiveLanguages(); } static void changeFontSize(QWidget *widget, qreal size) @@ -2498,6 +2494,8 @@ void DebuggerPluginPrivate::setInitialState() action(AutoDerefPointers)->setEnabled(true); action(ExpandStack)->setEnabled(false); + + m_threadLabel->setEnabled(false); } void DebuggerPluginPrivate::updateState(DebuggerEngine *engine) @@ -2595,6 +2593,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine) m_attachToUnstartedApplication->setEnabled(true); m_threadBox->setEnabled(state == InferiorStopOk || state == InferiorUnrunnable); + m_threadLabel->setEnabled(m_threadBox->isEnabled()); const bool isCore = engine->runParameters().startMode == AttachCore; const bool stopped = state == InferiorStopOk; diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 9ff2da841b2..5b99bcd2c84 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -2233,7 +2233,7 @@ void GdbEngine::executeReturn() setTokenBarrier(); notifyInferiorRunRequested(); showStatusMessage(tr("Immediate return from function requested..."), 5000); - runCommand({"-exec-finish", RunRequest, CB(handleExecuteReturn)}); + runCommand({"-exec-return", RunRequest, CB(handleExecuteReturn)}); } void GdbEngine::handleExecuteReturn(const DebuggerResponse &response) diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 196972a0138..283b2c87d8d 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -283,6 +283,10 @@ void LldbEngine::startLldbStage2() m_lldbProc.write("script from lldbbridge import *\n"); m_lldbProc.write("script print(dir())\n"); m_lldbProc.write("script theDumper = Dumper()\n"); // This triggers reportState("enginesetupok") + + const QString commands = stringSetting(GdbStartupCommands); + if (!commands.isEmpty()) + m_lldbProc.write(commands.toLocal8Bit()); } void LldbEngine::setupInferior() @@ -895,6 +899,8 @@ void LldbEngine::handleStateNotification(const GdbMi &reportedState) notifyInferiorRunOk(); else if (newState == "inferiorrunfailed") notifyInferiorRunFailed(); + else if (newState == "continueafternextstop") + m_continueAtNextSpontaneousStop = true; else if (newState == "stopped") { notifyInferiorSpontaneousStop(); if (m_continueAtNextSpontaneousStop) { diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index e749a8ca934..f1d3095b38c 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -36,53 +36,51 @@ #include "branchadddialog.h" #include "gerrit/gerritplugin.h" -#include <vcsbase/submitfilemodel.h> - +#include <coreplugin/coreconstants.h> #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/icore.h> -#include <coreplugin/idocument.h> -#include <coreplugin/vcsmanager.h> #include <coreplugin/id.h> +#include <coreplugin/idocument.h> #include <coreplugin/iversioncontrol.h> -#include <coreplugin/coreconstants.h> +#include <coreplugin/vcsmanager.h> +#include <utils/fileutils.h> #include <utils/hostosinfo.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> #include <utils/synchronousprocess.h> -#include <utils/fileutils.h> -#include <vcsbase/vcscommand.h> + +#include <vcsbase/submitfilemodel.h> #include <vcsbase/vcsbaseeditor.h> #include <vcsbase/vcsbaseeditorparameterwidget.h> -#include <vcsbase/vcsoutputwindow.h> #include <vcsbase/vcsbaseplugin.h> +#include <vcsbase/vcscommand.h> +#include <vcsbase/vcsoutputwindow.h> #include <diffeditor/diffeditorconstants.h> #include <diffeditor/diffeditorcontroller.h> #include <diffeditor/diffutils.h> +#include <QAction> #include <QCoreApplication> #include <QDir> #include <QFileInfo> #include <QHash> -#include <QRegExp> -#include <QSignalMapper> -#include <QTemporaryFile> - -#include <QAction> #include <QMenu> #include <QMessageBox> #include <QPushButton> -#include <QToolButton> +#include <QRegExp> +#include <QTemporaryFile> #include <QTextCodec> +#include <QToolButton> -static const char GIT_DIRECTORY[] = ".git"; -static const char graphLogFormatC[] = "%h %d %an %s %ci"; -static const char HEAD[] = "HEAD"; -static const char CHERRY_PICK_HEAD[] = "CHERRY_PICK_HEAD"; -static const char noColorOption[] = "--no-color"; -static const char decorateOption[] = "--decorate"; -static const char showFormatC[] = +const char GIT_DIRECTORY[] = ".git"; +const char graphLogFormatC[] = "%h %d %an %s %ci"; +const char HEAD[] = "HEAD"; +const char CHERRY_PICK_HEAD[] = "CHERRY_PICK_HEAD"; +const char noColorOption[] = "--no-color"; +const char decorateOption[] = "--decorate"; +const char showFormatC[] = "--pretty=format:commit %H%n" "Author: %an <%ae>, %ad (%ar)%n" "Committer: %cn <%ce>, %cd (%cr)%n" diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index f6b0bd28214..60b2761c2fc 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -40,9 +40,6 @@ #include <QWidget> QT_BEGIN_NAMESPACE -class QCheckBox; -class QSignalMapper; -class QDebug; class QProcessEnvironment; class QMenu; QT_END_NAMESPACE diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp index f5848fb38a8..0a374514cbb 100644 --- a/src/plugins/help/helpwidget.cpp +++ b/src/plugins/help/helpwidget.cpp @@ -159,7 +159,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_switchToHelp, cmd)); } - m_homeAction = new QAction(Icons::HOME.icon(), tr("Home"), this); + m_homeAction = new QAction(Icons::HOME_TOOLBAR.icon(), tr("Home"), this); cmd = Core::ActionManager::registerAction(m_homeAction, Constants::HELP_HOME, context); connect(m_homeAction, &QAction::triggered, this, &HelpWidget::goHome); layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_homeAction, cmd)); @@ -186,7 +186,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget button->setPopupMode(QToolButton::DelayedPopup); layout->addWidget(button); - m_addBookmarkAction = new QAction(Icons::BOOKMARK.icon(), tr("Add Bookmark"), this); + m_addBookmarkAction = new QAction(Icons::BOOKMARK_TOOLBAR.icon(), tr("Add Bookmark"), this); cmd = Core::ActionManager::registerAction(m_addBookmarkAction, Constants::HELP_ADDBOOKMARK, context); cmd->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+M") : tr("Ctrl+M"))); connect(m_addBookmarkAction, &QAction::triggered, this, &HelpWidget::addBookmark); diff --git a/src/plugins/imageviewer/imageviewer.cpp b/src/plugins/imageviewer/imageviewer.cpp index f3121d62d0c..f279125f383 100644 --- a/src/plugins/imageviewer/imageviewer.cpp +++ b/src/plugins/imageviewer/imageviewer.cpp @@ -151,6 +151,8 @@ void ImageViewer::ctor() this, &ImageViewer::imageSizeUpdated); connect(d->file.data(), &ImageViewerFile::openFinished, d->imageView, &ImageView::createScene); + connect(d->file.data(), &ImageViewerFile::openFinished, + this, &ImageViewer::updateToolButtons); connect(d->file.data(), &ImageViewerFile::aboutToReload, d->imageView, &ImageView::reset); connect(d->file.data(), &ImageViewerFile::reloadFinished, @@ -159,12 +161,6 @@ void ImageViewer::ctor() this, &ImageViewer::updatePauseAction); connect(d->imageView, &ImageView::scaleFactorChanged, this, &ImageViewer::scaleFactorUpdate); - - connect(d->file.data(), &ImageViewerFile::openFinished, - this, [this](bool success) - { - d->ui_toolbar.toolButtonExportImage->setEnabled(success && d->file->type() == ImageViewerFile::TypeSvg); - }); } ImageViewer::~ImageViewer() @@ -188,6 +184,8 @@ Core::IEditor *ImageViewer::duplicate() { auto other = new ImageViewer(d->file); other->d->imageView->createScene(); + other->updateToolButtons(); + other->d->ui_toolbar.labelImageSize->setText(d->ui_toolbar.labelImageSize->text()); return other; } @@ -241,6 +239,12 @@ void ImageViewer::fitToScreen() d->ui_toolbar.toolButtonFitToScreen->click(); } +void ImageViewer::updateToolButtons() +{ + d->ui_toolbar.toolButtonExportImage->setEnabled(d->file->type() == ImageViewerFile::TypeSvg); + updatePauseAction(); +} + void ImageViewer::togglePlay() { d->ui_toolbar.toolButtonPlayPause->click(); @@ -254,15 +258,13 @@ void ImageViewer::playToggled() void ImageViewer::updatePauseAction() { bool isMovie = d->file->type() == ImageViewerFile::TypeMovie; - d->ui_toolbar.toolButtonPlayPause->setVisible(isMovie); - if (isMovie) { - if (d->file->isPaused()) { - d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation")); - d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.pixmap()); - } else { - d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation")); - d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.pixmap()); - } + if (isMovie && !d->file->isPaused()) { + d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation")); + d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.icon()); + } else { + d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation")); + d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.icon()); + d->ui_toolbar.toolButtonPlayPause->setEnabled(isMovie); } } diff --git a/src/plugins/imageviewer/imageviewer.h b/src/plugins/imageviewer/imageviewer.h index 8820b6ca90f..9a4baab18d7 100644 --- a/src/plugins/imageviewer/imageviewer.h +++ b/src/plugins/imageviewer/imageviewer.h @@ -65,6 +65,7 @@ public slots: void zoomOut(); void resetToOriginalSize(); void fitToScreen(); + void updateToolButtons(); void togglePlay(); private slots: diff --git a/src/plugins/imageviewer/imageviewerfile.cpp b/src/plugins/imageviewer/imageviewerfile.cpp index f5192db521c..031ca999d48 100644 --- a/src/plugins/imageviewer/imageviewerfile.cpp +++ b/src/plugins/imageviewer/imageviewerfile.cpp @@ -108,7 +108,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons if (format.startsWith("svg")) { m_tempSvgItem = new QGraphicsSvgItem(fileName); QRectF bound = m_tempSvgItem->boundingRect(); - if (bound.width() == 0 && bound.height() == 0) { + if (qFuzzyIsNull(bound.width()) && qFuzzyIsNull(bound.height())) { delete m_tempSvgItem; m_tempSvgItem = 0; if (errorString) @@ -116,7 +116,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons return OpenResult::CannotHandle; } m_type = TypeSvg; - emit imageSizeChanged(QSize()); + emit imageSizeChanged(m_tempSvgItem->boundingRect().size().toSize()); } else #endif if (QMovie::supportedFormats().contains(format)) { diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index c087ff2669b..a69da758ec5 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -79,11 +79,7 @@ exists($$LLVM_INSTALL_DIR) { isEmpty(IDE_PACKAGE_MODE) { SUBDIRS += \ - helloworld #\ - #updateinfo -#} else:!isEmpty(UPDATEINFO_ENABLE) { -# SUBDIRS += \ -# updateinfo + helloworld } for(p, SUBDIRS) { diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp index 206fd6a6446..7605ddbbe24 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp +++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp @@ -67,7 +67,7 @@ private: void setJomVisible(bool); Ui::ProjectExplorerSettingsPageUi m_ui; - QUuid m_environmentId; + mutable ProjectExplorerSettings m_settings; }; ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) : @@ -97,39 +97,37 @@ void ProjectExplorerSettingsWidget::setJomVisible(bool v) ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const { - ProjectExplorerSettings pes; - pes.buildBeforeDeploy = m_ui.buildProjectBeforeDeployCheckBox->isChecked(); - pes.deployBeforeRun = m_ui.deployProjectBeforeRunCheckBox->isChecked(); - pes.saveBeforeBuild = m_ui.saveAllFilesCheckBox->isChecked(); - pes.showCompilerOutput = m_ui.showCompileOutputCheckBox->isChecked(); - pes.showRunOutput = m_ui.showRunOutputCheckBox->isChecked(); - pes.showDebugOutput = m_ui.showDebugOutputCheckBox->isChecked(); - pes.cleanOldAppOutput = m_ui.cleanOldAppOutputCheckBox->isChecked(); - pes.mergeStdErrAndStdOut = m_ui.mergeStdErrAndStdOutCheckBox->isChecked(); - pes.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked(); - pes.useJom = m_ui.jomCheckbox->isChecked(); - pes.prompToStopRunControl = m_ui.promptToStopRunControlCheckBox->isChecked(); - pes.maxAppOutputLines = m_ui.maxAppOutputBox->value(); - pes.environmentId = m_environmentId; - pes.stopBeforeBuild = ProjectExplorerSettings::StopBeforeBuild(m_ui.stopBeforeBuildComboBox->currentIndex()); - return pes; + m_settings.buildBeforeDeploy = m_ui.buildProjectBeforeDeployCheckBox->isChecked(); + m_settings.deployBeforeRun = m_ui.deployProjectBeforeRunCheckBox->isChecked(); + m_settings.saveBeforeBuild = m_ui.saveAllFilesCheckBox->isChecked(); + m_settings.showCompilerOutput = m_ui.showCompileOutputCheckBox->isChecked(); + m_settings.showRunOutput = m_ui.showRunOutputCheckBox->isChecked(); + m_settings.showDebugOutput = m_ui.showDebugOutputCheckBox->isChecked(); + m_settings.cleanOldAppOutput = m_ui.cleanOldAppOutputCheckBox->isChecked(); + m_settings.mergeStdErrAndStdOut = m_ui.mergeStdErrAndStdOutCheckBox->isChecked(); + m_settings.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked(); + m_settings.useJom = m_ui.jomCheckbox->isChecked(); + m_settings.prompToStopRunControl = m_ui.promptToStopRunControlCheckBox->isChecked(); + m_settings.maxAppOutputLines = m_ui.maxAppOutputBox->value(); + m_settings.stopBeforeBuild = ProjectExplorerSettings::StopBeforeBuild(m_ui.stopBeforeBuildComboBox->currentIndex()); + return m_settings; } void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings &pes) { - m_ui.buildProjectBeforeDeployCheckBox->setChecked(pes.buildBeforeDeploy); - m_ui.deployProjectBeforeRunCheckBox->setChecked(pes.deployBeforeRun); - m_ui.saveAllFilesCheckBox->setChecked(pes.saveBeforeBuild); - m_ui.showCompileOutputCheckBox->setChecked(pes.showCompilerOutput); - m_ui.showRunOutputCheckBox->setChecked(pes.showRunOutput); - m_ui.showDebugOutputCheckBox->setChecked(pes.showDebugOutput); - m_ui.cleanOldAppOutputCheckBox->setChecked(pes.cleanOldAppOutput); - m_ui.mergeStdErrAndStdOutCheckBox->setChecked(pes.mergeStdErrAndStdOut); - m_ui.wrapAppOutputCheckBox->setChecked(pes.wrapAppOutput); - m_ui.jomCheckbox->setChecked(pes.useJom); - m_ui.promptToStopRunControlCheckBox->setChecked(pes.prompToStopRunControl); - m_ui.maxAppOutputBox->setValue(pes.maxAppOutputLines); - m_environmentId = pes.environmentId; + m_settings = pes; + m_ui.buildProjectBeforeDeployCheckBox->setChecked(m_settings.buildBeforeDeploy); + m_ui.deployProjectBeforeRunCheckBox->setChecked(m_settings.deployBeforeRun); + m_ui.saveAllFilesCheckBox->setChecked(m_settings.saveBeforeBuild); + m_ui.showCompileOutputCheckBox->setChecked(m_settings.showCompilerOutput); + m_ui.showRunOutputCheckBox->setChecked(m_settings.showRunOutput); + m_ui.showDebugOutputCheckBox->setChecked(m_settings.showDebugOutput); + m_ui.cleanOldAppOutputCheckBox->setChecked(m_settings.cleanOldAppOutput); + m_ui.mergeStdErrAndStdOutCheckBox->setChecked(m_settings.mergeStdErrAndStdOut); + m_ui.wrapAppOutputCheckBox->setChecked(m_settings.wrapAppOutput); + m_ui.jomCheckbox->setChecked(m_settings.useJom); + m_ui.promptToStopRunControlCheckBox->setChecked(m_settings.prompToStopRunControl); + m_ui.maxAppOutputBox->setValue(m_settings.maxAppOutputLines); m_ui.stopBeforeBuildComboBox->setCurrentIndex(pes.stopBeforeBuild); } diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 1a7906cff7c..8c00e092bce 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -843,10 +843,11 @@ QStringList QMakeStepConfig::toArguments() const else if (archConfig == PPC64) arguments << QLatin1String("CONFIG+=ppc64"); + // TODO: make that depend on the actual Qt version that is used if (osType == IphoneSimulator) - arguments << QLatin1String("CONFIG+=iphonesimulator"); + arguments << QLatin1String("CONFIG+=iphonesimulator") << QLatin1String("CONFIG+=simulator") /*since Qt 5.7*/; else if (osType == IphoneOS) - arguments << QLatin1String("CONFIG+=iphoneos"); + arguments << QLatin1String("CONFIG+=iphoneos") << QLatin1String("CONFIG+=device") /*since Qt 5.7*/; if (linkQmlDebuggingQQ2) arguments << QLatin1String("CONFIG+=qml_debug"); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index 06d6e53a809..4f245c23f83 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -292,10 +292,8 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q m_backendAnchorBinding.setup(qmlObjectNode.modelNode()); context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding); - context()->setContextProperty(QLatin1String("transaction"), m_propertyEditorTransaction.data()); - // model node m_backendModelNode.setup(qmlObjectNode.modelNode()); context()->setContextProperty(QLatin1String("modelNodeBackend"), &m_backendModelNode); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp index c39f347aa6d..9eec21692dc 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp @@ -148,9 +148,8 @@ void PropertyEditorValue::setValueWithEmit(const QVariant &value) void PropertyEditorValue::setValue(const QVariant &value) { if (!compareVariants(m_value, value) && - !cleverDoubleCompare(value, m_value) && - !cleverColorCompare(value, m_value)) - + !cleverDoubleCompare(value, m_value) && + !cleverColorCompare(value, m_value)) m_value = value; fixAmbigousColorNames(modelNode(), name(), &m_value); diff --git a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp index cae8ea487e2..fc04703726a 100644 --- a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp @@ -112,13 +112,18 @@ void QmlProfilerClientManager::setTcpConnection(QString host, Utils::Port port) { d->tcpHost = host; d->tcpPort = port; + d->localSocket.clear(); disconnectClient(); + // Wait for the application to announce the port before connecting. } void QmlProfilerClientManager::setLocalSocket(QString file) { d->localSocket = file; + d->tcpHost.clear(); d->tcpPort = Utils::Port(); + disconnectClient(); + // We open the server and the application connects to it, so let's do that right away. connectLocalClient(file); } diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp index b3aaaa87739..072597556ae 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp @@ -101,7 +101,7 @@ QmlProfilerRunControl::QmlProfilerRunControl(RunConfiguration *runConfiguration, QmlProfilerRunControl::~QmlProfilerRunControl() { - if (d->m_profilerState) + if (d->m_running && d->m_profilerState) stop(); delete d; } diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index 3de6a1d905c..729083aafa5 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -333,12 +333,13 @@ AnalyzerRunControl *QmlProfilerTool::createRunControl(RunConfiguration *runConfi } auto runControl = new QmlProfilerRunControl(runConfiguration, this); - connect(runControl, &RunControl::finished, [this, runControl] { + connect(runControl, &RunControl::finished, this, [this, runControl] { d->m_toolBusy = false; updateRunActions(); + disconnect(d->m_stopAction, &QAction::triggered, runControl, &QmlProfilerRunControl::stop); }); - connect(d->m_stopAction, &QAction::triggered, runControl, [runControl] { runControl->stop(); }); + connect(d->m_stopAction, &QAction::triggered, runControl, &QmlProfilerRunControl::stop); updateRunActions(); return runControl; diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index aad5c3ddf77..c3ad42f3b27 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -124,27 +124,26 @@ class LinuxPortsGatheringMethod : public PortsGatheringMethod { QByteArray commandLine(QAbstractSocket::NetworkLayerProtocol protocol) const { - QString procFilePath; - int addressLength; - if (protocol == QAbstractSocket::IPv4Protocol) { - procFilePath = QLatin1String("/proc/net/tcp"); - addressLength = 8; - } else { - procFilePath = QLatin1String("/proc/net/tcp6"); - addressLength = 32; - } - return QString::fromLatin1("sed " - "'s/.*: [[:xdigit:]]\\{%1\\}:\\([[:xdigit:]]\\{4\\}\\).*/\\1/g' %2") - .arg(addressLength).arg(procFilePath).toUtf8(); + // We might encounter the situation that protocol is given IPv6 + // but the consumer of the free port information decides to open + // an IPv4(only) port. As a result the next IPv6 scan will + // report the port again as open (in IPv6 namespace), while the + // same port in IPv4 namespace might still be blocked, and + // re-use of this port fails. + // GDBserver behaves exactly like this. + + Q_UNUSED(protocol) + + // /proc/net/tcp* covers /proc/net/tcp and /proc/net/tcp6 + return "sed -e 's/.*: [[:xdigit:]]*:\\([[:xdigit:]]\\{4\\}\\).*/\\1/g' /proc/net/tcp*"; } QList<Utils::Port> usedPorts(const QByteArray &output) const { QList<Utils::Port> ports; QList<QByteArray> portStrings = output.split('\n'); - portStrings.removeFirst(); foreach (const QByteArray &portString, portStrings) { - if (portString.isEmpty()) + if (portString.size() != 4) continue; bool ok; const Utils::Port port(portString.toInt(&ok, 16)); diff --git a/src/plugins/texteditor/behaviorsettingswidget.cpp b/src/plugins/texteditor/behaviorsettingswidget.cpp index f3410915e45..718ea5e6e94 100644 --- a/src/plugins/texteditor/behaviorsettingswidget.cpp +++ b/src/plugins/texteditor/behaviorsettingswidget.cpp @@ -63,14 +63,15 @@ BehaviorSettingsWidget::BehaviorSettingsWidget(QWidget *parent) if (firstNonNegative != mibs.end()) std::rotate(mibs.begin(), firstNonNegative, mibs.end()); foreach (int mib, mibs) { - QTextCodec *codec = QTextCodec::codecForMib(mib); - QString compoundName = QLatin1String(codec->name()); - foreach (const QByteArray &alias, codec->aliases()) { - compoundName += QLatin1String(" / "); - compoundName += QString::fromLatin1(alias); + if (QTextCodec *codec = QTextCodec::codecForMib(mib)) { + QString compoundName = QLatin1String(codec->name()); + foreach (const QByteArray &alias, codec->aliases()) { + compoundName += QLatin1String(" / "); + compoundName += QString::fromLatin1(alias); + } + d->m_ui.encodingBox->addItem(compoundName); + d->m_codecs.append(codec); } - d->m_ui.encodingBox->addItem(compoundName); - d->m_codecs.append(codec); } // Qt5 doesn't list the system locale (QTBUG-34283), so add it manually diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index b4aee7ad109..d9e03133b88 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -370,6 +370,7 @@ public: int extraAreaSelectionAnchorBlockNumber; int extraAreaToggleMarkBlockNumber; int extraAreaHighlightFoldedBlockNumber; + int extraAreaPreviousMarkTooltipRequestedLine; TextEditorOverlay *m_overlay; TextEditorOverlay *m_snippetOverlay; @@ -489,6 +490,7 @@ TextEditorWidgetPrivate::TextEditorWidgetPrivate(TextEditorWidget *parent) extraAreaSelectionAnchorBlockNumber(-1), extraAreaToggleMarkBlockNumber(-1), extraAreaHighlightFoldedBlockNumber(-1), + extraAreaPreviousMarkTooltipRequestedLine(-1), m_overlay(0), m_snippetOverlay(0), m_searchResultOverlay(0), @@ -5075,6 +5077,8 @@ void TextEditorWidget::showDefaultContextMenu(QContextMenuEvent *e, Id menuConte void TextEditorWidget::extraAreaLeaveEvent(QEvent *) { + d->extraAreaPreviousMarkTooltipRequestedLine = -1; + // fake missing mouse move event from Qt QMouseEvent me(QEvent::MouseMove, QPoint(-1, -1), Qt::NoButton, 0, 0); extraAreaMouseEvent(&me); @@ -5133,7 +5137,9 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e) if (inMarkArea) { //Find line by cursor position int line = cursor.blockNumber() + 1; - emit markTooltipRequested(this, mapToGlobal(e->pos()), line); + if (d->extraAreaPreviousMarkTooltipRequestedLine != line) + emit markTooltipRequested(this, mapToGlobal(e->pos()), line); + d->extraAreaPreviousMarkTooltipRequestedLine = line; } if (e->buttons() & Qt::LeftButton && !d->m_markDragStart.isNull()) { diff --git a/src/plugins/updateinfo/updateinfo.qbs b/src/plugins/updateinfo/updateinfo.qbs index 2a875c4d7f4..5253039dbc9 100644 --- a/src/plugins/updateinfo/updateinfo.qbs +++ b/src/plugins/updateinfo/updateinfo.qbs @@ -3,8 +3,6 @@ import qbs 1.0 QtcPlugin { name: "UpdateInfo" - condition: false // Severely broken atm. - Depends { name: "Qt"; submodules: ["widgets", "xml", "network"] } Depends { name: "Utils" } diff --git a/src/shared/help/helpicons.h b/src/shared/help/helpicons.h index f4406f031f9..4c6b0aa7260 100644 --- a/src/shared/help/helpicons.h +++ b/src/shared/help/helpicons.h @@ -31,8 +31,10 @@ namespace Help { namespace Icons { const Utils::Icon BOOKMARK({ + {QLatin1String(":/help/images/bookmark.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::Tint); +const Utils::Icon BOOKMARK_TOOLBAR({ {QLatin1String(":/help/images/bookmark.png"), Utils::Theme::IconsBaseColor}}); -const Utils::Icon HOME({ +const Utils::Icon HOME_TOOLBAR({ {QLatin1String(":/help/images/home.png"), Utils::Theme::IconsBaseColor}}); const Utils::Icon MODE_HELP_CLASSIC( QLatin1String(":/help/images/mode_help.png")); diff --git a/src/shared/proparser/images/append.png b/src/shared/proparser/images/append.png Binary files differdeleted file mode 100644 index 5ae826e56c3..00000000000 --- a/src/shared/proparser/images/append.png +++ /dev/null diff --git a/src/shared/proparser/images/other.png b/src/shared/proparser/images/other.png Binary files differdeleted file mode 100644 index 044ce1ebb88..00000000000 --- a/src/shared/proparser/images/other.png +++ /dev/null diff --git a/src/shared/proparser/images/profile.png b/src/shared/proparser/images/profile.png Binary files differdeleted file mode 100644 index 4a24ce3c2f4..00000000000 --- a/src/shared/proparser/images/profile.png +++ /dev/null diff --git a/src/shared/proparser/images/remove.png b/src/shared/proparser/images/remove.png Binary files differdeleted file mode 100644 index 039f05a0057..00000000000 --- a/src/shared/proparser/images/remove.png +++ /dev/null diff --git a/src/shared/proparser/images/scope.png b/src/shared/proparser/images/scope.png Binary files differdeleted file mode 100644 index eefcb599545..00000000000 --- a/src/shared/proparser/images/scope.png +++ /dev/null diff --git a/src/shared/proparser/images/set.png b/src/shared/proparser/images/set.png Binary files differdeleted file mode 100644 index 69a8fe0523e..00000000000 --- a/src/shared/proparser/images/set.png +++ /dev/null diff --git a/src/shared/proparser/images/value.png b/src/shared/proparser/images/value.png Binary files differdeleted file mode 100644 index 433cd527f48..00000000000 --- a/src/shared/proparser/images/value.png +++ /dev/null diff --git a/src/shared/proparser/proiteminfo.xml b/src/shared/proparser/proiteminfo.xml deleted file mode 100644 index 0224bb166d2..00000000000 --- a/src/shared/proparser/proiteminfo.xml +++ /dev/null @@ -1,109 +0,0 @@ -<!DOCTYPE ProItemInfo> -<proiteminfo> - <scope> - <id>win32</id> - <name>Windows</name> - </scope> - - <scope> - <id>unix</id> - <name>Unix</name> - </scope> - - <scope> - <id>mac</id> - <name>Mac</name> - </scope> - - <variable multiple="false"> - <id>TARGET</id> - <name>Output Target</name> - <description>This specifies the name of the target file.</description> - </variable> - - <variable multiple="false"> - <id>TEMPLATE</id> - <name>Output Template</name> - <description>This variable contains the name of the template to use when generating the project.</description> - <value> - <id>app</id> - <name>Application</name> - </value> - <value> - <id>lib</id> - <name>Library</name> - </value> - <value> - <id>subdirs</id> - <name>Subdirectories</name> - </value> - </variable> - - <variable multiple="true" operator="0"> - <id>HEADERS</id> - <name>Header Files</name> - <description>Defines the header files for the project</description> - </variable> - - <variable multiple="true" operator="0"> - <id>SOURCES</id> - <name>Source Files</name> - <description>Defines the source files for the project</description> - </variable> - - <variable multiple="true" operator="0"> - <id>INCLUDEPATH</id> - <name>Include Path</name> - <description>Defines the include path for the project</description> - </variable> - - <variable multiple="true" operator="0"> - <id>FORMS</id> - <name>Form Files</name> - <description>Defines the form files for the project</description> - </variable> - - <variable multiple="true" operator="0"> - <id>RESOURCES</id> - <name>Resource Files</name> - <description>Defines the resource files for the project</description> - </variable> - - <variable multiple="true" operator="0"> - <id>QT</id> - <name>Qt Modules</name> - <description>The values stored in the QT variable control which of the Qt modules are used by your project.</description> - <value> - <id>core</id> - <name>QtCore module</name> - </value> - <value> - <id>gui</id> - <name>QtGui module</name> - </value> - <value> - <id>network</id> - <name>QtNetwork module</name> - </value> - <value> - <id>opengl</id> - <name>QtOpenGL module</name> - </value> - <value> - <id>sql</id> - <name>QtSql module</name> - </value> - <value> - <id>svg</id> - <name>QtSvg module</name> - </value> - <value> - <id>xml</id> - <name>QtXml module</name> - </value> - <value> - <id>qt3support</id> - <name>Qt3Support module</name> - </value> - </variable> -</proiteminfo> diff --git a/src/shared/proparser/proparser.qrc b/src/shared/proparser/proparser.qrc index ab5a8a720d1..9193eaa31c4 100644 --- a/src/shared/proparser/proparser.qrc +++ b/src/shared/proparser/proparser.qrc @@ -1,14 +1,4 @@ <RCC> - <qresource prefix="/proparser" > - <file>images/profile.png</file> - <file>images/scope.png</file> - <file>images/value.png</file> - <file>images/other.png</file> - <file>images/set.png</file> - <file>images/append.png</file> - <file>images/remove.png</file> - <file>proiteminfo.xml</file> - </qresource> <qresource prefix="/qmake/features" > <file>spec_pre.prf</file> <file>spec_post.prf</file> diff --git a/src/shared/qbs b/src/shared/qbs -Subproject bc5ef731d64edd6d2f152a7c68b6ad46efd7066 +Subproject e31446f563ec8fb1f23e073a97017a5661fbede diff --git a/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp index 8219c390e9f..85bb3f23792 100644 --- a/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp +++ b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp @@ -71,7 +71,7 @@ public: } }; -struct State { +class State { public: State() {} diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg index 68647b9c9e0..f9055648a59 100644 --- a/src/tools/icons/qtcreatoricons.svg +++ b/src/tools/icons/qtcreatoricons.svg @@ -3106,7 +3106,7 @@ style="fill:#ffffff;fill-opacity:1" /> <polygon transform="translate(402,208)" - id="polygon6780-6" + id="bookmarkribbon" points="555,374 555,362 561,362 561,374 558,370 " style="fill:#000000;fill-opacity:1" /> </g> @@ -3146,6 +3146,25 @@ cy="576" r="6" /> </g> + <g + id="src/plugins/bookmarks/images/bookmark"> + <rect + style="display:inline;fill:#ffffff;fill-opacity:1" + x="1016" + y="568" + width="16" + height="16" + id="rect6782-96-0" /> + <use + transform="translate(61,0)" + height="100%" + width="100%" + id="use4979" + xlink:href="#bookmarkribbon" + y="0" + x="0" + style="display:inline" /> + </g> </g> <g inkscape:groupmode="layer" diff --git a/src/tools/iostool/iosdevicemanager.cpp b/src/tools/iostool/iosdevicemanager.cpp index 579b10ddc1f..c99ba363067 100644 --- a/src/tools/iostool/iosdevicemanager.cpp +++ b/src/tools/iostool/iosdevicemanager.cpp @@ -129,6 +129,219 @@ typedef am_res_t (MDEV_API *USBMuxConnectByPortPtr)(unsigned int, int, ServiceSo } // anonymous namespace +static QString mobileDeviceErrorString(am_res_t code) +{ + static const char *errorStrings[] = { + "kAMDSuccess", // 0x0 + "kAMDUndefinedError", // 0xe8000001 + "kAMDBadHeaderError", + "kAMDNoResourcesError", + "kAMDReadError", + "kAMDWriteError", + "kAMDUnknownPacketError", + "kAMDInvalidArgumentError", + "kAMDNotFoundError", + "kAMDIsDirectoryError", + "kAMDPermissionError", + "kAMDNotConnectedError", + "kAMDTimeOutError", + "kAMDOverrunError", + "kAMDEOFError", + "kAMDUnsupportedError", + "kAMDFileExistsError", + "kAMDBusyError", + "kAMDCryptoError", + "kAMDInvalidResponseError", + "kAMDMissingKeyError", + "kAMDMissingValueError", + "kAMDGetProhibitedError", + "kAMDSetProhibitedError", + "kAMDRemoveProhibitedError", + "kAMDImmutableValueError", + "kAMDPasswordProtectedError", + "kAMDMissingHostIDError", + "kAMDInvalidHostIDError", + "kAMDSessionActiveError", + "kAMDSessionInactiveError", + "kAMDMissingSessionIDError", + "kAMDInvalidSessionIDError", + "kAMDMissingServiceError", + "kAMDInvalidServiceError", + "kAMDInvalidCheckinError", + "kAMDCheckinTimeoutError", + "kAMDMissingPairRecordError", + "kAMDInvalidActivationRecordError", + "kAMDMissingActivationRecordError", + "kAMDWrongDroidError", + "kAMDSUVerificationError", + "kAMDSUPatchError", + "kAMDSUFirmwareError", + "kAMDProvisioningProfileNotValid", + "kAMDSendMessageError", + "kAMDReceiveMessageError", + "kAMDMissingOptionsError", + "kAMDMissingImageTypeError", + "kAMDDigestFailedError", + "kAMDStartServiceError", + "kAMDInvalidDiskImageError", + "kAMDMissingDigestError", + "kAMDMuxError", + "kAMDApplicationAlreadyInstalledError", + "kAMDApplicationMoveFailedError", + "kAMDApplicationSINFCaptureFailedError", + "kAMDApplicationSandboxFailedError", + "kAMDApplicationVerificationFailedError", + "kAMDArchiveDestructionFailedError", + "kAMDBundleVerificationFailedError", + "kAMDCarrierBundleCopyFailedError", + "kAMDCarrierBundleDirectoryCreationFailedError", + "kAMDCarrierBundleMissingSupportedSIMsError", + "kAMDCommCenterNotificationFailedError", + "kAMDContainerCreationFailedError", + "kAMDContainerP0wnFailedError", + "kAMDContainerRemovalFailedError", + "kAMDEmbeddedProfileInstallFailedError", + "kAMDErrorError", + "kAMDExecutableTwiddleFailedError", + "kAMDExistenceCheckFailedError", + "kAMDInstallMapUpdateFailedError", + "kAMDManifestCaptureFailedError", + "kAMDMapGenerationFailedError", + "kAMDMissingBundleExecutableError", + "kAMDMissingBundleIdentifierError", + "kAMDMissingBundlePathError", + "kAMDMissingContainerError", + "kAMDNotificationFailedError", + "kAMDPackageExtractionFailedError", + "kAMDPackageInspectionFailedError", + "kAMDPackageMoveFailedError", + "kAMDPathConversionFailedError", + "kAMDRestoreContainerFailedError", + "kAMDSeatbeltProfileRemovalFailedError", + "kAMDStageCreationFailedError", + "kAMDSymlinkFailedError", + "kAMDiTunesArtworkCaptureFailedError", + "kAMDiTunesMetadataCaptureFailedError", + "kAMDAlreadyArchivedError", + "kAMDServiceLimitError", + "kAMDInvalidPairRecordError", + "kAMDServiceProhibitedError", + "kAMDCheckinSetupFailedError", + "kAMDCheckinConnectionFailedError", + "kAMDCheckinReceiveFailedError", + "kAMDCheckinResponseFailedError", + "kAMDCheckinSendFailedError", + "kAMDMuxCreateListenerError", + "kAMDMuxGetListenerError", + "kAMDMuxConnectError", + "kAMDUnknownCommandError", + "kAMDAPIInternalError", + "kAMDSavePairRecordFailedError", + "kAMDCheckinOutOfMemoryError", + "kAMDDeviceTooNewError", + "kAMDDeviceRefNoGood", + "kAMDCannotTranslateError", + "kAMDMobileImageMounterMissingImageSignature", + "kAMDMobileImageMounterResponseCreationFailed", + "kAMDMobileImageMounterMissingImageType", + "kAMDMobileImageMounterMissingImagePath", + "kAMDMobileImageMounterImageMapLoadFailed", + "kAMDMobileImageMounterAlreadyMounted", + "kAMDMobileImageMounterImageMoveFailed", + "kAMDMobileImageMounterMountPathMissing", + "kAMDMobileImageMounterMountPathNotEmpty", + "kAMDMobileImageMounterImageMountFailed", + "kAMDMobileImageMounterTrustCacheLoadFailed", + "kAMDMobileImageMounterDigestFailed", + "kAMDMobileImageMounterDigestCreationFailed", + "kAMDMobileImageMounterImageVerificationFailed", + "kAMDMobileImageMounterImageInfoCreationFailed", + "kAMDMobileImageMounterImageMapStoreFailed", + "kAMDBonjourSetupError", + "kAMDDeviceOSVersionTooLow", + "kAMDNoWifiSyncSupportError", + "kAMDDeviceFamilyNotSupported", + "kAMDEscrowLockedError", + "kAMDPairingProhibitedError", + "kAMDProhibitedBySupervision", + "kAMDDeviceDisconnectedError", + "kAMDTooBigError", + "kAMDPackagePatchFailedError", + "kAMDIncorrectArchitectureError", + "kAMDPluginCopyFailedError", + "kAMDBreadcrumbFailedError", + "kAMDBreadcrumbUnlockError", + "kAMDGeoJSONCaptureFailedError", + "kAMDNewsstandArtworkCaptureFailedError", + "kAMDMissingCommandError", + "kAMDNotEntitledError", + "kAMDMissingPackagePathError", + "kAMDMissingContainerPathError", + "kAMDMissingApplicationIdentifierError", + "kAMDMissingAttributeValueError", + "kAMDLookupFailedError", + "kAMDDictCreationFailedError", + "kAMDUserDeniedPairingError", + "kAMDPairingDialogResponsePendingError", + "kAMDInstallProhibitedError", + "kAMDUninstallProhibitedError", + "kAMDFMiPProtectedError", + "kAMDMCProtected", + "kAMDMCChallengeRequired", + "kAMDMissingBundleVersionError" // 0xe800009c + }; + + CFStringRef key = NULL; + static const size_t errorStringLast = ((sizeof(errorStrings) / sizeof(char *)) - 1) | 0xe8000000; + if (code <= errorStringLast) { + // Mask off some bits to get an index into the known error names array + key = QString::fromLatin1(errorStrings[code & ~0xe8000000]).toCFString(); + } else { + // Some errors don't have constant names; check a few other known error codes + switch (code) { + case 0xe8008015: + key = CFSTR("A valid provisioning profile for this executable was not found."); + break; + case 0xe8008016: + key = CFSTR("The executable was signed with invalid entitlements."); + break; + case 0xe8008017: + key = CFSTR("A signed resource has been added, modified, or deleted."); + break; + case 0xe8008018: + key = CFSTR("The identity used to sign the executable is no longer valid."); + break; + case 0xe8008019: + key = CFSTR("The application does not have a valid signature."); + break; + case 0xe800801c: + key = CFSTR("The signature was not valid."); + break; + default: + return QString(); + } + + CFRetain(key); + } + + CFURLRef url = QUrl::fromLocalFile( + QStringLiteral("/System/Library/PrivateFrameworks/MobileDevice.framework")).toCFURL(); + CFBundleRef mobileDeviceBundle = CFBundleCreate(kCFAllocatorDefault, url); + CFRelease(url); + + QString s; + if (mobileDeviceBundle) { + CFStringRef str = CFCopyLocalizedStringFromTableInBundle(key, CFSTR("Localizable"), + mobileDeviceBundle, nil); + + s = QString::fromCFString(str); + CFRelease(str); + } + + CFRelease(key); + return s; +} + namespace Ios { namespace Internal { @@ -770,9 +983,9 @@ bool CommandSession::startService(const QString &serviceName, ServiceSocket &fd) if (!connectDevice()) return false; CFStringRef cfsService = serviceName.toCFString(); - if (am_res_t error = lib()->deviceStartService(device, cfsService, &fd, 0)) { - addError(QString::fromLatin1("startService on device %1 failed, AMDeviceStartService returned %2") - .arg(deviceId).arg(error)); + if (am_res_t error = lib()->deviceStartService(device, cfsService, 0, &fd)) { + addError(QString::fromLatin1("Starting service \"%1\" on device %2 failed, AMDeviceStartService returned %3 (0x%4)") + .arg(serviceName).arg(deviceId).arg(mobileDeviceErrorString(error)).arg(QString::number(error, 16))); failure = true; fd = -1; } @@ -1045,219 +1258,6 @@ QString AppOpSession::commandName() return QString::fromLatin1("TransferAppSession(%1, %2)").arg(deviceId, bundlePath); } -static QString mobileDeviceErrorString(am_res_t code) -{ - static const char *errorStrings[] = { - "kAMDSuccess", // 0x0 - "kAMDUndefinedError", // 0xe8000001 - "kAMDBadHeaderError", - "kAMDNoResourcesError", - "kAMDReadError", - "kAMDWriteError", - "kAMDUnknownPacketError", - "kAMDInvalidArgumentError", - "kAMDNotFoundError", - "kAMDIsDirectoryError", - "kAMDPermissionError", - "kAMDNotConnectedError", - "kAMDTimeOutError", - "kAMDOverrunError", - "kAMDEOFError", - "kAMDUnsupportedError", - "kAMDFileExistsError", - "kAMDBusyError", - "kAMDCryptoError", - "kAMDInvalidResponseError", - "kAMDMissingKeyError", - "kAMDMissingValueError", - "kAMDGetProhibitedError", - "kAMDSetProhibitedError", - "kAMDRemoveProhibitedError", - "kAMDImmutableValueError", - "kAMDPasswordProtectedError", - "kAMDMissingHostIDError", - "kAMDInvalidHostIDError", - "kAMDSessionActiveError", - "kAMDSessionInactiveError", - "kAMDMissingSessionIDError", - "kAMDInvalidSessionIDError", - "kAMDMissingServiceError", - "kAMDInvalidServiceError", - "kAMDInvalidCheckinError", - "kAMDCheckinTimeoutError", - "kAMDMissingPairRecordError", - "kAMDInvalidActivationRecordError", - "kAMDMissingActivationRecordError", - "kAMDWrongDroidError", - "kAMDSUVerificationError", - "kAMDSUPatchError", - "kAMDSUFirmwareError", - "kAMDProvisioningProfileNotValid", - "kAMDSendMessageError", - "kAMDReceiveMessageError", - "kAMDMissingOptionsError", - "kAMDMissingImageTypeError", - "kAMDDigestFailedError", - "kAMDStartServiceError", - "kAMDInvalidDiskImageError", - "kAMDMissingDigestError", - "kAMDMuxError", - "kAMDApplicationAlreadyInstalledError", - "kAMDApplicationMoveFailedError", - "kAMDApplicationSINFCaptureFailedError", - "kAMDApplicationSandboxFailedError", - "kAMDApplicationVerificationFailedError", - "kAMDArchiveDestructionFailedError", - "kAMDBundleVerificationFailedError", - "kAMDCarrierBundleCopyFailedError", - "kAMDCarrierBundleDirectoryCreationFailedError", - "kAMDCarrierBundleMissingSupportedSIMsError", - "kAMDCommCenterNotificationFailedError", - "kAMDContainerCreationFailedError", - "kAMDContainerP0wnFailedError", - "kAMDContainerRemovalFailedError", - "kAMDEmbeddedProfileInstallFailedError", - "kAMDErrorError", - "kAMDExecutableTwiddleFailedError", - "kAMDExistenceCheckFailedError", - "kAMDInstallMapUpdateFailedError", - "kAMDManifestCaptureFailedError", - "kAMDMapGenerationFailedError", - "kAMDMissingBundleExecutableError", - "kAMDMissingBundleIdentifierError", - "kAMDMissingBundlePathError", - "kAMDMissingContainerError", - "kAMDNotificationFailedError", - "kAMDPackageExtractionFailedError", - "kAMDPackageInspectionFailedError", - "kAMDPackageMoveFailedError", - "kAMDPathConversionFailedError", - "kAMDRestoreContainerFailedError", - "kAMDSeatbeltProfileRemovalFailedError", - "kAMDStageCreationFailedError", - "kAMDSymlinkFailedError", - "kAMDiTunesArtworkCaptureFailedError", - "kAMDiTunesMetadataCaptureFailedError", - "kAMDAlreadyArchivedError", - "kAMDServiceLimitError", - "kAMDInvalidPairRecordError", - "kAMDServiceProhibitedError", - "kAMDCheckinSetupFailedError", - "kAMDCheckinConnectionFailedError", - "kAMDCheckinReceiveFailedError", - "kAMDCheckinResponseFailedError", - "kAMDCheckinSendFailedError", - "kAMDMuxCreateListenerError", - "kAMDMuxGetListenerError", - "kAMDMuxConnectError", - "kAMDUnknownCommandError", - "kAMDAPIInternalError", - "kAMDSavePairRecordFailedError", - "kAMDCheckinOutOfMemoryError", - "kAMDDeviceTooNewError", - "kAMDDeviceRefNoGood", - "kAMDCannotTranslateError", - "kAMDMobileImageMounterMissingImageSignature", - "kAMDMobileImageMounterResponseCreationFailed", - "kAMDMobileImageMounterMissingImageType", - "kAMDMobileImageMounterMissingImagePath", - "kAMDMobileImageMounterImageMapLoadFailed", - "kAMDMobileImageMounterAlreadyMounted", - "kAMDMobileImageMounterImageMoveFailed", - "kAMDMobileImageMounterMountPathMissing", - "kAMDMobileImageMounterMountPathNotEmpty", - "kAMDMobileImageMounterImageMountFailed", - "kAMDMobileImageMounterTrustCacheLoadFailed", - "kAMDMobileImageMounterDigestFailed", - "kAMDMobileImageMounterDigestCreationFailed", - "kAMDMobileImageMounterImageVerificationFailed", - "kAMDMobileImageMounterImageInfoCreationFailed", - "kAMDMobileImageMounterImageMapStoreFailed", - "kAMDBonjourSetupError", - "kAMDDeviceOSVersionTooLow", - "kAMDNoWifiSyncSupportError", - "kAMDDeviceFamilyNotSupported", - "kAMDEscrowLockedError", - "kAMDPairingProhibitedError", - "kAMDProhibitedBySupervision", - "kAMDDeviceDisconnectedError", - "kAMDTooBigError", - "kAMDPackagePatchFailedError", - "kAMDIncorrectArchitectureError", - "kAMDPluginCopyFailedError", - "kAMDBreadcrumbFailedError", - "kAMDBreadcrumbUnlockError", - "kAMDGeoJSONCaptureFailedError", - "kAMDNewsstandArtworkCaptureFailedError", - "kAMDMissingCommandError", - "kAMDNotEntitledError", - "kAMDMissingPackagePathError", - "kAMDMissingContainerPathError", - "kAMDMissingApplicationIdentifierError", - "kAMDMissingAttributeValueError", - "kAMDLookupFailedError", - "kAMDDictCreationFailedError", - "kAMDUserDeniedPairingError", - "kAMDPairingDialogResponsePendingError", - "kAMDInstallProhibitedError", - "kAMDUninstallProhibitedError", - "kAMDFMiPProtectedError", - "kAMDMCProtected", - "kAMDMCChallengeRequired", - "kAMDMissingBundleVersionError" // 0xe800009c - }; - - CFStringRef key = NULL; - static const size_t errorStringLast = ((sizeof(errorStrings) / sizeof(char *)) - 1) | 0xe8000000; - if (code <= errorStringLast) { - // Mask off some bits to get an index into the known error names array - key = QString::fromLatin1(errorStrings[code & ~0xe8000000]).toCFString(); - } else { - // Some errors don't have constant names; check a few other known error codes - switch (code) { - case 0xe8008015: - key = CFSTR("A valid provisioning profile for this executable was not found."); - break; - case 0xe8008016: - key = CFSTR("The executable was signed with invalid entitlements."); - break; - case 0xe8008017: - key = CFSTR("A signed resource has been added, modified, or deleted."); - break; - case 0xe8008018: - key = CFSTR("The identity used to sign the executable is no longer valid."); - break; - case 0xe8008019: - key = CFSTR("The application does not have a valid signature."); - break; - case 0xe800801c: - key = CFSTR("The signature was not valid."); - break; - default: - return QString(); - } - - CFRetain(key); - } - - CFURLRef url = QUrl::fromLocalFile( - QStringLiteral("/System/Library/PrivateFrameworks/MobileDevice.framework")).toCFURL(); - CFBundleRef mobileDeviceBundle = CFBundleCreate(kCFAllocatorDefault, url); - CFRelease(url); - - QString s; - if (mobileDeviceBundle) { - CFStringRef str = CFCopyLocalizedStringFromTableInBundle(key, CFSTR("Localizable"), - mobileDeviceBundle, nil); - - s = QString::fromCFString(str); - CFRelease(str); - } - - CFRelease(key); - return s; -} - bool AppOpSession::installApp() { ServiceSocket fd; @@ -1269,8 +1269,8 @@ bool AppOpSession::installApp() if (am_res_t error = lib()->deviceTransferApplication(fd, cfsBundlePath, 0, &appTransferSessionCallback, static_cast<CommandSession *>(this))) { - addError(QString::fromLatin1("TransferAppSession(%1,%2) failed, AMDeviceTransferApplication returned %3") - .arg(bundlePath, deviceId).arg(error)); + addError(QString::fromLatin1("TransferAppSession(%1,%2) failed, AMDeviceTransferApplication returned %3 (0x%4)") + .arg(bundlePath, deviceId).arg(mobileDeviceErrorString(error)).arg(error)); failure = true; } progressBase += 100; diff --git a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp index d2de76e4d82..cf26114d9a1 100644 --- a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp +++ b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp @@ -219,6 +219,8 @@ private slots: void test_checksymbols_infiniteLoop_data(); void test_checksymbols_infiniteLoop(); + void test_checkForValidSymbolFileId(); + void test_parentOfBlock(); void findField(); @@ -1165,6 +1167,33 @@ void tst_CheckSymbols::test_checksymbols_infiniteLoop() TestCase::runCheckSymbols(document1, snapshot); } +void tst_CheckSymbols::test_checkForValidSymbolFileId() +{ + const QByteArray contents = + "constexpr int parent_of(const int f) { return 1; }\n" + "\n" + "template <typename T> struct wrapper { const T* ptr; };\n" + "template <int> struct Dummy;\n" + "\n" + "namespace impl {\n" + " template <int f>\n" + " struct dummy_impl {\n" + " wrapper<Dummy<parent_of(f)>> parent;\n" + " };\n" + "}\n" + "\n" + "template <int f>\n" + "struct Dummy : impl::dummy_impl<f> {};\n" + "\n" + "void client()\n" + "{\n" + " wrapper<Dummy<1>> a;\n" + " a.ptr->parent.ptr;\n" + "}\n"; + + BaseTestCase tc(contents); +} + void tst_CheckSymbols::test_parentOfBlock() { const QByteArray source = "void C::f()\n" diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py index acbcd4a6267..205ef99cfca 100644 --- a/tests/system/suite_debugger/tst_simple_debug/test.py +++ b/tests/system/suite_debugger/tst_simple_debug/test.py @@ -52,9 +52,6 @@ def main(): if result: expectedBreakpointsOrder = [{os.path.join(workingDir, projectName, "main.cpp"):8}, {os.path.join(workingDir, projectName, "main.qml"):10}] - if JIRA.isBugStillOpen(15806): - test.xfail("Breakpoint in QML file won't be hit (QTCREATORBUG-15806).") - expectedBreakpointsOrder = expectedBreakpointsOrder[:-1] # Only use 4.7.4 to work around QTBUG-25187 availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug") progressBarWait() diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index 6b6dc96d69f..5f77277bb03 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -189,6 +189,10 @@ def __getWinCompilers__(): if os.path.exists(compiler): parameters = testData.field(record, "displayedParameters").split(",") usedParameters = testData.field(record, "usedParameters").split(",") + idePath = testData.field(record, "IDEPath") + if len(idePath): + if not os.path.exists(os.path.abspath(os.path.join(envvar, idePath))): + continue if testData.field(record, "isSDK") == "true": for para, used in zip(parameters, usedParameters): result.append( diff --git a/tests/system/suite_general/tst_default_settings/testdata/win_compiler_paths.tsv b/tests/system/suite_general/tst_default_settings/testdata/win_compiler_paths.tsv index a9a8e548e3f..66149bb8919 100644 --- a/tests/system/suite_general/tst_default_settings/testdata/win_compiler_paths.tsv +++ b/tests/system/suite_general/tst_default_settings/testdata/win_compiler_paths.tsv @@ -1,23 +1,27 @@ -"envvar" "path" "file" "displayName" "displayedParameters" "usedParameters" "isSDK" -"ProgramFiles" "Microsoft SDKs\Windows\v7.0\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" -"ProgramFiles(x86)" "Microsoft SDKs\Windows\v7.0\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" -"ProgramW6432" "Microsoft SDKs\Windows\v7.0\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" -"ProgramFiles" "Microsoft SDKs\Windows\v7.1\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" -"ProgramFiles(x86)" "Microsoft SDKs\Windows\v7.1\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" -"ProgramW6432" "Microsoft SDKs\Windows\v7.1\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" -"VS80COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 8.0" "x86" "" "false" -"VS80COMNTOOLS" "..\..\VC\Bin\amd64" "vcvarsamd64.bat" "Microsoft Visual C++ Compiler 8.0" "amd64" "amd64" "false" -"VS80COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_amd64.bat" "Microsoft Visual C++ Compiler 8.0" "x86_amd64" "x86_amd64" "false" -"VS80COMNTOOLS" "..\..\VC\Bin" "vcvars64.bat" "Microsoft Visual C++ Compiler 8.0" "ia64" "ia64" "false" -"VS80COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_ia64.bat" "Microsoft Visual C++ Compiler 8.0" "x86_ia64" "x86_ia64" "false" -"VS90COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 9.0" "x86" "" "false" -"VS90COMNTOOLS" "..\..\VC\Bin\amd64" "vcvarsamd64.bat" "Microsoft Visual C++ Compiler 9.0" "amd64" "amd64" "false" -"VS90COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_amd64.bat" "Microsoft Visual C++ Compiler 9.0" "x86_amd64" "x86_amd64" "false" -"VS90COMNTOOLS" "..\..\VC\Bin" "vcvars64.bat" "Microsoft Visual C++ Compiler 9.0" "ia64" "ia64" "false" -"VS90COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_ia64.bat" "Microsoft Visual C++ Compiler 9.0" "x86_ia64" "x86_ia64" "false" -"VS100COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 10.0" "x86" "" "false" -"VS100COMNTOOLS" "..\..\VC" "vcvarsall.bat" "Microsoft Visual C++ Compiler 10.0" "x86,amd64,x86_amd64,ia64,x86_ia64" "x86,amd64,x86_amd64,ia64,x86_ia64" "false" -"VS110COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 11.0" "x86" "" "false" -"VS110COMNTOOLS" "..\..\VC" "vcvarsall.bat" "Microsoft Visual C++ Compiler 11.0" "x86,amd64,x86_amd64,ia64,x86_ia64" "x86,amd64,x86_amd64,ia64,x86_ia64" "false" -"VS120COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 12.0" "x86" "" "false" -"VS120COMNTOOLS" "..\..\VC" "vcvarsall.bat" "Microsoft Visual C++ Compiler 12.0" "x86,amd64,x86_amd64,ia64,x86_ia64" "x86,amd64,x86_amd64,ia64,x86_ia64" "false" +"envvar" "path" "file" "displayName" "displayedParameters" "usedParameters" "isSDK" "IDEPath" +"ProgramFiles" "Microsoft SDKs\Windows\v7.0\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" "" +"ProgramFiles(x86)" "Microsoft SDKs\Windows\v7.0\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" "" +"ProgramW6432" "Microsoft SDKs\Windows\v7.0\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" "" +"ProgramFiles" "Microsoft SDKs\Windows\v7.1\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" "" +"ProgramFiles(x86)" "Microsoft SDKs\Windows\v7.1\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" "" +"ProgramW6432" "Microsoft SDKs\Windows\v7.1\Bin" "SetEnv.cmd" "Microsoft Windows SDK for Windows 7" "x86,amd64,x86_amd64,ia64,x86_ia64" "/x86,/x64,/x64,/ia64,/ia64" "true" "" +"VS80COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 8.0" "x86" "" "false" "" +"VS80COMNTOOLS" "..\..\VC\Bin\amd64" "vcvarsamd64.bat" "Microsoft Visual C++ Compiler 8.0" "amd64" "amd64" "false" "" +"VS80COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_amd64.bat" "Microsoft Visual C++ Compiler 8.0" "x86_amd64" "x86_amd64" "false" "" +"VS80COMNTOOLS" "..\..\VC\Bin" "vcvars64.bat" "Microsoft Visual C++ Compiler 8.0" "ia64" "ia64" "false" "" +"VS80COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_ia64.bat" "Microsoft Visual C++ Compiler 8.0" "x86_ia64" "x86_ia64" "false" "" +"VS90COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 9.0" "x86" "" "false" "" +"VS90COMNTOOLS" "..\..\VC\Bin\amd64" "vcvarsamd64.bat" "Microsoft Visual C++ Compiler 9.0" "amd64" "amd64" "false" "" +"VS90COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_amd64.bat" "Microsoft Visual C++ Compiler 9.0" "x86_amd64" "x86_amd64" "false" "" +"VS90COMNTOOLS" "..\..\VC\Bin" "vcvars64.bat" "Microsoft Visual C++ Compiler 9.0" "ia64" "ia64" "false" "" +"VS90COMNTOOLS" "..\..\VC\Bin" "vcvarsx86_ia64.bat" "Microsoft Visual C++ Compiler 9.0" "x86_ia64" "x86_ia64" "false" "" +"VS100COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 10.0" "x86" "" "false" "" +"VS100COMNTOOLS" "..\..\VC" "vcvarsall.bat" "Microsoft Visual C++ Compiler 10.0" "x86,amd64,x86_amd64,ia64,x86_ia64" "x86,amd64,x86_amd64,ia64,x86_ia64" "false" "" +"VS110COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 11.0" "x86" "" "false" "" +"VS110COMNTOOLS" "..\..\VC" "vcvarsall.bat" "Microsoft Visual C++ Compiler 11.0" "x86,amd64,x86_amd64,ia64,x86_ia64" "x86,amd64,x86_amd64,ia64,x86_ia64" "false" "" +"VS120COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 12.0" "x86" "" "false" "" +"VS120COMNTOOLS" "..\..\VC" "vcvarsall.bat" "Microsoft Visual C++ Compiler 12.0" "x86,amd64,x86_amd64,ia64,x86_ia64" "x86,amd64,x86_amd64,ia64,x86_ia64" "false" "" +"VS140COMNTOOLS" "..\..\VC\Bin" "vcvars32.bat" "Microsoft Visual C++ Compiler 14.0" "x86" "" "false" "..\IDE\devenv.exe" +"VS140COMNTOOLS" "..\..\VC" "vcvarsall.bat" "Microsoft Visual C++ Compiler 14.0" "x86,amd64,x86_amd64,x86_arm,amd64_arm" "x86,amd64,x86_amd64,x86_arm,amd64_arm" "false" "..\IDE\devenv.exe" +"ProgramFiles" "Microsoft Visual C++ Build Tools" "vcbuildtools.bat" "Microsoft Visual C++ Build Tools" "x86,x64,x86_arm,x64_arm" "x86,amd64,x86_arm,amd64_arm" "false" "" +"ProgramFiles(x86)" "Microsoft Visual C++ Build Tools" "vcbuildtools.bat" "Microsoft Visual C++ Build Tools" "x86,x64,x86_arm,x64_arm" "x86,amd64,x86_arm,amd64_arm" "false" "" diff --git a/tests/unit/echoserver/echoserver.pro b/tests/unit/echoserver/echoserver.pro index ccafe5521b8..7058753f4f2 100644 --- a/tests/unit/echoserver/echoserver.pro +++ b/tests/unit/echoserver/echoserver.pro @@ -3,7 +3,7 @@ QT += core network QT -= gui TARGET = echo -CONFIG += console c++14 +CONFIG += console c++11 CONFIG -= app_bundle TEMPLATE = app diff --git a/tests/unit/unittest/gmock_dependency.pri b/tests/unit/unittest/gmock_dependency.pri index 0dbd28acbec..a78f11b6a80 100644 --- a/tests/unit/unittest/gmock_dependency.pri +++ b/tests/unit/unittest/gmock_dependency.pri @@ -29,7 +29,7 @@ isEmpty(GOOGLETEST_DIR) { } requires(exists($$GTEST_SRC_DIR):exists($$GMOCK_SRC_DIR)) -!exists($$GTEST_SRC_DIR):message("No gmock is found! To enabe unit tests set GOOGLETEST_DIR") +!exists($$GTEST_SRC_DIR):message("No gmock is found! To enable unit tests set GOOGLETEST_DIR") DEFINES += \ GTEST_HAS_STD_INITIALIZER_LIST_ \ diff --git a/tests/unit/unittest/unittest.pro b/tests/unit/unittest/unittest.pro index c53cc35172c..30d075079b6 100644 --- a/tests/unit/unittest/unittest.pro +++ b/tests/unit/unittest/unittest.pro @@ -6,7 +6,7 @@ include(creator_dependency.pri) include(benchmark_dependency.pri) QT += core network testlib widgets -CONFIG += console c++14 testcase object_parallel_to_source +CONFIG += console c++11 testcase object_parallel_to_source CONFIG -= app_bundle OBJECTS_DIR = $$OUT_PWD/obj # workaround for qmake bug in object_parallel_to_source |