diff --git a/tools/cabana/signalview.cc b/tools/cabana/signalview.cc index 4a07e25beb..934609a439 100644 --- a/tools/cabana/signalview.cc +++ b/tools/cabana/signalview.cc @@ -447,7 +447,7 @@ SignalView::SignalView(ChartsWidget *charts, QWidget *parent) : charts(charts), QRegularExpression re("\\S+"); filter_edit->setValidator(new QRegularExpressionValidator(re, this)); filter_edit->setClearButtonEnabled(true); - filter_edit->setPlaceholderText(tr("filter signals")); + filter_edit->setPlaceholderText(tr("Filter Signal")); hl->addWidget(filter_edit); hl->addStretch(1); @@ -502,6 +502,12 @@ SignalView::SignalView(ChartsWidget *charts, QWidget *parent) : charts(charts), QObject::connect(tree->verticalScrollBar(), &QScrollBar::valueChanged, [this]() { updateState(); }); QObject::connect(tree->verticalScrollBar(), &QScrollBar::rangeChanged, [this]() { updateState(); }); QObject::connect(can, &AbstractStream::msgsReceived, this, &SignalView::updateState); + QObject::connect(tree->header(), &QHeaderView::sectionResized, [this](int logicalIndex, int oldSize, int newSize) { + if (logicalIndex == 1) { + value_column_width = newSize - delegate->button_size.width(); + updateState(); + } + }); setWhatsThis(tr(R"( Signal view
@@ -638,11 +644,10 @@ void SignalView::updateState(const QHash *msgs) { last_visible_row = bottom.parent().isValid() ? bottom.parent().row() : bottom.row(); } - QSize size(tree->columnWidth(1) - delegate->button_size.width(), delegate->button_size.height()); - int min_max_width = std::min(size.width() - 10, QFontMetrics(delegate->minmax_font).width("-000.00") + 5); - int value_width = std::min(max_value_width, size.width() * 0.35); - size -= {value_width + min_max_width, style()->pixelMetric(QStyle::PM_FocusFrameVMargin) * 2}; - + const static int min_max_width = QFontMetrics(delegate->minmax_font).width("-000.00") + 5; + int value_width = std::min(max_value_width + min_max_width, value_column_width / 2); + QSize size(value_column_width - value_width, + delegate->button_size.height() - style()->pixelMetric(QStyle::PM_FocusFrameVMargin) * 2); QFutureSynchronizer synchronizer; for (int i = first_visible_row; i <= last_visible_row; ++i) { auto item = model->getItem(model->index(i, 1)); diff --git a/tools/cabana/signalview.h b/tools/cabana/signalview.h index bcf0019bc4..c08579bc55 100644 --- a/tools/cabana/signalview.h +++ b/tools/cabana/signalview.h @@ -136,6 +136,7 @@ private: } }; int max_value_width = 0; + int value_column_width = 0; TreeView *tree; QLabel *sparkline_label; QSlider *sparkline_range_slider;