diff --git a/src/libs/valgrind/callgrind/callgrindcallmodel.cpp b/src/libs/valgrind/callgrind/callgrindcallmodel.cpp
index 987a60371fe..7e75ce7985b 100644
--- a/src/libs/valgrind/callgrind/callgrindcallmodel.cpp
+++ b/src/libs/valgrind/callgrind/callgrindcallmodel.cpp
@@ -208,11 +208,21 @@ QVariant CallModel::data(const QModelIndex &index, int role) const
QVariant CallModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- if (orientation == Qt::Vertical || role != Qt::DisplayRole)
+ if (orientation == Qt::Vertical || (role != Qt::DisplayRole && role != Qt::ToolTipRole))
return QVariant();
QTC_ASSERT(section >= 0 && section < columnCount(), return QVariant());
+ if (role == Qt::ToolTipRole) {
+ if (section == CostColumn) {
+ if (!d->m_data)
+ return QVariant();
+
+ return ParseData::prettyStringForEvent(d->m_data->events().at(d->m_event));
+ }
+ return QVariant();
+ }
+
if (section == CalleeColumn)
return tr("Callee");
else if (section == CallerColumn)
diff --git a/src/libs/valgrind/callgrind/callgrindcontroller.cpp b/src/libs/valgrind/callgrind/callgrindcontroller.cpp
index ffcb4e85226..481d5dd2ccf 100644
--- a/src/libs/valgrind/callgrind/callgrindcontroller.cpp
+++ b/src/libs/valgrind/callgrind/callgrindcontroller.cpp
@@ -80,7 +80,7 @@ QString toOptionString(CallgrindController::Option option)
-w=
Specify the startup directory of an active Callgrind run
*/
- switch(option) {
+ switch (option) {
case CallgrindController::Dump:
return "--dump";
case CallgrindController::ResetEventCounters:
@@ -118,7 +118,7 @@ void CallgrindController::run(Option option)
const QString optionString = toOptionString(option);
- switch(option) {
+ switch (option) {
case CallgrindController::Dump:
emit statusMessage(tr("Dumping profile data..."));
break;
@@ -167,7 +167,7 @@ void CallgrindController::processFinished(int rc, QProcess::ExitStatus status)
}
// this call went fine, we might run another task after this
- switch(m_lastOption) {
+ switch (m_lastOption) {
case ResetEventCounters:
// lets dump the new reset profiling info
run(Dump);
diff --git a/src/libs/valgrind/callgrind/callgrindcontroller.h b/src/libs/valgrind/callgrind/callgrindcontroller.h
index adefdfb4d33..c739e11c2df 100644
--- a/src/libs/valgrind/callgrind/callgrindcontroller.h
+++ b/src/libs/valgrind/callgrind/callgrindcontroller.h
@@ -36,7 +36,6 @@
#include
#include
-#include
#include
#include
@@ -69,6 +68,7 @@ public:
void run(Valgrind::Callgrind::CallgrindController::Option option);
void setValgrindProcess(ValgrindProcess *process);
+ inline ValgrindProcess *valgrindProcess() { return m_valgrindProc; }
/**
* Make data file available locally, triggers @c localParseDataAvailable.
@@ -96,7 +96,7 @@ private Q_SLOTS:
private:
void cleanupTempFile();
- // callgrind_controll process
+ // callgrind_control process
Valgrind::ValgrindProcess *m_process;
// valgrind process
Valgrind::ValgrindProcess *m_valgrindProc;
diff --git a/src/libs/valgrind/callgrind/callgrindcycledetection.cpp b/src/libs/valgrind/callgrind/callgrindcycledetection.cpp
index db4c7cd95a0..2922747fc9b 100644
--- a/src/libs/valgrind/callgrind/callgrindcycledetection.cpp
+++ b/src/libs/valgrind/callgrind/callgrindcycledetection.cpp
@@ -55,14 +55,14 @@ CycleDetection::CycleDetection(ParseData *data)
QVector CycleDetection::run(const QVector &input)
{
- foreach(const Function *function, input) {
+ foreach (const Function *function, input) {
Node *node = new Node;
node->function = function;
node->dfs = -1;
node->lowlink = -1;
m_nodes.insert(function, node);
}
- foreach(Node *node, m_nodes) {
+ foreach (Node *node, m_nodes) {
if (node->dfs == -1)
tarjan(node);
}
@@ -79,7 +79,7 @@ void CycleDetection::tarjan(Node *node)
m_depth++;
m_stack.push(node);
- foreach(const FunctionCall *call, node->function->outgoingCalls())
+ foreach (const FunctionCall *call, node->function->outgoingCalls())
tarjanForChildNode(node, m_nodes.value(call->callee()));
if (node->dfs == node->lowlink) {
@@ -88,7 +88,7 @@ void CycleDetection::tarjan(Node *node)
do {
n = m_stack.pop();
functions << n->function;
- } while(n != node);
+ } while (n != node);
if (functions.size() == 1) {
// not a real cycle
diff --git a/src/libs/valgrind/callgrind/callgrinddatamodel.cpp b/src/libs/valgrind/callgrind/callgrinddatamodel.cpp
index f146b10e8a6..0cd2587a7ab 100644
--- a/src/libs/valgrind/callgrind/callgrinddatamodel.cpp
+++ b/src/libs/valgrind/callgrind/callgrinddatamodel.cpp
@@ -65,6 +65,7 @@ public:
Private()
: m_data(0)
, m_event(0)
+ , m_verboseToolTips(true)
, m_cycleDetection(false)
{
}
@@ -77,6 +78,7 @@ public:
const ParseData *m_data;
int m_event;
+ bool m_verboseToolTips;
bool m_cycleDetection;
QVector m_functions;
};
@@ -128,6 +130,16 @@ void DataModel::setParseData(const ParseData *data)
endResetModel();
}
+void DataModel::setVerboseToolTipsEnabled(bool enabled)
+{
+ d->m_verboseToolTips = enabled;
+}
+
+bool DataModel::verboseToolTipsEnabled() const
+{
+ return d->m_verboseToolTips;
+}
+
const ParseData *DataModel::parseData() const
{
return d->m_data;
@@ -254,6 +266,9 @@ QVariant DataModel::data(const QModelIndex &index, int role) const
else if (index.column() == InclusiveCostColumn)
return inclusiveCost;
} else if (role == Qt::ToolTipRole) {
+ if (!d->m_verboseToolTips)
+ return data(index, Qt::DisplayRole);
+
QString ret = "