debugger: slightly saner behaviour for the threads combobox

Change-Id: I20400b037f00a5dbaf11cbbfb184a5bf526883cc
Reviewed-on: http://codereview.qt.nokia.com/4095
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
hjk
2011-09-01 16:36:27 +02:00
committed by hjk
parent 4b3890ee54
commit 60afc7fffa
7 changed files with 58 additions and 25 deletions

View File

@@ -34,6 +34,7 @@
#include "gdb/gdbmi.h"
#include "debuggerconstants.h"
#include "debuggercore.h"
#include <QtCore/QDebug>
#include <QtCore/QTextStream>
@@ -124,7 +125,7 @@ QVariant ThreadsHandler::data(const QModelIndex &index, int role) const
if (!index.isValid())
return QVariant();
const int row = index.row();
if (row >= m_threads.size())
if (row >= m_threads.size())
return QVariant();
const ThreadData &thread = m_threads.at(row);
@@ -148,14 +149,14 @@ QVariant ThreadsHandler::data(const QModelIndex &index, int role) const
return thread.core;
case ThreadData::StateColumn:
return thread.state;
case ThreadData::NameColumn: {
QString s;
if (!thread.name.isEmpty())
s += ' ' + thread.name;
if (!thread.targetId.isEmpty())
s += ' ' + thread.targetId;
return s;
}
case ThreadData::TargetIdColumn:
if (thread.targetId.startsWith(QLatin1String("Thread ")))
return thread.targetId.mid(7);
return thread.targetId;
case ThreadData::NameColumn:
return thread.name;
case ThreadData::ComboNameColumn:
return QString("#%1 %2").arg(thread.id).arg(thread.name);
}
case Qt::ToolTipRole:
return threadToolTip(thread);
@@ -177,7 +178,7 @@ QVariant ThreadsHandler::headerData
return QVariant();
switch (section) {
case ThreadData::IdColumn:
return tr("Thread ID");
return QString(QLatin1String(" ") + tr("Id"));
case ThreadData::FunctionColumn:
return tr("Function");
case ThreadData::FileColumn:
@@ -190,6 +191,8 @@ QVariant ThreadsHandler::headerData
return tr("Core");
case ThreadData::StateColumn:
return tr("State");
case ThreadData::TargetIdColumn:
return tr("Target Id");
case ThreadData::NameColumn:
return tr("Name");
}
@@ -219,19 +222,20 @@ void ThreadsHandler::setCurrentThread(int index)
m_currentIndex = index;
// Emit changed for new frame
// Emit changed for new frame.
i = ThreadsHandler::index(m_currentIndex, 0);
emit dataChanged(i, i);
updateThreadBox();
}
void ThreadsHandler::setCurrentThreadId(int id)
{
const int index = indexOf(id);
if (index != -1) {
if (index != -1)
setCurrentThread(index);
} else {
else
qWarning("ThreadsHandler::setCurrentThreadId: No such thread %d.", id);
}
}
int ThreadsHandler::indexOf(quint64 threadId) const
@@ -251,6 +255,15 @@ void ThreadsHandler::setThreads(const Threads &threads)
m_resetLocationScheduled = false;
m_contentsValid = true;
reset();
updateThreadBox();
}
void ThreadsHandler::updateThreadBox()
{
QStringList list;
foreach (const ThreadData &thread, m_threads)
list.append(QString("#%1 %2").arg(thread.id).arg(thread.name));
debuggerCore()->setThreads(list, m_currentIndex);
}
Threads ThreadsHandler::threads() const