    return size;
  }
  
  void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
    auto data = index.data(BytesRole);
    if (!data.isValid()) {
      return QStyledItemDelegate::paint(painter, option, index);
 
</s> remove       case 2: return QString::number(id.address, 16);;
      case 3: return can_data.freq;
 </s> add       case 2: return QString::number(id.address, 16);
      case 3: return getFreq(can_data); </s> remove   uint32_t freq = 0;
 </s> add   double freq = 0;
bool MessageBytesDelegate::helpEvent(QHelpEvent *e, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) {
  if (e->type() == QEvent::ToolTip && index.column() == 0) {
    if (view->visualRect(index).width() < QStyledItemDelegate::sizeHint(option, index).width()) {
      QToolTip::showText(e->globalPos(), index.data(Qt::DisplayRole).toString(), view);
      return true;
    }
  }
  QToolTip::hideText();
  return false;
}

    return size;
  }
  
bool MessageBytesDelegate::helpEvent(QHelpEvent *e, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) {
  if (e->type() == QEvent::ToolTip && index.column() == 0) {
    if (view->visualRect(index).width() < QStyledItemDelegate::sizeHint(option, index).width()) {
      QToolTip::showText(e->globalPos(), index.data(Qt::DisplayRole).toString(), view);
      return true;
    }
  }
  QToolTip::hideText();
  return false;
}

  void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
    auto data = index.data(BytesRole);
    if (!data.isValid()) {
      return QStyledItemDelegate::paint(painter, option, index);
keep keep add keep keep keep keep
 cabana: some improvements to messages view (#27935)

* improve messageswidget

* remove double semicolon 
tools/cabana/util.cc