aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-4.0.0.md20
-rw-r--r--doc/examples/transitions/MainForm.ui.qml108
-rw-r--r--doc/examples/transitions/main.cpp50
-rw-r--r--doc/examples/transitions/main.qml158
-rw-r--r--doc/examples/transitions/qt-logo.pngbin5149 -> 1519 bytes
-rw-r--r--doc/images/qmldesigner-bindings.pngbin3854 -> 5852 bytes
-rw-r--r--doc/images/qmldesigner-connections.pngbin4216 -> 4606 bytes
-rw-r--r--doc/images/qmldesigner-dynamicprops.pngbin3274 -> 4953 bytes
-rw-r--r--doc/images/qmldesigner-element-properties.pngbin81499 -> 24008 bytes
-rw-r--r--doc/images/qmldesigner-element-size.pngbin34286 -> 7772 bytes
-rw-r--r--doc/images/qmldesigner-export-item.pngbin3790 -> 2435 bytes
-rw-r--r--doc/images/qmldesigner-navigator-arrows.pngbin9976 -> 3321 bytes
-rw-r--r--doc/images/qmldesigner-navigator.pngbin10700 -> 3475 bytes
-rw-r--r--doc/images/qmldesigner-new-project.pngbin15278 -> 15439 bytes
-rw-r--r--doc/images/qmldesigner-preview-size.pngbin75502 -> 21731 bytes
-rw-r--r--doc/images/qmldesigner-properties-explicit-base.pngbin62060 -> 16110 bytes
-rw-r--r--doc/images/qmldesigner-properties-explicit-state1.pngbin46113 -> 21921 bytes
-rw-r--r--doc/images/qmldesigner-qml-components.pngbin41770 -> 10870 bytes
-rw-r--r--doc/images/qmldesigner-screen-design.pngbin111976 -> 18315 bytes
-rw-r--r--doc/images/qmldesigner-states.pngbin14637 -> 3097 bytes
-rw-r--r--doc/images/qmldesigner-transitions.pngbin5123 -> 2713 bytes
-rw-r--r--doc/images/qmldesigner-tutorial-quick-toolbar.pngbin12094 -> 45054 bytes
-rw-r--r--doc/images/qmldesigner-tutorial-topleftrect.pngbin28318 -> 81599 bytes
-rw-r--r--doc/images/qmldesigner-tutorial-ui-ready.pngbin0 -> 100941 bytes
-rw-r--r--doc/images/qmldesigner-tutorial-user-icon.pngbin27033 -> 71024 bytes
-rw-r--r--doc/images/qmldesigner-tutorial.pngbin4909 -> 9904 bytes
-rw-r--r--doc/images/qmldesigner-uiforms-example-main-view.pngbin28577 -> 28914 bytes
-rw-r--r--doc/images/qmldesigner-visual-editor.pngbin43895 -> 28301 bytes
-rw-r--r--doc/images/qtcreator-locator-customize.pngbin15647 -> 17110 bytes
-rw-r--r--doc/images/qtcreator-modeleditor-classes.pngbin44699 -> 24015 bytes
-rw-r--r--doc/images/qtcreator-modeleditor-packages.pngbin18251 -> 18444 bytes
-rw-r--r--doc/images/qtcreator-modeleditor.pngbin35657 -> 24681 bytes
-rw-r--r--doc/images/qtcreator-project-options-deploy.pngbin50058 -> 24416 bytes
-rw-r--r--doc/images/qtcreator-refactoring-find.pngbin7108 -> 9887 bytes
-rw-r--r--doc/images/qtcreator-refactoring-replace.pngbin11614 -> 19564 bytes
-rw-r--r--doc/images/qtcreator-refactoring-virtual-function-dialog.pngbin24631 -> 15185 bytes
-rw-r--r--doc/images/qtcreator-search-allprojects.pngbin6393 -> 6551 bytes
-rw-r--r--doc/images/qtcreator-search-cpp-symbols.pngbin7823 -> 8088 bytes
-rw-r--r--doc/images/qtcreator-searchresults.pngbin14068 -> 8141 bytes
-rw-r--r--doc/src/editors/creator-editors.qdoc2
-rw-r--r--doc/src/editors/creator-modeling.qdoc3
-rw-r--r--doc/src/howto/creator-ui.qdoc16
-rw-r--r--doc/src/projects/creator-projects-builds-customizing.qdoc9
-rw-r--r--doc/src/qnx/creator-deployment-qnx.qdoc2
-rw-r--r--doc/src/qtquick/qtquick-app-tutorial.qdoc16
-rw-r--r--share/qtcreator/debugger/lldbbridge.py16
-rw-r--r--share/qtcreator/themes/default.creatortheme2
-rw-r--r--share/qtcreator/themes/flat.creatortheme (renamed from share/qtcreator/themes/defaultflat.creatortheme)12
-rw-r--r--share/qtcreator/translations/qtcreator_ru.ts226
-rw-r--r--src/libs/3rdparty/cplusplus/Symbol.cpp4
-rw-r--r--src/libs/clangbackendipc/connectionclient.cpp4
-rw-r--r--src/libs/qtcreatorcdbext/symbolgroupvalue.cpp16
-rw-r--r--src/plugins/autotest/testcodeparser.cpp2
-rw-r--r--src/plugins/autotest/testoutputreader.cpp7
-rw-r--r--src/plugins/autotest/testoutputreader.h1
-rw-r--r--src/plugins/autotest/testrunner.cpp5
-rw-r--r--src/plugins/autotest/testtreemodel.cpp2
-rw-r--r--src/plugins/autotest/testvisitor.cpp2
-rw-r--r--src/plugins/bookmarks/bookmarkmanager.cpp4
-rw-r--r--src/plugins/bookmarks/bookmarks.qrc1
-rw-r--r--src/plugins/bookmarks/images/bookmark.pngbin913 -> 131 bytes
-rw-r--r--src/plugins/bookmarks/images/bookmark@2x.pngbin0 -> 162 bytes
-rw-r--r--src/plugins/coreplugin/coreconstants.h2
-rw-r--r--src/plugins/coreplugin/locator/locatorfiltersfilter.cpp6
-rw-r--r--src/plugins/coreplugin/manhattanstyle.cpp11
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigswidget.cpp6
-rw-r--r--src/plugins/debugger/breakhandler.cpp2
-rw-r--r--src/plugins/debugger/breakhandler.h2
-rw-r--r--src/plugins/debugger/debuggerengine.cpp21
-rw-r--r--src/plugins/debugger/debuggermainwindow.cpp12
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp17
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp2
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp6
-rw-r--r--src/plugins/git/gitclient.cpp40
-rw-r--r--src/plugins/git/gitclient.h3
-rw-r--r--src/plugins/help/helpwidget.cpp4
-rw-r--r--src/plugins/imageviewer/imageviewer.cpp32
-rw-r--r--src/plugins/imageviewer/imageviewer.h1
-rw-r--r--src/plugins/imageviewer/imageviewerfile.cpp4
-rw-r--r--src/plugins/plugins.pro6
-rw-r--r--src/plugins/projectexplorer/projectexplorersettingspage.cpp58
-rw-r--r--src/plugins/qmakeprojectmanager/qmakestep.cpp5
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp2
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp5
-rw-r--r--src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp5
-rw-r--r--src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp2
-rw-r--r--src/plugins/qmlprofiler/qmlprofilertool.cpp5
-rw-r--r--src/plugins/remotelinux/linuxdevice.cpp27
-rw-r--r--src/plugins/texteditor/behaviorsettingswidget.cpp15
-rw-r--r--src/plugins/texteditor/texteditor.cpp8
-rw-r--r--src/plugins/updateinfo/updateinfo.qbs2
-rw-r--r--src/shared/help/helpicons.h4
-rw-r--r--src/shared/proparser/images/append.pngbin514 -> 0 bytes
-rw-r--r--src/shared/proparser/images/other.pngbin1499 -> 0 bytes
-rw-r--r--src/shared/proparser/images/profile.pngbin452 -> 0 bytes
-rw-r--r--src/shared/proparser/images/remove.pngbin497 -> 0 bytes
-rw-r--r--src/shared/proparser/images/scope.pngbin350 -> 0 bytes
-rw-r--r--src/shared/proparser/images/set.pngbin473 -> 0 bytes
-rw-r--r--src/shared/proparser/images/value.pngbin599 -> 0 bytes
-rw-r--r--src/shared/proparser/proiteminfo.xml109
-rw-r--r--src/shared/proparser/proparser.qrc10
m---------src/shared/qbs0
-rw-r--r--src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp2
-rw-r--r--src/tools/icons/qtcreatoricons.svg21
-rw-r--r--src/tools/iostool/iosdevicemanager.cpp436
-rw-r--r--tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp29
-rw-r--r--tests/system/suite_debugger/tst_simple_debug/test.py3
-rw-r--r--tests/system/suite_general/tst_default_settings/test.py4
-rw-r--r--tests/system/suite_general/tst_default_settings/testdata/win_compiler_paths.tsv50
-rw-r--r--tests/unit/echoserver/echoserver.pro2
-rw-r--r--tests/unit/unittest/gmock_dependency.pri2
-rw-r--r--tests/unit/unittest/unittest.pro2
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
index 14ddf2a0289..f465822ed08 100644
--- a/doc/examples/transitions/qt-logo.png
+++ b/doc/examples/transitions/qt-logo.png
Binary files differ
diff --git a/doc/images/qmldesigner-bindings.png b/doc/images/qmldesigner-bindings.png
index ad29109beea..723fe3ea119 100644
--- a/doc/images/qmldesigner-bindings.png
+++ b/doc/images/qmldesigner-bindings.png
Binary files differ
diff --git a/doc/images/qmldesigner-connections.png b/doc/images/qmldesigner-connections.png
index 356fa0f0d10..6548e88e904 100644
--- a/doc/images/qmldesigner-connections.png
+++ b/doc/images/qmldesigner-connections.png
Binary files differ
diff --git a/doc/images/qmldesigner-dynamicprops.png b/doc/images/qmldesigner-dynamicprops.png
index 7807918131b..04949ac6814 100644
--- a/doc/images/qmldesigner-dynamicprops.png
+++ b/doc/images/qmldesigner-dynamicprops.png
Binary files differ
diff --git a/doc/images/qmldesigner-element-properties.png b/doc/images/qmldesigner-element-properties.png
index e1680dfaefa..76b4ca25ce5 100644
--- a/doc/images/qmldesigner-element-properties.png
+++ b/doc/images/qmldesigner-element-properties.png
Binary files differ
diff --git a/doc/images/qmldesigner-element-size.png b/doc/images/qmldesigner-element-size.png
index 63bdb533fd8..47c555642f1 100644
--- a/doc/images/qmldesigner-element-size.png
+++ b/doc/images/qmldesigner-element-size.png
Binary files differ
diff --git a/doc/images/qmldesigner-export-item.png b/doc/images/qmldesigner-export-item.png
index 83ba7b1afca..4dd43614906 100644
--- a/doc/images/qmldesigner-export-item.png
+++ b/doc/images/qmldesigner-export-item.png
Binary files differ
diff --git a/doc/images/qmldesigner-navigator-arrows.png b/doc/images/qmldesigner-navigator-arrows.png
index 9f8f0eb950b..06d884b5c51 100644
--- a/doc/images/qmldesigner-navigator-arrows.png
+++ b/doc/images/qmldesigner-navigator-arrows.png
Binary files differ
diff --git a/doc/images/qmldesigner-navigator.png b/doc/images/qmldesigner-navigator.png
index e58152bbb68..fc168249f8f 100644
--- a/doc/images/qmldesigner-navigator.png
+++ b/doc/images/qmldesigner-navigator.png
Binary files differ
diff --git a/doc/images/qmldesigner-new-project.png b/doc/images/qmldesigner-new-project.png
index 1619fd18b3b..3d8e5265f03 100644
--- a/doc/images/qmldesigner-new-project.png
+++ b/doc/images/qmldesigner-new-project.png
Binary files differ
diff --git a/doc/images/qmldesigner-preview-size.png b/doc/images/qmldesigner-preview-size.png
index 9f67cc50035..63003fa46f9 100644
--- a/doc/images/qmldesigner-preview-size.png
+++ b/doc/images/qmldesigner-preview-size.png
Binary files differ
diff --git a/doc/images/qmldesigner-properties-explicit-base.png b/doc/images/qmldesigner-properties-explicit-base.png
index c3e10adcef7..e8f845dd222 100644
--- a/doc/images/qmldesigner-properties-explicit-base.png
+++ b/doc/images/qmldesigner-properties-explicit-base.png
Binary files differ
diff --git a/doc/images/qmldesigner-properties-explicit-state1.png b/doc/images/qmldesigner-properties-explicit-state1.png
index c33ff6c140e..152c94297f3 100644
--- a/doc/images/qmldesigner-properties-explicit-state1.png
+++ b/doc/images/qmldesigner-properties-explicit-state1.png
Binary files differ
diff --git a/doc/images/qmldesigner-qml-components.png b/doc/images/qmldesigner-qml-components.png
index 593c81a8eee..e4653da5409 100644
--- a/doc/images/qmldesigner-qml-components.png
+++ b/doc/images/qmldesigner-qml-components.png
Binary files differ
diff --git a/doc/images/qmldesigner-screen-design.png b/doc/images/qmldesigner-screen-design.png
index a5aa8a54151..4cecbbb390e 100644
--- a/doc/images/qmldesigner-screen-design.png
+++ b/doc/images/qmldesigner-screen-design.png
Binary files differ
diff --git a/doc/images/qmldesigner-states.png b/doc/images/qmldesigner-states.png
index f768bdddc9a..460c810e211 100644
--- a/doc/images/qmldesigner-states.png
+++ b/doc/images/qmldesigner-states.png
Binary files differ
diff --git a/doc/images/qmldesigner-transitions.png b/doc/images/qmldesigner-transitions.png
index 1fee9d18275..66624e93d26 100644
--- a/doc/images/qmldesigner-transitions.png
+++ b/doc/images/qmldesigner-transitions.png
Binary files differ
diff --git a/doc/images/qmldesigner-tutorial-quick-toolbar.png b/doc/images/qmldesigner-tutorial-quick-toolbar.png
index 48ffc07c352..51c3616eaa5 100644
--- a/doc/images/qmldesigner-tutorial-quick-toolbar.png
+++ b/doc/images/qmldesigner-tutorial-quick-toolbar.png
Binary files differ
diff --git a/doc/images/qmldesigner-tutorial-topleftrect.png b/doc/images/qmldesigner-tutorial-topleftrect.png
index 3cc9d64c8e6..b4e0d22f05e 100644
--- a/doc/images/qmldesigner-tutorial-topleftrect.png
+++ b/doc/images/qmldesigner-tutorial-topleftrect.png
Binary files differ
diff --git a/doc/images/qmldesigner-tutorial-ui-ready.png b/doc/images/qmldesigner-tutorial-ui-ready.png
new file mode 100644
index 00000000000..3a3b3110811
--- /dev/null
+++ b/doc/images/qmldesigner-tutorial-ui-ready.png
Binary files differ
diff --git a/doc/images/qmldesigner-tutorial-user-icon.png b/doc/images/qmldesigner-tutorial-user-icon.png
index 2e3f84ee0c1..ee3a14485e0 100644
--- a/doc/images/qmldesigner-tutorial-user-icon.png
+++ b/doc/images/qmldesigner-tutorial-user-icon.png
Binary files differ
diff --git a/doc/images/qmldesigner-tutorial.png b/doc/images/qmldesigner-tutorial.png
index a70f2860b6e..3cf47bc2fef 100644
--- a/doc/images/qmldesigner-tutorial.png
+++ b/doc/images/qmldesigner-tutorial.png
Binary files differ
diff --git a/doc/images/qmldesigner-uiforms-example-main-view.png b/doc/images/qmldesigner-uiforms-example-main-view.png
index 099611c10fe..9fc098b9feb 100644
--- a/doc/images/qmldesigner-uiforms-example-main-view.png
+++ b/doc/images/qmldesigner-uiforms-example-main-view.png
Binary files differ
diff --git a/doc/images/qmldesigner-visual-editor.png b/doc/images/qmldesigner-visual-editor.png
index f40fd880f94..7831f615b84 100644
--- a/doc/images/qmldesigner-visual-editor.png
+++ b/doc/images/qmldesigner-visual-editor.png
Binary files differ
diff --git a/doc/images/qtcreator-locator-customize.png b/doc/images/qtcreator-locator-customize.png
index 01aaab0a767..c9899959df2 100644
--- a/doc/images/qtcreator-locator-customize.png
+++ b/doc/images/qtcreator-locator-customize.png
Binary files differ
diff --git a/doc/images/qtcreator-modeleditor-classes.png b/doc/images/qtcreator-modeleditor-classes.png
index f85430190f5..182a1596e88 100644
--- a/doc/images/qtcreator-modeleditor-classes.png
+++ b/doc/images/qtcreator-modeleditor-classes.png
Binary files differ
diff --git a/doc/images/qtcreator-modeleditor-packages.png b/doc/images/qtcreator-modeleditor-packages.png
index 67170bc53fa..50ba8f86d6c 100644
--- a/doc/images/qtcreator-modeleditor-packages.png
+++ b/doc/images/qtcreator-modeleditor-packages.png
Binary files differ
diff --git a/doc/images/qtcreator-modeleditor.png b/doc/images/qtcreator-modeleditor.png
index de936c26e8d..52a404f59db 100644
--- a/doc/images/qtcreator-modeleditor.png
+++ b/doc/images/qtcreator-modeleditor.png
Binary files differ
diff --git a/doc/images/qtcreator-project-options-deploy.png b/doc/images/qtcreator-project-options-deploy.png
index d4c0f8cad2f..d921afe180e 100644
--- a/doc/images/qtcreator-project-options-deploy.png
+++ b/doc/images/qtcreator-project-options-deploy.png
Binary files differ
diff --git a/doc/images/qtcreator-refactoring-find.png b/doc/images/qtcreator-refactoring-find.png
index 288b51a0304..d2524de7ec1 100644
--- a/doc/images/qtcreator-refactoring-find.png
+++ b/doc/images/qtcreator-refactoring-find.png
Binary files differ
diff --git a/doc/images/qtcreator-refactoring-replace.png b/doc/images/qtcreator-refactoring-replace.png
index 8cf98e94d19..4c62c5f0656 100644
--- a/doc/images/qtcreator-refactoring-replace.png
+++ b/doc/images/qtcreator-refactoring-replace.png
Binary files differ
diff --git a/doc/images/qtcreator-refactoring-virtual-function-dialog.png b/doc/images/qtcreator-refactoring-virtual-function-dialog.png
index b761f33db10..6fd776c9cdb 100644
--- a/doc/images/qtcreator-refactoring-virtual-function-dialog.png
+++ b/doc/images/qtcreator-refactoring-virtual-function-dialog.png
Binary files differ
diff --git a/doc/images/qtcreator-search-allprojects.png b/doc/images/qtcreator-search-allprojects.png
index 8cecbf686ee..f78038af4bb 100644
--- a/doc/images/qtcreator-search-allprojects.png
+++ b/doc/images/qtcreator-search-allprojects.png
Binary files differ
diff --git a/doc/images/qtcreator-search-cpp-symbols.png b/doc/images/qtcreator-search-cpp-symbols.png
index 706ec20ade8..9f34e8f621c 100644
--- a/doc/images/qtcreator-search-cpp-symbols.png
+++ b/doc/images/qtcreator-search-cpp-symbols.png
Binary files differ
diff --git a/doc/images/qtcreator-searchresults.png b/doc/images/qtcreator-searchresults.png
index 0b9c06cae8f..02835cbb4b4 100644
--- a/doc/images/qtcreator-searchresults.png
+++ b/doc/images/qtcreator-searchresults.png
Binary files differ
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 &quot;%1&quot; 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>&quot;%1&quot; died.</source>
- <translation>«%1» завершился крахом.</translation>
+ <translation>«%1» аварийно завершился.</translation>
</message>
<message>
<source>Unable to start &quot;%1&quot;.</source>
@@ -3633,8 +3633,8 @@ For example, &quot;Revision: 15&quot; 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, &quot;Revision: 15&quot; 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, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
<name>ClangStaticAnalyzer</name>
<message>
<source>The chosen file &quot;%1&quot; 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>Недавние фа&amp;йлы</translation>
</message>
<message>
- <source>&amp;Save</source>
- <translation>&amp;Сохранить</translation>
- </message>
- <message>
<source>Save</source>
<translation>Сохранить</translation>
</message>
<message>
- <source>Save &amp;As...</source>
- <translation>Сохранить &amp;как...</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>&quot;%1&quot; crashed.</source>
- <translation>«%1» завершился аварийно.</translation>
+ <translation>«%1» аварийно завершился.</translation>
</message>
<message>
<source>&quot;%1&quot; 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&apos;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 &quot;%1&quot; crashed.</source>
- <translation>Процесс «%1» завершился крахом.</translation>
+ <translation>Процесс «%1» завершился аварийно.</translation>
</message>
<message>
<source>Could not start process &quot;%1&quot; %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&apos;s name.</source>
+ <translation>Имя текущей активной конфигурации запуска.</translation>
+ </message>
+ <message>
<source>Cancel Build &amp;&amp; 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: &quot;%1&quot;</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&apos;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
index 7b2e5fd0cef..05f4eec5413 100644
--- a/src/plugins/bookmarks/images/bookmark.png
+++ b/src/plugins/bookmarks/images/bookmark.png
Binary files differ
diff --git a/src/plugins/bookmarks/images/bookmark@2x.png b/src/plugins/bookmarks/images/bookmark@2x.png
new file mode 100644
index 00000000000..903acddbd8a
--- /dev/null
+++ b/src/plugins/bookmarks/images/bookmark@2x.png
Binary files differ
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
deleted file mode 100644
index 5ae826e56c3..00000000000
--- a/src/shared/proparser/images/append.png
+++ /dev/null
Binary files differ
diff --git a/src/shared/proparser/images/other.png b/src/shared/proparser/images/other.png
deleted file mode 100644
index 044ce1ebb88..00000000000
--- a/src/shared/proparser/images/other.png
+++ /dev/null
Binary files differ
diff --git a/src/shared/proparser/images/profile.png b/src/shared/proparser/images/profile.png
deleted file mode 100644
index 4a24ce3c2f4..00000000000
--- a/src/shared/proparser/images/profile.png
+++ /dev/null
Binary files differ
diff --git a/src/shared/proparser/images/remove.png b/src/shared/proparser/images/remove.png
deleted file mode 100644
index 039f05a0057..00000000000
--- a/src/shared/proparser/images/remove.png
+++ /dev/null
Binary files differ
diff --git a/src/shared/proparser/images/scope.png b/src/shared/proparser/images/scope.png
deleted file mode 100644
index eefcb599545..00000000000
--- a/src/shared/proparser/images/scope.png
+++ /dev/null
Binary files differ
diff --git a/src/shared/proparser/images/set.png b/src/shared/proparser/images/set.png
deleted file mode 100644
index 69a8fe0523e..00000000000
--- a/src/shared/proparser/images/set.png
+++ /dev/null
Binary files differ
diff --git a/src/shared/proparser/images/value.png b/src/shared/proparser/images/value.png
deleted file mode 100644
index 433cd527f48..00000000000
--- a/src/shared/proparser/images/value.png
+++ /dev/null
Binary files differ
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