diff --git a/tools/cabana/binaryview.cc b/tools/cabana/binaryview.cc
index 50f66e5182..13cd76af3a 100644
--- a/tools/cabana/binaryview.cc
+++ b/tools/cabana/binaryview.cc
@@ -437,9 +437,11 @@ void BinaryItemDelegate::drawSignalCell(QPainter *painter, const QStyleOptionVie
auto sig_color = getColor(sig);
QColor color = sig_color;
color.setAlpha(item->bg_color.alpha());
- painter->fillRect(rc, Qt::white);
+ // Mixing the signal colour with the Base background color to fade it
+ painter->fillRect(rc, QApplication::palette().color(QPalette::Base));
painter->fillRect(rc, color);
+ // Draw edges
color = sig_color.darker(125);
painter->setPen(QPen(color, 1));
if (draw_left) painter->drawLine(rc.topLeft(), rc.bottomLeft());
diff --git a/tools/cabana/chart/chart.cc b/tools/cabana/chart/chart.cc
index a7f700f3c2..353bb3fab3 100644
--- a/tools/cabana/chart/chart.cc
+++ b/tools/cabana/chart/chart.cc
@@ -213,9 +213,19 @@ void ChartView::updateTitle() {
for (QLegendMarker *marker : chart()->legend()->markers()) {
QObject::connect(marker, &QLegendMarker::clicked, this, &ChartView::handleMarkerClicked, Qt::UniqueConnection);
}
+
+ // Use CSS to draw titles in the WindowText color
+ auto tmp = palette().color(QPalette::WindowText);
+ auto titleColorCss = tmp.name(QColor::HexArgb);
+ // Draw message details in similar color, but slightly fade it to the background
+ tmp.setAlpha(180);
+ auto msgColorCss = tmp.name(QColor::HexArgb);
+
for (auto &s : sigs) {
auto decoration = s.series->isVisible() ? "none" : "line-through";
- s.series->setName(QString("%2 %3 %4").arg(decoration, s.sig->name, msgName(s.msg_id), s.msg_id.toString()));
+ s.series->setName(QString("%3 %5 %6")
+ .arg(decoration, titleColorCss, s.sig->name,
+ msgColorCss, msgName(s.msg_id), s.msg_id.toString()));
}
split_chart_act->setEnabled(sigs.size() > 1);
resetChartCache();
diff --git a/tools/cabana/historylog.cc b/tools/cabana/historylog.cc
index 51abc3d50f..01c1f31645 100644
--- a/tools/cabana/historylog.cc
+++ b/tools/cabana/historylog.cc
@@ -63,7 +63,10 @@ QVariant HistoryLogModel::headerData(int section, Qt::Orientation orientation, i
return "Data";
}
} else if (role == Qt::BackgroundRole && section > 0 && show_signals) {
- return QBrush(getColor(sigs[section - 1]));
+ // Alpha-blend the signal color with the background to ensure contrast
+ QColor sigColor = getColor(sigs[section - 1]);
+ sigColor.setAlpha(128);
+ return QBrush(sigColor);
}
}
return {};
diff --git a/tools/cabana/signalview.cc b/tools/cabana/signalview.cc
index 762b494f35..98cd08a690 100644
--- a/tools/cabana/signalview.cc
+++ b/tools/cabana/signalview.cc
@@ -459,7 +459,10 @@ SignalView::SignalView(ChartsWidget *charts, QWidget *parent) : charts(charts),
tree->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
tree->header()->setStretchLastSection(true);
tree->setMinimumHeight(300);
- tree->setStyleSheet("QSpinBox{background-color:white;border:none;} QLineEdit{background-color:white;}");
+
+ // Use a distinctive background for the whole row containing a QSpinBox or QLineEdit
+ QString nodeBgColor = palette().color(QPalette::AlternateBase).name(QColor::HexArgb);
+ tree->setStyleSheet(QString("QSpinBox{background-color:%1;border:none;} QLineEdit{background-color:%1;}").arg(nodeBgColor));
QVBoxLayout *main_layout = new QVBoxLayout(this);
main_layout->setContentsMargins(0, 0, 0, 0);