    verticalHeader()->setVisible(false);
    setFrameShape(QFrame::NoFrame);
    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
  }
  
  int HistoryLog::sizeHintForColumn(int column) const {
    return -1;
  }
 
</s> remove   int prev_row_count = messages.size();
 </s> add  </s> remove     return !sigs.empty() ? QString::number(get_raw_value((uint8_t *)m.dat.data(), m.dat.size(), *sigs[index.column() - 1]))
                         : toHex(m.dat);
 </s> add     return !sigs.empty() ? QString::number(m.sig_values[index.column() - 1]) : toHex(m.data); </s> remove     messages = can->messages(msg_id);
  }
  int delta = messages.size() - prev_row_count;
  if (delta > 0) {
    beginInsertRows({}, prev_row_count, messages.size() - 1);
    endInsertRows();
  } else if (delta < 0) {
    beginRemoveRows({}, messages.size(), prev_row_count - 1);
    endRemoveRows();
 </s> add     uint64_t last_mono_time = messages.empty() ? 0 : messages.front().mono_time;
    auto new_msgs = fetchData(last_mono_time, (can->currentSec() + can->routeStartTime()) * 1e9);
    if ((has_more_data = !new_msgs.empty())) {
      beginInsertRows({}, 0, new_msgs.size() - 1);
      messages.insert(messages.begin(), std::move_iterator(new_msgs.begin()), std::move_iterator(new_msgs.end()));
      endInsertRows();
    }
    verticalHeader()->setVisible(false);
    setFrameShape(QFrame::NoFrame);
    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
  }




keep keep keep keep replace replace replace replace
 Cabana: display all logs in log view (#26659)

* fetch more

* clear log in showevent

* fix wrong time value

* check list size

* fix canmessages::process

* cache all events

* improve segment cache

* cleanup 
tools/cabana/historylog.cc