forked from qt-creator/qt-creator
Debugger: Move handling of currentThread to thread handler
Make the individual thread items more agnostic of their environment. The result is closer to the break handler setup. Change-Id: I1a3f6138e5f32e930313e07d3c6a37144c180050 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -55,8 +55,8 @@ namespace Internal {
|
|||||||
|
|
||||||
// ThreadItem
|
// ThreadItem
|
||||||
|
|
||||||
ThreadItem::ThreadItem(const ThreadsHandler *handler, const ThreadData &data)
|
ThreadItem::ThreadItem(const ThreadData &data)
|
||||||
: threadData(data), handler(handler)
|
: threadData(data)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
QVariant ThreadItem::data(int column, int role) const
|
QVariant ThreadItem::data(int column, int role) const
|
||||||
@@ -68,12 +68,6 @@ QVariant ThreadItem::data(int column, int role) const
|
|||||||
return threadPart(column);
|
return threadPart(column);
|
||||||
case Qt::ToolTipRole:
|
case Qt::ToolTipRole:
|
||||||
return threadToolTip();
|
return threadToolTip();
|
||||||
case Qt::DecorationRole:
|
|
||||||
// Return icon that indicates whether this is the active stack frame.
|
|
||||||
if (column == 0)
|
|
||||||
return this == handler->currentThread() ? Icons::LOCATION.icon()
|
|
||||||
: Icons::EMPTY.icon();
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -229,6 +223,19 @@ ThreadsHandler::ThreadsHandler(DebuggerEngine *engine)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariant ThreadsHandler::data(const QModelIndex &index, int role) const
|
||||||
|
{
|
||||||
|
if (role == Qt::DecorationRole && index.column() == 0) {
|
||||||
|
// Return icon that indicates whether this is the active thread.
|
||||||
|
TreeItem *item = itemForIndex(index);
|
||||||
|
if (item && item == m_currentThread)
|
||||||
|
return Icons::LOCATION.icon();
|
||||||
|
return Icons::EMPTY.icon();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ThreadsHandlerModel::data(index, role);
|
||||||
|
}
|
||||||
|
|
||||||
bool ThreadsHandler::setData(const QModelIndex &idx, const QVariant &data, int role)
|
bool ThreadsHandler::setData(const QModelIndex &idx, const QVariant &data, int role)
|
||||||
{
|
{
|
||||||
if (role == BaseTreeView::ItemActivatedRole) {
|
if (role == BaseTreeView::ItemActivatedRole) {
|
||||||
@@ -310,7 +317,7 @@ void ThreadsHandler::updateThread(const ThreadData &threadData)
|
|||||||
if (Thread thread = threadForId(threadData.id))
|
if (Thread thread = threadForId(threadData.id))
|
||||||
thread->mergeThreadData(threadData);
|
thread->mergeThreadData(threadData);
|
||||||
else
|
else
|
||||||
rootItem()->appendChild(new ThreadItem(this, threadData));
|
rootItem()->appendChild(new ThreadItem(threadData));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThreadsHandler::removeThread(const QString &id)
|
void ThreadsHandler::removeThread(const QString &id)
|
||||||
|
@@ -49,7 +49,7 @@ class ThreadItem : public QObject, public Utils::TreeItem
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ThreadItem(const ThreadsHandler *handler, const ThreadData &data = ThreadData());
|
ThreadItem(const ThreadData &data = ThreadData());
|
||||||
|
|
||||||
QVariant data(int column, int role) const override;
|
QVariant data(int column, int role) const override;
|
||||||
Qt::ItemFlags flags(int column) const override;
|
Qt::ItemFlags flags(int column) const override;
|
||||||
@@ -65,12 +65,12 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
ThreadData threadData;
|
ThreadData threadData;
|
||||||
const ThreadsHandler * const handler;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
using Thread = QPointer<ThreadItem>;
|
using Thread = QPointer<ThreadItem>;
|
||||||
|
using ThreadsHandlerModel = Utils::TreeModel<Utils::TypedTreeItem<ThreadItem>, ThreadItem>;
|
||||||
|
|
||||||
class ThreadsHandler : public Utils::TreeModel<Utils::TypedTreeItem<ThreadItem>, ThreadItem>
|
class ThreadsHandler : public ThreadsHandlerModel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
@@ -102,6 +102,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void sort(int column, Qt::SortOrder order) override;
|
void sort(int column, Qt::SortOrder order) override;
|
||||||
|
QVariant data(const QModelIndex &index, int role) const override;
|
||||||
bool setData(const QModelIndex &idx, const QVariant &data, int role) override;
|
bool setData(const QModelIndex &idx, const QVariant &data, int role) override;
|
||||||
|
|
||||||
DebuggerEngine *m_engine;
|
DebuggerEngine *m_engine;
|
||||||
|
Reference in New Issue
Block a user