Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
e487b3bd
Commit
e487b3bd
authored
Nov 30, 2016
by
Eike Ziller
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/4.2'
Change-Id: I575f1cf98f2a4740577cdd94da21687d3392cdb7
parents
a00ee753
ac2ceb36
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
174 additions
and
134 deletions
+174
-134
README.md
README.md
+69
-36
dist/changes-4.2.0.md
dist/changes-4.2.0.md
+6
-2
doc/src/editors/creator-diff-editor.qdoc
doc/src/editors/creator-diff-editor.qdoc
+1
-1
doc/src/qtquick/qtquick-pathview-editor.qdoc
doc/src/qtquick/qtquick-pathview-editor.qdoc
+6
-5
doc/src/qtquick/qtquick-screens.qdoc
doc/src/qtquick/qtquick-screens.qdoc
+17
-15
doc/src/vcs/creator-vcs-git.qdoc
doc/src/vcs/creator-vcs-git.qdoc
+1
-1
doc/src/vcs/creator-vcs.qdoc
doc/src/vcs/creator-vcs.qdoc
+2
-2
share/qtcreator/debugger/dumper.py
share/qtcreator/debugger/dumper.py
+1
-0
share/qtcreator/debugger/stdtypes.py
share/qtcreator/debugger/stdtypes.py
+21
-28
share/qtcreator/translations/qtcreator_de.ts
share/qtcreator/translations/qtcreator_de.ts
+1
-1
src/libs/qmljs/qmljsreformatter.cpp
src/libs/qmljs/qmljsreformatter.cpp
+9
-0
src/libs/ssh/sshkeygenerator.cpp
src/libs/ssh/sshkeygenerator.cpp
+1
-1
src/plugins/android/androidrunner.cpp
src/plugins/android/androidrunner.cpp
+2
-1
src/plugins/cppeditor/cppeditor.cpp
src/plugins/cppeditor/cppeditor.cpp
+1
-1
src/plugins/debugger/cdb/cdbengine.cpp
src/plugins/debugger/cdb/cdbengine.cpp
+3
-6
src/plugins/debugger/debuggerstartparameters.h
src/plugins/debugger/debuggerstartparameters.h
+1
-0
src/plugins/debugger/gdb/gdbengine.cpp
src/plugins/debugger/gdb/gdbengine.cpp
+3
-1
src/plugins/debugger/gdb/remotegdbserveradapter.cpp
src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+2
-2
src/plugins/debugger/watchhandler.cpp
src/plugins/debugger/watchhandler.cpp
+10
-24
src/plugins/debugger/watchhandler.h
src/plugins/debugger/watchhandler.h
+1
-1
src/plugins/diffeditor/diffutils.cpp
src/plugins/diffeditor/diffutils.cpp
+1
-1
src/plugins/git/gitclient.cpp
src/plugins/git/gitclient.cpp
+2
-2
src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
+1
-1
tests/auto/debugger/tst_dumpers.cpp
tests/auto/debugger/tst_dumpers.cpp
+12
-2
No files found.
README.md
View file @
e487b3bd
...
...
@@ -6,9 +6,9 @@ Qt Creator is a cross-platform IDE for development with the Qt framework.
The standalone binary packages support the following platforms:
Windows 7 or later
(K)Ubuntu Linux 14.04 (64-bit) or later
macOS 10.8 or later
*
Windows 7 or later
*
(K)Ubuntu Linux 14.04 (64-bit) or later
*
macOS 10.8 or later
## Compiling Qt Creator
...
...
@@ -20,12 +20,11 @@ Prerequisites:
*
ActiveState Active Perl
*
MinGW with g++ 4.8 or Visual Studio 2015 or later
*
jom
The optional Clang code model requires LLVM. A manual build of it requires in addition:
*
cmake
*
On Mac OS X: latest Xcode
*
On Linux: g++ 4.8 or later
*
LLVM 3.9.0 or later (optional, needed for the Clang Code Model)
*
LLVM/Clang 3.9.0 or later (optional, needed for the Clang Code Model, see the
section "Get LLVM/Clang for the Clang Code Model")
*
CMake (only for manual builds of LLVM/Clang)
*
Qbs 1.7.x (optional, sources also contain Qbs itself)
The installed toolchains have to match the one Qt was compiled with.
...
...
@@ -58,7 +57,7 @@ For detailed information on the supported compilers, see
plan to contribute to Qt Creator, you should compile your changes with
both compilers.
2.
Install
msysGit from
<https://msysgit
.github.io/>
. If you plan to
2.
Install
Git for Windows from
<https://git-for-windows
.github.io/>
. If you plan to
use the MinGW compiler suite, do not choose to put git in the
default path of Windows command prompts. For more information, see
step 9.
...
...
@@ -125,34 +124,16 @@ For detailed information on the supported compilers, see
command...` error. If a `sh.exe` is found, the compile process will fail.
You have to remove it from the path.
10.
As of Qt Creator 4.2, a complete build of LLVM and Clang is required
to enable the Clang-based code model (recommmended: 3.9). For 32bit,
a pre-built package can be downloaded from:
https://download.qt.io/development_releases/prebuilt/libclang/.
The environment variable LLVM_INSTALL_DIR needs to be set to point to the
installation location.
It is also possible to build Clang manually, roughly following the
instructions at http://llvm.org/docs/GettingStarted.html#git-mirror .
*
Clone LLVM
git clone http://llvm.org/git/llvm.git
*
Switch to a suitable branch, for example, release_39
cd llvm
git checkout -b release_39
*
Clone Clang under llvm
\t
ools
cd tools
git clone http://llvm.org/git/clang.git
*
Switch Clang to a suitable branch
cd clang
git checkout -b release_39
*
Create a shadow build directory and build
cd ..
\.
.
\.
.
mkdir build
cd build
cmake -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=
<installation
location
>
-DLLVM_ENABLE_RTTI=ON ..
\l
lvm
jom install
11.
You are now ready to configure and build Qt and Qt Creator.
10.
To make use of the Clang Code Model:
* Install LLVM/Clang - see the section "Get LLVM/Clang for the Clang
Code Model".
* Set the environment variable LLVM_INSTALL_DIR to the LLVM/Clang
installation directory.
* When you launch Qt Creator, activate the Clang Code Model plugin as
described in doc/src/editors/creator-clang-codemodel.qdoc.
11.
You are now ready to configure and build Qt and Qt Creator.
Please see
<https://wiki.qt.io/Building_Qt_5_from_Git>
for
recommended configure-options for Qt 5.
To use MinGW, open the the shell prompt and enter:
...
...
@@ -219,6 +200,58 @@ separate build of it. We recommend using a separate, release-built version
of Qt and Qt Creator to work on a debug-built version of Qt and Qt Creator
or using shadow builds.
## Get LLVM/Clang for the Clang Code Model
The Clang Code Model depends on the LLVM/Clang libraries. The currently
supported LLVM/Clang version is 3.9.
### Prebuilt LLVM/Clang packages
Prebuilt packages of LLVM/Clang can be downloaded from
https://download.qt.io/development_releases/prebuilt/libclang/
This should be your preferred option because you will use the version that is
shipped together with Qt Creator. In addition, the packages for Windows are
faster due to profile-guided optimization. If the prebuilt packages do not
match your configuration, you need to build LLVM/Clang manually.
### Building LLVM/Clang manually
You need to install CMake in order to build LLVM/Clang.
Build LLVM/Clang by roughly following the instructions at
http://llvm.org/docs/GettingStarted.html#git-mirror:
1.
Clone LLVM and switch to a suitable branch
git clone http://llvm.org/git/llvm.git
cd llvm
git checkout release_39
2.
Clone Clang into llvm/tools/clang and switch to a suitable branch
cd tools
git clone http://llvm.org/git/clang.git
cd clang
git checkout release_39
3.
Build and install LLVM/Clang
cd ../../..
mkdir build
cd build
For Linux/macOS:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<installation location> -DLLVM_ENABLE_RTTI=ON ..\llvm
make install
For Windows:
cmake -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<installation location> -DLLVM_ENABLE_RTTI=ON ..\llvm
jom install
## Third-party Components
Qt Creator includes the following third-party components,
...
...
dist/changes-4.2.0.md
View file @
e487b3bd
...
...
@@ -80,8 +80,8 @@ C++ Support
Debugging
*
Added pretty printing of
`QRegExp`
captures,
`QStaticStringData`
,
and
`std::pair`
*
Added pretty printing of
`QRegExp`
captures,
`QStaticStringData`
,
`QStandardItem`
, and
`std::pair`
*
Improved pretty printing of QV4 types
*
Made display of maps more compact
*
Fixed pretty printing of
`QFixed`
...
...
@@ -163,6 +163,10 @@ iOS
*
Fixed that Qt Creator was blocked until simulator finished starting
Remote Linux
*
Fixed crash when creating SSH key pair (QTCREATORBUG-17349)
Credits for these changes go to:
Aaron Barany
Alessandro Portale
...
...
doc/src/editors/creator-diff-editor.qdoc
View file @
e487b3bd
...
...
@@ -37,7 +37,7 @@
\title Comparing Files
You can use a diff editor to display unsaved change
d
in the current file or
You can use a diff editor to display unsaved change
s
in the current file or
all open files or to compare any two text files that can be either versions
of the same file or arbitrary files.
...
...
doc/src/qtquick/qtquick-pathview-editor.qdoc
View file @
e487b3bd
...
...
@@ -31,14 +31,15 @@
\title Editing PathView Properties
A \l{PathView} lays out data provided by data models on a \l{Path}.
A \l{PathView}{Path View} lays out data provided by data models on a
\l{Path}.
A graphical spline editor enables you to specify
P
ath
V
iew paths, which
A graphical spline editor enables you to specify
p
ath
v
iew paths, which
is a non-trivial task to do in the code editor.
\image qmldesigner-pathview-editor.png "PathView editor"
To start editing the
P
ath, double-click the
P
ath
V
iew on the canvas. The
To start editing the
p
ath, double-click the
p
ath
v
iew on the canvas. The
editor composes the path of PathCubic path objects. They are cubic Bezier
curves to a given position with two control points. Drag and drop the
control points to construct the curve.
...
...
@@ -47,7 +48,7 @@
To make a curve segment linear, select \uicontrol {Make Curve Segment Straight} in
the context menu.
By default, the
P
ath is closed, which means that its start and end points
By default, the
p
ath is closed, which means that its start and end points
are identical. To create separate start and end points for it, right-click
an edit point to open a context menu, and deselect \uicontrol {Closed Path}.
...
...
@@ -55,7 +56,7 @@
in the context menu.
In the \uicontrol Properties pane, you can specify other properties for
the
P
ath
V
iew. For example, what is the maximum distance from the path that
the
p
ath
v
iew. For example, what is the maximum distance from the path that
initiates mouse dragging and what is the rate at which a flick will
decelerate.
...
...
doc/src/qtquick/qtquick-screens.qdoc
View file @
e487b3bd
...
...
@@ -79,18 +79,19 @@
\list
\li GridView provides a grid vizualization of a model.
\li
\l{
GridView
}{Grid View}
provides a grid vizualization of a model.
\li ListView provides a list vizualization of a model.
\li
\l{
ListView
}{List View}
provides a list vizualization of a model.
\li PathView visualizes the contents of a model along a path.
\li \l{PathView}{Path View} visualizes the contents of a model along a
path.
\endlist
When you add a GridView
, List
View,
or PathView, the ListModel and the
delegate component that creates an instance for each item in the model are
added automatically. You can edit item properties
in the \uicontrol Properties pane or
When you add a
\l{
GridView
}{Grid
View
}
,
\l{ListView}{List View}, or
\l{PathView}{Path View}, the ListModel and the delegate component that
creates an instance for each item in the model are added automatically.
You can edit item properties
in the \uicontrol Properties pane or
in the code editor. You can also replace the default model and
delegate with other, more complex models and delegates in the code editor.
...
...
@@ -231,9 +232,9 @@
\endlist
To lay out several items in a
Column, Row, Grid, or Flow, select
the items on the canvas, and then select \uicontrol Layout in the context
menu.
To lay out several items in a
\uicontrol Column, \uicontrol Row,
\uicontrol Grid, or \uicontrol Flow, select the items on the canvas, and
then select \uicontrol Layout in the context
menu.
\section2 Using Layouts
...
...
@@ -249,12 +250,13 @@
\li \l{Layout} provides attached properties for items pushed onto a
\uicontrol {Column Layout}, \uicontrol {Row Layout}, or \uicontrol {Grid Layout}.
\li ColumnLayout provides a grid layout with only one column.
\li \l{ColumnLayout}{Column Layout} provides a grid layout with only one
column.
\li RowLayout provides a grid layout with only one row.
\li
\l{
RowLayout
}{Row Layout}
provides a grid layout with only one row.
\li GridLayout provides a way of dynamically arranging
items in a
grid.
\li
\l{
GridLayout
}{Grid Layout}
provides a way of dynamically arranging
items in a
grid.
\endlist
...
...
@@ -372,7 +374,7 @@
\li \l{Flickable}
items can be flicked horizontally or vertically.
\li FocusScope
\li
\l{
FocusScope
}{Focus Scope}
assists in keyboard focus handling when building reusable QML
components.
...
...
doc/src/vcs/creator-vcs-git.qdoc
View file @
e487b3bd
...
...
@@ -43,7 +43,7 @@
You can use the \l{http://code.google.com/p/gerrit/}{Gerrit} code review
tool for projects that use Git.
\section1 Using
msys
Git
on
Windows
\section1 Using Git
for
Windows
If you configure Git for use with \c {git bash}, only, and use SSH
authorization, Git looks for the SSH keys in the directory where the
...
...
doc/src/vcs/creator-vcs.qdoc
View file @
e487b3bd
...
...
@@ -97,8 +97,8 @@
that everything works (for example, use the status command). If no issues
arise, you should be ready to use the system also from \QC.
For more information on using
msys
Git
on
Windows, see
\l {Using
msys
Git
on
Windows}.
For more information on using Git
for
Windows, see
\l {Using Git
for
Windows}.
\section1 Setting Up General Options
...
...
share/qtcreator/debugger/dumper.py
View file @
e487b3bd
...
...
@@ -1304,6 +1304,7 @@ class DumperBase:
#warn('RAW')
self
.
putType
(
typeName
)
self
.
putValue
(
'0x%x'
%
pointer
)
self
.
putNumChild
(
1
)
if
self
.
currentIName
in
self
.
expandedINames
:
with
Children
(
self
):
with
SubItem
(
self
,
'*'
):
...
...
share/qtcreator/debugger/stdtypes.py
View file @
e487b3bd
...
...
@@ -204,17 +204,16 @@ def qdump__std__list(d, value):
p
=
d
.
extractPointer
(
p
)
def
qdump__std__list__QNX
(
d
,
value
):
node
=
value
[
"_Myhead"
]
size
=
value
[
"_Mysize"
].
integer
()
(
proxy
,
head
,
size
)
=
value
.
split
(
"ppp"
)
d
.
putItemCount
(
size
,
1000
)
if
d
.
isExpanded
():
p
=
node
[
"_Next"
]
with
Children
(
d
,
size
,
maxNumChild
=
1000
,
childType
=
value
.
type
[
0
]):
p
=
d
.
extractPointer
(
head
)
innerType
=
value
.
type
[
0
]
with
Children
(
d
,
size
,
maxNumChild
=
1000
,
childType
=
innerType
):
for
i
in
d
.
childRange
():
d
.
putSubItem
(
i
,
p
[
'_Myval'
]
)
p
=
p
[
"_Next"
]
d
.
putSubItem
(
i
,
d
.
createValue
(
p
+
2
*
d
.
ptrSize
(),
innerType
)
)
p
=
d
.
extractPointer
(
p
)
def
qdump__std____debug__list
(
d
,
value
):
qdump__std__list
(
d
,
value
)
...
...
@@ -652,6 +651,13 @@ def qdump__std____1__wstring(d, value):
d
.
putType
(
"std::wstring"
)
def
qdump__std____weak_ptr
(
d
,
value
):
return
qdump__std__shared_ptr
(
d
,
value
)
def
qdump__std__weak_ptr
(
d
,
value
):
return
qdump__std__shared_ptr
(
d
,
value
)
def
qdump__std__shared_ptr
(
d
,
value
):
if
d
.
isMsvcTarget
():
i
=
value
[
"_Ptr"
]
...
...
@@ -909,39 +915,26 @@ def qdumpHelper__std__vector__QNX(d, value):
innerType
=
value
.
type
[
0
]
isBool
=
innerType
.
name
==
'bool'
if
isBool
:
try
:
impl
=
value
[
'_Myvec'
][
'_Mypair'
][
'_Myval2'
]
except
:
impl
=
value
[
'_Myvec'
]
start
=
impl
[
'_Myfirst'
].
pointer
()
last
=
impl
[
'_Mylast'
].
pointer
()
end
=
impl
[
'_Myend'
].
pointer
()
size
=
value
[
'_Mysize'
].
integer
()
storagesize
=
start
.
dereference
().
type
.
size
()
*
8
(
proxy1
,
proxy2
,
start
,
last
,
end
,
size
)
=
value
.
split
(
"pppppi"
)
else
:
try
:
impl
=
value
[
'_Mypair'
][
'_Myval2'
]
except
:
impl
=
value
start
=
impl
[
'_Myfirst'
].
pointer
()
last
=
impl
[
'_Mylast'
].
pointer
()
end
=
impl
[
'_Myend'
].
pointer
()
(
proxy
,
start
,
last
,
end
)
=
value
.
split
(
"pppp"
)
size
=
(
last
-
start
)
//
innerType
.
size
()
d
.
check
(
0
<=
size
and
size
<=
1000
*
1000
*
1000
)
d
.
check
(
last
<=
end
)
d
.
checkPointer
(
start
)
d
.
checkPointer
(
last
)
d
.
checkPointer
(
end
)
if
size
>
0
:
d
.
checkPointer
(
start
)
d
.
checkPointer
(
last
)
d
.
checkPointer
(
end
)
d
.
putItemCount
(
size
)
if
d
.
isExpanded
():
if
isBool
:
with
Children
(
d
,
size
,
maxNumChild
=
10000
,
childType
=
innerType
):
for
i
in
d
.
childRange
():
q
=
start
+
int
(
i
/
storagesize
)
q
=
start
+
int
(
i
/
8
)
with
SubItem
(
d
,
i
):
d
.
putValue
((
q
.
dereference
().
p
ointer
()
>>
(
i
%
storagesize
))
&
1
)
d
.
putValue
((
d
.
extractP
ointer
(
q
)
>>
(
i
%
8
))
&
1
)
d
.
putType
(
"bool"
)
d
.
putNumChild
(
0
)
else
:
...
...
share/qtcreator/translations/qtcreator_de.ts
View file @
e487b3bd
...
...
@@ -20546,7 +20546,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
<message>
<source>Qt versions for %1 architectures are missing.
To add the Qt versions, select Options > Build & Run > Qt Versions.</source>
<translation>Für
die
Architekturen
%1
fehlen die Qt-Versionen.
<translation>Für
%1
Architekturen fehlen die Qt-Versionen.
Wählen Sie Einstellungen > Erstellung und Ausführung > Qt Versionen, um Qt-Versionen hinzuzufügen.</translation>
</message>
<message numerus="yes">
src/libs/qmljs/qmljsreformatter.cpp
View file @
e487b3bd
...
...
@@ -282,6 +282,15 @@ protected:
{
BestSplit
result
;
while
(
possibleSplits
.
count
()
>
12
)
{
QList
<
Split
>
newPossibleSplits
;
for
(
int
i
=
0
;
i
<
possibleSplits
.
count
();
i
++
)
{
if
(
!
(
i
%
2
))
newPossibleSplits
.
push_back
(
possibleSplits
.
at
(
i
));
}
possibleSplits
=
newPossibleSplits
;
}
result
.
badnessFromSplits
=
0
;
result
.
lines
=
QStringList
(
line
);
...
...
src/libs/ssh/sshkeygenerator.cpp
View file @
e487b3bd
...
...
@@ -115,7 +115,7 @@ void SshKeyGenerator::generatePkcs8KeyString(const KeyPtr &key, bool privateKey,
keyData
=
&
m_publicKey
;
}
pipe
.
end_msg
();
keyData
->
resize
(
static_cast
<
int
>
(
pipe
.
remaining
(
pipe
.
message_count
()
)
-
1
));
keyData
->
resize
(
static_cast
<
int
>
(
pipe
.
remaining
(
pipe
.
message_count
()
-
1
))
)
;
pipe
.
read
(
convertByteArray
(
*
keyData
),
keyData
->
size
(),
pipe
.
message_count
()
-
1
);
}
...
...
src/plugins/android/androidrunner.cpp
View file @
e487b3bd
...
...
@@ -126,7 +126,8 @@ const int MIN_SOCKET_HANDSHAKE_PORT = 20001;
const
int
MAX_SOCKET_HANDSHAKE_PORT
=
20999
;
static
const
QString
pidScript
=
QStringLiteral
(
"for p in /proc/[0-9]*; "
"do cat <$p/cmdline && echo :${p##*/}; done"
);
static
const
QString
pidPollingScript
=
QStringLiteral
(
"while true; do sleep 1; kill -0 %1; done"
);
static
const
QString
pidPollingScript
=
QStringLiteral
(
"while true; do sleep 1; "
"cat /proc/%1/cmdline > /dev/null; done"
);
static
int
APP_START_TIMEOUT
=
45000
;
static
bool
isTimedOut
(
const
chrono
::
high_resolution_clock
::
time_point
&
start
,
...
...
src/plugins/cppeditor/cppeditor.cpp
View file @
e487b3bd
...
...
@@ -521,7 +521,7 @@ sourceLocationsToExtraSelections(const std::vector<SourceLocationContainer> &sou
const
auto
textCharFormat
=
occurrencesTextCharFormat
();
QList
<
QTextEdit
::
ExtraSelection
>
selections
;
selections
.
reserve
(
sourceLocations
.
size
());
selections
.
reserve
(
int
(
sourceLocations
.
size
())
)
;
auto
sourceLocationToExtraSelection
=
[
&
]
(
const
SourceLocationContainer
&
sourceLocation
)
{
QTextEdit
::
ExtraSelection
selection
;
...
...
src/plugins/debugger/cdb/cdbengine.cpp
View file @
e487b3bd
...
...
@@ -1254,8 +1254,6 @@ void CdbEngine::doUpdateLocals(const UpdateParameters &updateParameters)
runCommand
(
cmd
);
}
else
{
typedef
QHash
<
QString
,
int
>
WatcherHash
;
const
bool
partialUpdate
=
!
updateParameters
.
partialVariable
.
isEmpty
();
const
bool
isWatch
=
isWatchIName
(
updateParameters
.
partialVariable
);
...
...
@@ -1325,10 +1323,9 @@ void CdbEngine::doUpdateLocals(const UpdateParameters &updateParameters)
if
(
!
partialUpdate
)
str
<<
blankSeparator
<<
"-W"
;
if
(
!
partialUpdate
||
isWatch
)
{
const
WatcherHash
watcherHash
=
WatchHandler
::
watcherNames
();
if
(
!
watcherHash
.
isEmpty
())
{
const
WatcherHash
::
const_iterator
cend
=
watcherHash
.
constEnd
();
for
(
WatcherHash
::
const_iterator
it
=
watcherHash
.
constBegin
();
it
!=
cend
;
++
it
)
{
const
QMap
<
QString
,
int
>
watchers
=
WatchHandler
::
watcherNames
();
if
(
!
watchers
.
isEmpty
())
{
for
(
auto
it
=
watchers
.
constBegin
(),
cend
=
watchers
.
constEnd
();
it
!=
cend
;
++
it
)
{
str
<<
blankSeparator
<<
"-w "
<<
"watch."
+
QString
::
number
(
it
.
value
())
<<
"
\"
"
<<
it
.
key
()
<<
'"'
;
}
...
...
src/plugins/debugger/debuggerstartparameters.h
View file @
e487b3bd
...
...
@@ -84,6 +84,7 @@ public:
QString
remoteChannel
;
QSsh
::
SshConnectionParameters
connParams
;
bool
remoteSetupNeeded
=
false
;
bool
useExtendedRemote
=
false
;
// Whether to use GDB's target extended-remote or not.
QString
symbolFile
;
// Used by Mer plugin (3rd party)
...
...
src/plugins/debugger/gdb/gdbengine.cpp
View file @
e487b3bd
...
...
@@ -4136,7 +4136,9 @@ void GdbEngine::handleGdbError(QProcess::ProcessError error)
// This should be handled by the code trying to start the process.
break
;
case
QProcess
::
Crashed
:
// This will get a processExited() as well.
// This does not seem to get processFinished() in all cases.
m_gdbProc
.
disconnect
();
handleGdbFinished
(
m_gdbProc
.
exitCode
(),
QProcess
::
CrashExit
);
break
;
case
QProcess
::
ReadError
:
case
QProcess
::
WriteError
:
...
...
src/plugins/debugger/gdb/remotegdbserveradapter.cpp
View file @
e487b3bd
...
...
@@ -262,7 +262,7 @@ void GdbRemoteServerEngine::callTargetRemote()
if
(
m_isQnxGdb
)
runCommand
({
"target qnx "
+
channel
,
NoFlags
,
CB
(
handleTargetQnx
)});
else
if
(
runParameters
().
multiProcess
)
else
if
(
runParameters
().
useExtendedRemote
)
runCommand
({
"target extended-remote "
+
channel
,
NoFlags
,
CB
(
handleTargetExtendedRemote
)});
else
runCommand
({
"target remote "
+
channel
,
NoFlags
,
CB
(
handleTargetRemote
)});
...
...
@@ -467,7 +467,7 @@ void GdbRemoteServerEngine::notifyEngineRemoteServerRunning
// Currently only used by Android support.
runParameters
().
attachPID
=
inferiorPid
;
runParameters
().
remoteChannel
=
serverChannel
;
runParameters
().
multiProcess
=
true
;
runParameters
().
useExtendedRemote
=
true
;
showMessage
(
"NOTE: REMOTE SERVER RUNNING IN MULTIMODE"
);
m_startAttempted
=
true
;
startGdb
();
...
...
src/plugins/debugger/watchhandler.cpp
View file @
e487b3bd
...
...
@@ -88,7 +88,7 @@ enum { debugModel = 0 };
#define MODEL_DEBUG(s) do { if (debugModel) qDebug() << s; } while (0)
static
Q
Hash
<
QString
,
int
>
theWatcherNames
;
static
Q
Map
<
QString
,
int
>
theWatcherNames
;
// Keep order, QTCREATORBUG-12308.
static
int
theWatcherCount
=
0
;
static
QHash
<
QString
,
int
>
theTypeFormats
;
static
QHash
<
QString
,
int
>
theIndividualFormats
;
...
...
@@ -428,8 +428,6 @@ public:
QString
editorContents
(
const
QModelIndexList
&
list
=
QModelIndexList
());
void
clearWatches
();
void
removeWatchItem
(
WatchItem
*
item
);
void
watchExpression
(
const
QString
&
exp
);
void
watchExpression
(
const
QString
&
exp
,
const
QString
&
name
);
void
inputNewExpression
();
public:
...
...
@@ -1095,7 +1093,7 @@ bool WatchModel::setData(const QModelIndex &idx, const QVariant &value, int role
if
(
item
&&
kev
->
key
()
==
Qt
::
Key_Return
&&
kev
->
modifiers
()
==
Qt
::
ControlModifier
&&
item
->
isLocal
())
{
watchExpression
(
item
->
expression
());
m_handler
->
watchExpression
(
item
->
expression
()
,
QString
()
);
return
true
;
}
}
...
...
@@ -1531,16 +1529,6 @@ static QString removeWatchActionText(QString exp)
.
arg
(
exp
.
replace
(
'&'
,
"&&"
));
}
void
WatchModel
::
watchExpression
(
const
QString
&
exp
)
{
watchExpression
(
exp
,
QString
());
}
void
WatchModel
::
watchExpression
(
const
QString
&
exp
,
const
QString
&
name
)
{
currentEngine
()
->
watchHandler
()
->
watchExpression
(
exp
,
name
);
}
static
void
copyToClipboard
(
const
QString
&
clipboardText
)
{
QClipboard
*
clipboard
=
QApplication
::
clipboard
();
...
...
@@ -1582,11 +1570,8 @@ void WatchModel::inputNewExpression()
connect
(
hint
,
&
QLabel
::
linkActivated
,
[](
const
QString
&
link
)
{
HelpManager
::
handleHelpRequest
(
link
);
});
if
(
dlg
.
exec
()
==
QDialog
::
Accepted
)
{
const
QString
exp
=
lineEdit
->
text
().
trimmed
();
if
(
!
exp
.
isEmpty
())
m_handler
->
watchExpression
(
exp
,
exp
);
}
if
(
dlg
.
exec
()
==
QDialog
::
Accepted
)
m_handler
->
watchExpression
(
lineEdit
->
text
().
trimmed
());
}
bool
WatchModel
::
contextMenuEvent
(
const
ItemViewEvent
&
ev
)
...
...
@@ -2096,6 +2081,7 @@ QString WatchHandler::watcherName(const QString &exp)
return
"watch."
+
QString
::
number
(
theWatcherNames
[
exp
]);
}
// If \a name is empty, \a exp will be used as name.
void
WatchHandler
::
watchExpression
(
const
QString
&
exp
,
const
QString
&
name
)
{
// Do not insert the same entry more then once.
...
...
@@ -2137,7 +2123,7 @@ void WatchHandler::updateWatchExpression(WatchItem *item, const QString &newExp)
item
->
setValue
(
QString
(
QLatin1Char
(
' '
)));
item
->
update
();
}
else
{
m_model
->
m_engine
->
update
Item
(
item
->
iname
);
m_model
->
m_engine
->
update
WatchData
(
item
->
iname
);
}
updateWatchersWindow
();
}
...
...
@@ -2259,7 +2245,7 @@ void WatchModel::showEditValue(const WatchItem *item)
else
if
(
innerType
==
"float"
)
{
if
(
innerSize
==
4
)
reader
=
&
readOne
<
float
>
;
else
if
(
innerSize
==
4
)
else
if
(
innerSize
==
8
)
reader
=
&
readOne
<
double
>
;
}
QTC_ASSERT
(
reader
,
return
);
...
...
@@ -2313,7 +2299,7 @@ QStringList WatchHandler::watchedExpressions()
{
// Filter out invalid watchers.
QStringList
watcherNames
;
Q
Hash
Iterator
<
QString
,
int
>
it
(
theWatcherNames
);
Q
Map
Iterator
<
QString
,
int
>
it
(
theWatcherNames
);
while
(
it
.
hasNext
())
{
it
.
next
();
const
QString
&
watcherName
=
it
.
key
();
...
...
@@ -2517,7 +2503,7 @@ void WatchHandler::appendWatchersAndTooltipRequests(DebuggerCommand *cmd)
foreach
(
const
DebuggerToolTipContext
&
p
,
toolTips
)
watchers
.
append
(
watcher
(
p
.
iname
,
p
.
expression
));
Q
Hash
Iterator
<
QString
,
int
>
it
(
WatchHandler
::
watcherNames
());
Q
Map
Iterator
<
QString
,
int
>
it
(
WatchHandler
::
watcherNames
());
while
(
it
.
hasNext
())
{
it
.
next
();
watchers
.
append
(
watcher
(
"watch."
+
QString
::
number
(
it
.
value
()),
it
.
key
()));
...
...
@@ -2576,7 +2562,7 @@ void WatchHandler::setCurrentItem(const QString &iname)
}
}