aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/watchhandler.cpp
diff options
context:
space:
mode:
authorhjk <[email protected]>2010-05-19 12:00:01 +0200
committerhjk <[email protected]>2010-05-19 12:00:56 +0200
commitc50dd8508807ba10e816a0e32f7ed60fc990df48 (patch)
treed45afd9ec8eddcbc9e3023ef35d2d050291dd468 /src/plugins/debugger/watchhandler.cpp
parent7e8c345a6413af4431c6a22b3eaf337f2ad86a4f (diff)
debugger: show return value of last function call in Locals and Watchers view
Works only with gdb/Python so far.
Diffstat (limited to 'src/plugins/debugger/watchhandler.cpp')
-rw-r--r--src/plugins/debugger/watchhandler.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index b4cfd13f26e..f10e8fc5ed3 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -120,6 +120,10 @@ WatchModel::WatchModel(WatchHandler *handler, WatchType type)
m_root->parent = 0;
switch (m_type) {
+ case ReturnWatch:
+ m_root->iname = "return";
+ m_root->name = WatchHandler::tr("Return Value");
+ break;
case LocalsWatch:
m_root->iname = "local";
m_root->name = WatchHandler::tr("Locals");
@@ -964,6 +968,7 @@ WatchHandler::WatchHandler(DebuggerManager *manager)
m_expandPointers = true;
m_inChange = false;
+ m_return = new WatchModel(this, ReturnWatch);
m_locals = new WatchModel(this, LocalsWatch);
m_watchers = new WatchModel(this, WatchersWatch);
m_tooltips = new WatchModel(this, TooltipsWatch);
@@ -981,6 +986,7 @@ WatchHandler::WatchHandler(DebuggerManager *manager)
void WatchHandler::beginCycle()
{
++generationCounter;
+ m_return->beginCycle();
m_locals->beginCycle();
m_watchers->beginCycle();
m_tooltips->beginCycle();
@@ -988,6 +994,7 @@ void WatchHandler::beginCycle()
void WatchHandler::endCycle()
{
+ m_return->endCycle();
m_locals->endCycle();
m_watchers->endCycle();
m_tooltips->endCycle();
@@ -997,8 +1004,10 @@ void WatchHandler::endCycle()
void WatchHandler::cleanup()
{
m_expandedINames.clear();
+ m_return->reinitialize();
m_locals->reinitialize();
m_tooltips->reinitialize();
+ m_return->m_fetchTriggered.clear();
m_locals->m_fetchTriggered.clear();
m_watchers->m_fetchTriggered.clear();
m_tooltips->m_fetchTriggered.clear();
@@ -1014,6 +1023,7 @@ void WatchHandler::cleanup()
void WatchHandler::emitAllChanged()
{
+ m_return->emitAllChanged();
m_locals->emitAllChanged();
m_watchers->emitAllChanged();
m_tooltips->emitAllChanged();
@@ -1337,6 +1347,7 @@ void WatchHandler::loadSessionData()
WatchModel *WatchHandler::model(WatchType type) const
{
switch (type) {
+ case ReturnWatch: return m_return;
case LocalsWatch: return m_locals;
case WatchersWatch: return m_watchers;
case TooltipsWatch: return m_tooltips;
@@ -1347,6 +1358,8 @@ WatchModel *WatchHandler::model(WatchType type) const
WatchModel *WatchHandler::modelForIName(const QByteArray &iname) const
{
+ if (iname.startsWith("return"))
+ return m_return;
if (iname.startsWith("local"))
return m_locals;
if (iname.startsWith("tooltip"))
@@ -1374,6 +1387,7 @@ void WatchHandler::setFormat(const QString &type, int format)
{
m_typeFormats[type] = format;
saveTypeFormats();
+ m_return->emitDataChanged(1);
m_locals->emitDataChanged(1);
m_watchers->emitDataChanged(1);
m_tooltips->emitDataChanged(1);