diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index b7c3cd3401..0526ff141f 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -84,27 +84,22 @@ QVariant MessageListModel::data(const QModelIndex &index, int role) const { } void MessageListModel::setFilterString(const QString &string) { - filter_str = string; - msgs.clear(); - for (auto it = can->can_msgs.begin(); it != can->can_msgs.end(); ++it) { - bool found = false; - - // Search by message id or name - if (it.key().contains(filter_str, Qt::CaseInsensitive) || msgName(it.key()).contains(filter_str, Qt::CaseInsensitive)) { - found = true; - } - + auto contains = [](const QString &id, const QString &txt) { + auto cs = Qt::CaseInsensitive; + if (id.contains(txt, cs) || msgName(id).contains(txt, cs)) return true; // Search by signal name - const DBCMsg *msg = dbc()->msg(it.key()); - if (msg != nullptr) { - for (auto &signal: msg->getSignals()) { - if (QString::fromStdString(signal->name).contains(filter_str, Qt::CaseInsensitive)) { - found = true; - } + if (const auto msg = dbc()->msg(id)) { + for (auto &signal : msg->getSignals()) { + if (QString::fromStdString(signal->name).contains(txt, cs)) return true; } } + return false; + }; - if (found) { + filter_str = string; + msgs.clear(); + for (auto it = can->can_msgs.begin(); it != can->can_msgs.end(); ++it) { + if (filter_str.isEmpty() || contains(it.key(), filter_str)) { msgs.push_back(it.key()); } }