diff --git a/tools/cabana/binaryview.cc b/tools/cabana/binaryview.cc
index 9865907069..ed93a07e40 100644
--- a/tools/cabana/binaryview.cc
+++ b/tools/cabana/binaryview.cc
@@ -127,15 +127,6 @@ void BinaryView::highlight(const cabana::Signal *sig) {
}
}
- if (sig && underMouse()) {
- QString tooltip = tr(R"(%1
- Size:%2 LE:%3 SGD:%4
- )").arg(sig->name).arg(sig->size).arg(sig->is_little_endian ? "Y" : "N").arg(sig->is_signed ? "Y" : "N");
- QToolTip::showText(QCursor::pos(), tooltip, this, rect());
- } else {
- QToolTip::showText(QCursor::pos(), "", this, rect());
- }
-
hovered_sig = sig;
emit signalHovered(hovered_sig);
}
@@ -349,6 +340,16 @@ QVariant BinaryViewModel::headerData(int section, Qt::Orientation orientation, i
return {};
}
+QVariant BinaryViewModel::data(const QModelIndex &index, int role) const {
+ if (role == Qt::ToolTipRole) {
+ auto item = (const BinaryViewModel::Item *)index.internalPointer();
+ if (item && !item->sigs.empty()) {
+ return signalToolTip(item->sigs.back());
+ }
+ }
+ return {};
+}
+
// BinaryItemDelegate
BinaryItemDelegate::BinaryItemDelegate(QObject *parent) : QStyledItemDelegate(parent) {
diff --git a/tools/cabana/binaryview.h b/tools/cabana/binaryview.h
index baeb79cba7..d9966c9110 100644
--- a/tools/cabana/binaryview.h
+++ b/tools/cabana/binaryview.h
@@ -28,7 +28,7 @@ public:
void updateState();
void updateItem(int row, int col, const QString &val, const QColor &color);
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
- QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const { return {}; }
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override { return row_count; }
int columnCount(const QModelIndex &parent = QModelIndex()) const override { return column_count; }
inline QModelIndex bitIndex(int bit, bool is_lb) const { return index(bit / 8, is_lb ? (7 - bit % 8) : bit % 8); }
diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc
index 94b539505c..2e2087dece 100644
--- a/tools/cabana/messageswidget.cc
+++ b/tools/cabana/messageswidget.cc
@@ -33,6 +33,7 @@ MessagesWidget::MessagesWidget(QWidget *parent) : QWidget(parent) {
view->setItemDelegate(delegate);
view->setModel(model);
+ view->setHeader(header);
view->setSortingEnabled(true);
view->sortByColumn(MessageListModel::Column::NAME, Qt::AscendingOrder);
view->setAllColumnsShowFocus(true);
@@ -40,7 +41,6 @@ MessagesWidget::MessagesWidget(QWidget *parent) : QWidget(parent) {
view->setItemsExpandable(false);
view->setIndentation(0);
view->setRootIsDecorated(false);
- view->setHeader(header);
// Must be called before setting any header parameters to avoid overriding
restoreHeaderState(settings.message_header_state);
diff --git a/tools/cabana/signalview.cc b/tools/cabana/signalview.cc
index 46dfef1004..71186bbdf1 100644
--- a/tools/cabana/signalview.cc
+++ b/tools/cabana/signalview.cc
@@ -146,7 +146,7 @@ QVariant SignalModel::data(const QModelIndex &index, int role) const {
} else if (role == Qt::DecorationRole && index.column() == 0 && item->type == Item::ExtraInfo) {
return utils::icon(item->parent->extra_expanded ? "chevron-compact-down" : "chevron-compact-up");
} else if (role == Qt::ToolTipRole && item->type == Item::Sig) {
- return (index.column() == 0) ? item->sig->name : item->sig_val;
+ return (index.column() == 0) ? signalToolTip(item->sig) : QString();
}
}
return {};
@@ -300,20 +300,6 @@ QSize SignalItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QMo
return {width, QApplication::fontMetrics().height()};
}
-bool SignalItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) {
- if (event && event->type() == QEvent::ToolTip && index.isValid()) {
- auto item = (SignalModel::Item *)index.internalPointer();
- if (item->type == SignalModel::Item::Sig && index.column() == 1) {
- QRect rc = option.rect.adjusted(0, 0, -option.rect.width() * 0.4, 0);
- if (rc.contains(event->pos())) {
- event->setAccepted(false);
- return false;
- }
- }
- }
- return QStyledItemDelegate::helpEvent(event, view, option, index);
-}
-
void SignalItemDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const {
auto item = (SignalModel::Item *)index.internalPointer();
if (editor && item->type == SignalModel::Item::Sig && index.column() == 1) {
diff --git a/tools/cabana/signalview.h b/tools/cabana/signalview.h
index 02741234a6..f5924c1f5d 100644
--- a/tools/cabana/signalview.h
+++ b/tools/cabana/signalview.h
@@ -85,7 +85,6 @@ public:
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
- bool helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) override;
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
QValidator *name_validator, *double_validator;
diff --git a/tools/cabana/util.cc b/tools/cabana/util.cc
index 7a606b133e..3cf328e1e0 100644
--- a/tools/cabana/util.cc
+++ b/tools/cabana/util.cc
@@ -230,3 +230,13 @@ int num_decimals(double num) {
auto dot_pos = string.indexOf('.');
return dot_pos == -1 ? 0 : string.size() - dot_pos - 1;
}
+
+QString signalToolTip(const cabana::Signal *sig) {
+ return QObject::tr(R"(
+ %1
+ Start Bit: %2 Size: %3
+ MSB: %4 LSB: %5
+ Little Endian: %6 Signed: %7
+ )").arg(sig->name).arg(sig->start_bit).arg(sig->size).arg(sig->msb).arg(sig->lsb)
+ .arg(sig->is_little_endian ? "Y" : "N").arg(sig->is_signed ? "Y" : "N");
+}
diff --git a/tools/cabana/util.h b/tools/cabana/util.h
index 4358190bc3..74724dfb33 100644
--- a/tools/cabana/util.h
+++ b/tools/cabana/util.h
@@ -136,3 +136,4 @@ private:
};
int num_decimals(double num);
+QString signalToolTip(const cabana::Signal *sig);