Merge remote-tracking branch 'origin/4.9'

Conflicts:
	src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp

Change-Id: I170de608eaae795133105dedb76ae6f93f6e0d92
This commit is contained in:
Eike Ziller
2019-03-25 11:55:48 +01:00
21 changed files with 121 additions and 68 deletions

17
dist/changes-4.9.0.md vendored
View File

@@ -20,7 +20,8 @@ Editing
* Language Client
* Added support for document outline (QTCREATORBUG-21573)
* Added support for `Find Usages` (QTCREATORBUG-21577)
* Added support for `Find References to Symbol Under Cursor`
(QTCREATORBUG-21577)
* Added support for code actions
* Highlighter
* Replaced custom highlighting file parser with `KSyntaxHighlighting`
@@ -75,6 +76,11 @@ Generic Projects
files (QTCREATORBUG-19668)
* Fixed `Apply Filter` when editing file list (QTCREATORBUG-16237)
Compilation Database Projects
* Fixed that project tree was not updated when database changes on disk
(QTCREATORBUG-21733)
C++ Support
* Added code snippet for range-based `for` loops
@@ -85,8 +91,11 @@ C++ Support
* Fixed issue with high memory consumption (QTCREATORBUG-19543)
* Fixed inconsistency between `Follow Symbol` and `Ctrl + Click`
(QTCREATORBUG-21637)
* Fixed that global completion was shown after comma (QTCREATORBUG-21624)
* Clang Format
* Added option to format code instead of only indenting code
* Added `Open Used .clang-format Configuration File` to editor's
context menu
QML Support
@@ -108,6 +117,8 @@ Debugging
* Fixed that debugger toolbar could force large minimum window size
(QTCREATORBUG-21885)
* Added pretty printing of `QSizePolicy`
* Fixed pretty printing of standard maps and sets from `libc++`
(QTCREATORBUG-18536)
* GDB
* Added support for rvalue references in function arguments
* LLDB
@@ -130,6 +141,7 @@ Perf Profiler
Qt Quick Designer
* Made QML Live Preview integration opensource
* Added support for `Dialog` (QTCREATORBUG-22120)
Version Control Systems
@@ -178,6 +190,8 @@ Windows
* Changed toolchain detection to use `vswhere` by default, which is recommended
by Microsoft
* Fixed issue with UNC paths in `.pro` files (QTCREATORBUG-21881)
* Fixed language version detections with MSVC and precompiled headers
(QTCREATORBUG-21860)
Linux
@@ -189,6 +203,7 @@ Android
* Removed separate `QmakeAndroidSupport` plugin and merged functionality into
other plugins
* Fixed debugging for API level 22 (QTCREATORBUG-22098)
Remote Linux

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -53,7 +53,7 @@
\image qtcreator-setting-breakpoint1.png
\li Select \uicontrol Debug > \uicontrol {Start Debugging} >
\uicontrol {Start Debugging} or press \key F5.
\uicontrol {Start Debugging of Startup Project} or press \key F5.
\li To view information about the breakpoint, go to the
\uicontrol Breakpoints view.

View File

@@ -54,10 +54,10 @@
\li \l{Launching the Debugger}
To start an application from an open project under the control
of a debugger, press the Debug button in the lower left corner
of the main view, or press \key F5. Other, less common start
options are available in the \uicontrol Debug >
\uicontrol {Start Debugging} menu.
of a debugger, select the \inlineimage qtcreator-debug-button.png
(\uicontrol {Start Debugging of Startup Project}) button or press
\key F5. Other, less common start options are available in the
\uicontrol Debug > \uicontrol {Start Debugging} menu.
\li \l{Interacting with the Debugger}
@@ -106,13 +106,15 @@
\title Launching the Debugger
To start an application from an open project under the control of a
debugger, press the \uicontrol Debug button in the lower left corner
of the main view, or press \key F5.
debugger, select the \inlineimage qtcreator-debug-button.png
(\uicontrol {Start Debugging of Startup Project}) button or press \key F5.
\QC checks whether the compiled program is up-to-date, and rebuilds and
deploys it if the \uicontrol {Always build project before deploying it} and
\uicontrol {Always deploy before running} options are selected in the
\uicontrol {Build and Run} options.
\uicontrol {Build and Run} options. To debug the program without deploying
it, select \uicontrol Debug > \uicontrol {Start Debugging} >
\uicontrol {Start Debugging Without Deployment}.
The debugger then takes over and starts the program with suitable
parameters.
@@ -127,7 +129,8 @@
depending on where and how the debugged process is started and run. Some of
the modes are only available for a particular operating system or platform.
In general, the \key F5 and the \uicontrol Debug button are set up in a
In general, \key F5 and the \uicontrol {Start Debugging of Startup Project}
button are set up in a
way to start the operating mode that is commonly used in a given context. So
if the current project is set up as a C++ application using the MinGW
toolchain targeting desktop Windows, the GDB engine will be started in Start
@@ -137,7 +140,7 @@
Change the run configuration parameters (such as
\uicontrol {Run in Terminal}) in the run settings of the project, or select
options from the \uicontrol Debug > \uicontrol {Start Debugging} menu to
options from the \uicontrol Debug > \uicontrol {Start Debugging} menu to
select other modes of operation.
The debugger can run in the following modes:

View File

@@ -65,7 +65,8 @@
The red circle indicates that a breakpoint is now set on that line
number.
\li Select \uicontrol {Debug > Start Debugging > Start Debugging} or press
\li Select \uicontrol Debug > \uicontrol {Start Debugging} >
\uicontrol {Start Debugging of Startup Project} or press
\key{F5}.
\li Once the Same Game application starts, select \uicontrol {Puzzle}
@@ -97,7 +98,7 @@
\image qtquick-example-setting-breakpoint3.png
\li To execute JavaScript commands in the current context, open the
\uicontrol {Debugger Console} output pane.
\uicontrol {QML Debugger Console} output pane.
\image qml-script-console.png

View File

@@ -101,9 +101,10 @@
\section1 Starting QML Debugging
To start the application, choose \uicontrol {Debug > Start Debugging >
Start Debugging} or press \key F5. Once the application starts running, it
behaves and performs as usual. You can then perform the following tasks:
To start the application, choose \uicontrol Debug > \uicontrol {Start Debugging}
> \uicontrol {Start Debugging of Startup Project} or press \key F5. Once the
application starts running, it behaves and performs as usual. You can then
perform the following tasks:
\list
@@ -227,11 +228,11 @@
\section1 Executing JavaScript Expressions
When the application is interrupted by a breakpoint, you can use the
\uicontrol {Debugger Console} to execute JavaScript expressions in the
\uicontrol {QML Debugger Console} to execute JavaScript expressions in the
current context. To open it, choose \uicontrol Window >
\uicontrol {Output Panes} > \uicontrol {Debugger Console}.
\uicontrol {Output Panes} > \uicontrol {QML Debugger Console}.
\image qml-script-console.png "Debugger Console"
\image qml-script-console.png "QML Debugger Console"
You can change property values temporarily, without editing the source, and
view the results in the running application. You can change the property
@@ -239,7 +240,7 @@
\section1 Applying QML Changes at Runtime
When you change property values in the \uicontrol {Debugger Console} or in
the \uicontrol Locals or \uicontrol Expression view, they are immediately
When you change property values in the \uicontrol {QML Debugger Console} or
in the \uicontrol Locals or \uicontrol Expression view, they are immediately
updated in the running application, but not in the source code.
*/

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
@@ -41,27 +41,38 @@
\list
\li Syntax errors are underlined in red.
In the following figure, a semicolon is missing at the end of the
line.
In the following screenshot, a semicolon is missing at the end
of the line.
\image qtcreator-syntaxerror.png
\li Semantic errors and warnings are underlined in olive.
In the following figure, the variable is not used.
In the following screenshot, the variable is not used.
\image qtcreator-semanticerror.png
\endlist
\section1 Viewing Annotations
When using the Clang code model, errors and warnings are additionally marked
with icons and annotated. If a \l{http://clang.llvm.org/diagnostics.html}
{Clang fix-it} is available, you can execute it by clicking the
\inlineimage refactormarker.png
icon and pressing \key Enter.
In the following figure, a semicolon is missing at the end of the
In the following screenshot, a Qt class name contains a typo:
\image qtcreator-typo-clang.png
You can use the icons in the tooltip popup to copy the error or
warning message to the clipboard or to ignore and hide it. Select
the \uicontrol {Annotation Settings} link to specify the position
of the line annotations.
In the following screenshot, a semicolon is missing at the end of the
line.
\image qtcreator-syntaxerror-clang.png
In the following figure, the variable is not used.
In the following screenshot, the variable is not used.
\image qtcreator-semanticerror-clang.png
@@ -74,6 +85,8 @@
\image qml-syntax-check.png
\section2 Specifying Line Annotation Positions
To specify the position where the annotations are displayed, select
\uicontrol Tools > \uicontrol Options > \uicontrol {Text Editor} >
\uicontrol Display > \uicontrol {Line annotations}, and then select

View File

@@ -52,7 +52,8 @@
{following symbols}, and so on
\li Inspecting code by using the \l{Browsing Project Contents}
{class browser}, the \l{Viewing QML Types}{outline}, and so on
{class browser}, the \l{Viewing Defined Types and Symbols}
{outline}, and so on
\li Diagnostics

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
@@ -34,9 +34,19 @@
For several programming languages, a \e {language server} is available
that provides information about the code to IDEs as long as they support
communication via the language server protocol (LSP). This enables the
IDE to provide code completion, highlighting of the symbol under cursor,
and jumping to the symbol definition, as well as to integrate diagnostics
from the language server.
IDE to provide the following services:
\list
\li \l{Completing Code}{Code completion}
\li Highlighting the symbol under cursor
\li \l{Moving to Symbol Definition or Declaration}
{Moving to the symbol definition}
\li Inspecting code by viewing the document
\l{Viewing Defined Types and Symbols}{outline}
\li \l{Finding Symbols}{Finding references to symbols}
\li Code actions
\li Integrating diagnostics from the language server
\endlist
By providing a client for the language server protocol, \QC can support
the above features for several other programming languages besides C++.

View File

@@ -137,7 +137,7 @@
\li \uicontrol{Compile Output}
\li \uicontrol {Debugger Console}
\li \uicontrol {QML Debugger Console}
\li \uicontrol {To-Do Entries}
@@ -164,7 +164,7 @@
\uicontrol {Window > Output Panes}. To display the \uicontrol {To-Do Entries} pane,
enable the Todo plugin.
For more information about the \uicontrol {Debugger Console} view, see
For more information about the \uicontrol {QML Debugger Console} view, see
\l{Executing JavaScript Expressions}.
\section2 Issues

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
@@ -268,14 +268,15 @@
//! [outline view]
\section2 Viewing QML Types
\section2 Viewing Defined Types and Symbols
The \uicontrol Outline view shows the type hierarchy in a QML file.
The \uicontrol Outline view shows an overview of defined types and other
symbols, as well as their properties and hierarchy in a source file.
\list
\li To see a complete list of all bindings, select
\uicontrol {Filter Tree} > \uicontrol {Show All Bindings}.
\li To stop the synchronization with the QML type selected in the
\li To stop the synchronization with the type or symbol selected in the
editor, deselect \uicontrol {Synchronize with Editor}.
\endlist

View File

@@ -99,14 +99,14 @@ static bool isTimedOut(const chrono::high_resolution_clock::time_point &start,
return timedOut;
}
static qint64 extractPID(const QString &output, const QString &packageName)
static qint64 extractPID(const QByteArray &output, const QString &packageName)
{
qint64 pid = -1;
foreach (auto tuple, output.split('\n')) {
tuple = tuple.simplified();
if (!tuple.isEmpty()) {
auto parts = tuple.split(':');
QString commandName = parts.first();
QString commandName = QString::fromLocal8Bit(parts.first());
if (parts.length() == 2 && commandName == packageName) {
pid = parts.last().toLongLong();
break;
@@ -125,18 +125,17 @@ static void findProcessPID(QFutureInterface<qint64> &fi, QStringList selector,
qint64 processPID = -1;
chrono::high_resolution_clock::time_point start = chrono::high_resolution_clock::now();
selector.append("shell");
selector.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName));
do {
QThread::msleep(200);
SdkToolResult result = AndroidManager::runAdbCommand(selector);
QString adbPath = AndroidConfigurations::currentConfig().adbToolPath().toString();
selector.append("shell");
selector.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName));
const auto out = Utils::SynchronousProcess().runBlocking(adbPath, selector).allRawOutput();
if (preNougat) {
processPID = extractPID(result.stdOut(), packageName);
processPID = extractPID(out, packageName);
} else {
if (!result.stdOut().isEmpty())
processPID = result.stdOut().trimmed().toLongLong();
if (!out.isEmpty())
processPID = out.trimmed().toLongLong();
}
} while (processPID == -1 && !isTimedOut(start) && !fi.isCanceled());
@@ -325,11 +324,8 @@ void AndroidRunnerWorker::forceStop()
runAdb({"shell", "am", "force-stop", m_packageName});
// try killing it via kill -9
QString out;
runAdb({"shell", pidScriptPreNougat}, &out);
qint64 pid = extractPID(out.simplified(), m_packageName);
if (pid != -1)
adbKill(pid);
if (m_processPID != -1)
adbKill(m_processPID);
}
void AndroidRunnerWorker::logcatReadStandardError()

View File

@@ -272,8 +272,6 @@ void EditorToolBar::addEditor(IEditor *editor)
if (toolBar && !d->m_isStandalone)
addCenterToolBar(toolBar);
updateDocumentStatus(editor->document());
}
void EditorToolBar::addCenterToolBar(QWidget *toolBar)
@@ -408,10 +406,6 @@ void EditorToolBar::updateDocumentStatus(IDocument *document)
return;
}
const Utils::optional<int> index = DocumentModel::rowOfDocument(document);
if (QTC_GUARD(index))
d->m_editorList->setCurrentIndex(*index);
if (document->filePath().isEmpty()) {
d->m_lockButton->setIcon(QIcon());
d->m_lockButton->setEnabled(false);

View File

@@ -73,6 +73,7 @@ class StartApplicationDialogPrivate
public:
KitChooser *kitChooser;
QLabel *serverPortLabel;
QLabel *channelOverrideHintLabel;
QLabel *channelOverrideLabel;
QLineEdit *channelOverrideEdit;
QSpinBox *serverPortSpinBox;
@@ -237,6 +238,12 @@ StartApplicationDialog::StartApplicationDialog(QWidget *parent)
d->serverPortSpinBox = new QSpinBox(this);
d->serverPortSpinBox->setRange(1, 65535);
d->channelOverrideHintLabel =
new QLabel(tr("Normally, the running server is identified by the IP of the "
"device in the kit and the server port selected above.\n"
"You can choose another communication channel here, such as "
"a serial line or custom ip:port."));
d->channelOverrideLabel = new QLabel(tr("Override server channel:"), this);
d->channelOverrideEdit = new QLineEdit(this);
//: "For example, /dev/ttyS0, COM1, 127.0.0.1:1234"
@@ -304,10 +311,7 @@ StartApplicationDialog::StartApplicationDialog(QWidget *parent)
formLayout->addRow(tr("Break at \"&main\":"), d->breakAtMainCheckBox);
formLayout->addRow(d->serverStartScriptLabel, d->serverStartScriptPathChooser);
formLayout->addRow(tr("Debug &information:"), d->debuginfoPathChooser);
formLayout->addRow(new QLabel(tr("Normally, the running server is identified by the IP of the "
"device in the kit and the server port selected above.\n"
"You can choose another communication channel here, such as "
"a serial line or custom ip:port.")));
formLayout->addRow(d->channelOverrideHintLabel);
formLayout->addRow(d->channelOverrideLabel, d->channelOverrideEdit);
formLayout->addRow(line2);
formLayout->addRow(tr("&Recent:"), d->historyComboBox);
@@ -396,6 +400,7 @@ void StartApplicationDialog::run(bool attachRemote)
dialog.d->serverStartScriptLabel->setVisible(false);
dialog.d->serverPortSpinBox->setVisible(false);
dialog.d->serverPortLabel->setVisible(false);
dialog.d->channelOverrideHintLabel->setVisible(false);
dialog.d->channelOverrideLabel->setVisible(false);
dialog.d->channelOverrideEdit->setVisible(false);
}

View File

@@ -160,6 +160,10 @@ void PerfConfigWidget::setTarget(ProjectExplorer::Target *target)
QTC_CHECK(!m_process || m_process->state() == QProcess::NotRunning);
m_process.reset(device->createProcess(nullptr));
if (!m_process) {
m_ui->useTracePointsButton->setEnabled(false);
return;
}
connect(m_process.get(), &ProjectExplorer::DeviceProcess::finished,
this, &PerfConfigWidget::handleProcessFinished);

View File

@@ -38,6 +38,8 @@
#include <utils/qtcassert.h>
#include <QTimer>
GradientModel::GradientModel(QObject *parent) :
QAbstractListModel(parent)
{
@@ -150,6 +152,9 @@ void GradientModel::addGradient()
if (!color.isValid())
color = QColor(Qt::white);
if (m_gradientTypeName != "Gradient")
ensureShapesImport();
QmlDesigner::RewriterTransaction transaction = view()->beginRewriterTransaction(QByteArrayLiteral("GradientModel::addGradient"));
QmlDesigner::ModelNode gradientNode = createGradientNode();
@@ -173,6 +178,8 @@ void GradientModel::addGradient()
}
setupModel();
if (m_gradientTypeName != "Gradient")
QTimer::singleShot(100, [this](){ view()->resetPuppet(); }); /*Unfortunately required */
emit hasGradientChanged();
emit gradientTypeChanged();
}
@@ -321,7 +328,7 @@ void GradientModel::setAnchorBackend(const QVariant &anchorBackend)
m_itemNode = backendCasted->getItemNode();
if (m_itemNode.isValid()
&& m_itemNode.modelNode().hasProperty(gradientPropertyName().toUtf8()))
&& m_itemNode.modelNode().hasNodeProperty(gradientPropertyName().toUtf8()))
m_gradientTypeName = m_itemNode.modelNode().nodeProperty(gradientPropertyName().toUtf8()).modelNode().simplifiedTypeName();
setupModel();
@@ -445,7 +452,6 @@ QmlDesigner::ModelNode GradientModel::createGradientNode()
fullTypeName.prepend("QtQuick.");
} else {
fullTypeName.prepend("QtQuick.Shapes.");
ensureShapesImport();
}
auto metaInfo = model()->metaInfo(fullTypeName);

View File

@@ -85,7 +85,7 @@ static TypeName resolveTypeName(const ASTPropertyReference *ref, const ContextPt
{
TypeName type = "unknown";
if (ref->ast()->defaultToken.isValid()) {
if (ref->ast()->propertyToken.isValid()) {
type = ref->ast()->memberType->name.toUtf8();
if (type == "alias") {

View File

@@ -60,7 +60,7 @@ QStringList filterExistingFiles(QStringList &&filePaths)
filePaths.erase(startOfNonExistingFilePaths, filePaths.end());
return filePaths;
return std::move(filePaths);
}
}

View File

@@ -78,7 +78,10 @@ def menuVisibleAtEditor(editor, menuInList):
return True
return False
menu = waitForObject("{type='QMenu' unnamed='1' visible='1'}", 500)
success = menu.visible and widgetContainsPoint(editor, menu.mapToGlobal(QPoint(0, 0)))
topLeft = menu.mapToGlobal(QPoint(0, 0))
bottomLeft = menu.mapToGlobal(QPoint(0, menu.height))
success = menu.visible and (widgetContainsPoint(editor, topLeft)
or widgetContainsPoint(editor, bottomLeft))
if success:
menuInList[0] = menu
return success