The inspector service natively supports multi-selection. Instead of
converting between multi and single selection all the time, just use the
multi selections and only collapse to one row when interacting with the
view.
Change-Id: Ie969225f955c61b306cfbec4973ffc724ef1e224
Reviewed-by: hjk <hjk@qt.io>
Since we don't need to support the Qt Quick 1 clients anymore, we can
drop some code.
Change-Id: I7afcad8024392f058a35b3ed0d28d2172587552a
Reviewed-by: hjk <hjk@qt.io>
This is a step towards properly supporting multiple debugger
sessions side-by-side.
The combined C++-and-QML engine has been removed, instead a
combined setup creates now two individual engines, under a single
DebuggerRunTool but mostly independent with no combined state
machine. This requires a few more clicks in some cases, but
makes it easier to direct e.g. interrupt requests to the
interesting engine.
Care has been taken to not change the UX of the single debugger
session use case if possible. The fat debug button operates
as-before in that case, i.e. switches to Interrupt if the
single active runconfiguration runs in the debugger etc.
Most views are made per-engine, running an engine creates
a new Perspective, which is destroyed when the run control dies.
The snapshot view remains global and becomes primary source
of information on a "current engine" that receives all menu
and otherwise global input.
There is a new global "Breakpoint Preset" view containing
all "static" breakpoint data. When an engine starts up it
"claims" breakpoint it believes it can handle, but operates
on a copy of the static data. The markers of the static
version are suppressed as long as an engine controls a
breakpoint (that inclusive all resolved locations), but are
re-instatet once the engine quits.
The old Breakpoint class that already contained this split
per-instance was split into a new Breakpoint and a
GlobalBreakpoint class, with a per-engine model for Breakpoints,
and a singleton model containing GlobalBreakpoints.
There is a new CppDebuggerEngine intermediate level serving as
base for C++ (or, rather, "compiled") binary debugging, i.e.
{Gdb,Lldb,Cdb}Engine, taking over bits of the current DebuggerEngine
base that are not applicable to non-binary debuggers.
Change-Id: I9994f4c188379b4aee0c4f379edd4759fbb0bd43
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
With QT_RESTRICTED_CAST_FROM_ASCII making GdbMi etc operate on
QString is feasible again. Take this as opportunity to move
debugger encoding handling closer to a 'conversion on input and
output if needed, storage in QString only' scheme.
Change-Id: I2f10c9fa8a6c62c44f4e6682efe3769e9fba30f7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Don't instantiate repeating boilerplate item data in some
cases (such as large arrays).
This makes it necessary to access parent WatchItems in
a lot more cases than before and needs another separation of
WatchItem/WatchModel code to keep the dumper autotests
in a functional state.
For a plain std::vector<int> with 1 mio items this reduces
extraction time from more than 2 minutes to about 3 seconds.
Change-Id: I175c5f6ee90434a6e85342d8bb71bd10a04dd271
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
The invalid ID is -1 and we shouldn't send 0 to the engine debug
service by default as that will select some random object as context
for expression evaluation.
Change-Id: Ide245468f787cc449ff50ac846c7ff31620c01b4
Task-number: QTCREATORBUG-14931
Reviewed-by: hjk <hjk@theqtcompany.com>
There's a 1:1 relation, and the abstraction is not needed anymore.
Also remove some unused code.
Change-Id: I09a2522deb5d522f46ec7518d19978a038032fbb
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
... in WatchHandler and DebuggerEngine interface.
Adjust using code.
Change-Id: I6371f3e96ba46a783e23a5767cdde24a10d3fce7
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
"state" is the more widely used term and we should follow that
convention. We also need to distinguish between the state of the
underlying network socket and the client itself. The change makes this
explicit.
As preparation for the upcoming centralized debug support the "State"
enum of the debug client is also moved into the QmlDebugClient class.
Change-Id: Ib9d7e03d23528f16ed696ed3518e813d11ea1c32
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Update context from QML object tree or the stack frame
depending upon debugger engine state.
Change-Id: I4e6affba37acc016513ad95cd278a400aaa18c49
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
When an object is selected in the Inspector, the
Editor is updated to show the relevant code.
Task-number: QTCREATORBUG-8246
Change-Id: I4f7fbcccdeb22849682fa72c63e87a78f48d185b
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
QML objects are fetched lazily when constructing the object tree.
Incase parents have not been previously fetched, we fetch the
required data to construct only the relevant branch of the tree.
Task-number: QTCREATORBUG-8246
Change-Id: Id529c3b2334d33ff4eb46b14f50cf042ad2960e2
Reviewed-by: hjk <qthjk@ovi.com>
Fetch data on demand for 4.x. Since, parentIds are not
known, the tree will be reset when new objects are created.
Related changes in Qt side:
https://codereview.qt-project.org/#change,35982
Task-number: QTCREATORBUG-7779
Change-Id: I8b53604979bbbc2e6f01bc7b785929811a76f398
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
QtCreator takes into account the result of message from
qtdeclarative for setting, resetting and updating the method
body.
Task-number: QTCREATORBUG-3264
Change-Id: I15d1a33990175e86bb3f2fee08f75dd5b7b1b628
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
Populating watchhandler can be expensive. Update
with just the necessary data.
Change-Id: I06c28e1c8f5437cc05d3f9cef139d3df9da10c81
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
As Location information is already cached, there is no
need to fetch the information from the QmlJS Semantic info.
Task-number: QTCREATORBUG-7409
Change-Id: I9cc3dce0910632cfe517f7697d74691e6675793b
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
Response for "destroyObject" now has the debugId of the
destroyed object. This is used to fetch the parent object rather
than querying the engine context.
Change-Id: I2e5b7650cbe847117cce6952206dd479ee696f0e
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
QML property values could be set in the inspector.
Regression introduced by 7f09d0b756.
This patch is a partial fix. Only values can be assigned currently.
For expressions, use the console.
Change-Id: I945b11109cd7788dd0f5277af206bf9658844aee
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
Reviewed-by: hjk <qthjk@ovi.com>
Try to use the watchHandler for referring to the object tree
instead of caching the object tree locally.
Change-Id: I68624771ef49d50f2cf0d6d580b1b34d57483178
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
It's one model for all locals, watch, return, tooltip and inspector
data. This allows more streamlined code paths and better isolation
of the model data from the WatchHandler. WatchItems are now registered
in a hash indexed by iname, so inames can be used as the primary
handle to watch data in the WatchHandler interface.
Change-Id: Idac0a808b5d785307496d1de4198a1f2e9ce3880
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
Since the object tree is fetched lazily, we might have
objects whose debugIds are not known. In such cases,
objects can be fetched by passing the location info.
Change-Id: I2001460cc14401e011efef9be9194c9f7868d617
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Move Status enum out of QmlDebugClient and drop "QmlDebug"
prefix for the different 'Reference' structs. Allows to
avoid 'using namespace in QmlDebug' in header files.
Change-Id: Id9857977300e86d637cf128ff3417d8b24c8e995
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
Merge QmlJSInspector plugin into the debugger. Also merge the
extra Inspector window with the Locals & Watchers: It now shows
the QML object tree in the running state.
Change-Id: I59ae0c1b970a48ba10ecda92ed3ba765d94b1d9c
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>