  #include "tools/cabana/signaledit.h"
  
  #include <QDialogButtonBox>
  #include <QHBoxLayout>
  #include <QHeaderView>
  #include <QMessageBox>
 
</s> remove #include <QGuiApplication>
 </s> add  </s> remove       emit model->dataChanged(model->index(i, 0), model->index(i, 0));
 </s> add       emit model->dataChanged(model->index(i, 0), model->index(i, 0), {Qt::DecorationRole}); </s> remove   return size;
 </s> add   return {width, QApplication::fontMetrics().height()}; </s> remove   QSize size = QStyledItemDelegate::sizeHint(option, index);
  if (index.column() == 0 && !index.parent().isValid()) {
    size.rwidth() = std::min(option.widget->size().width() / 2, size.width() + color_label_width + 8);
 </s> add   int width = option.widget->size().width() / 2;
  if (index.column() == 0) {
    auto text = index.data(Qt::DisplayRole).toString();
    auto it = width_cache.find(text);
    if (it == width_cache.end()) {
      int spacing = option.widget->style()->pixelMetric(QStyle::PM_TreeViewIndentation) + color_label_width + 8;
      it = width_cache.insert(text, option.fontMetrics.width(text) + spacing);
    }
    width = std::min(width, it.value());
#include <QApplication>
  #include "tools/cabana/signaledit.h"
  
#include <QApplication>
  #include <QDialogButtonBox>
  #include <QHBoxLayout>
  #include <QHeaderView>
  #include <QMessageBox>
keep add keep keep keep keep
 cabana: improve the performance of updating TreeView in real-time. (#27517) 
tools/cabana/signaledit.cc