diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.cpp index e3f1d476..e4ea19ab 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.cpp @@ -122,12 +122,10 @@ void RegisterGroupWidget::setAllRegistersVisible(bool visible) { } } -void RegisterGroupWidget::filterRegisters(const std::string& keyword) { +void RegisterGroupWidget::filterRegisters(const QString& keyword) { int matchingWidgetCount = 0; for (const auto& registerWidget : this->registerWidgets) { - if (keyword.empty() - || (registerWidget->descriptor.name.value().find(keyword) != std::string::npos) - ) { + if (keyword.isEmpty() || (registerWidget->searchKeywords.contains(keyword, Qt::CaseInsensitive))) { matchingWidgetCount++; registerWidget->setVisible(true); @@ -142,7 +140,7 @@ void RegisterGroupWidget::filterRegisters(const std::string& keyword) { } else { this->setVisible(true); - if (!keyword.empty()) { + if (!keyword.isEmpty()) { this->expand(); } else { diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.hpp index c1c8ea6d..4fd09d69 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterGroupWidget.hpp @@ -6,7 +6,6 @@ #include #include #include -#include #include "TargetRegistersPaneWidget.hpp" #include "ItemWidget.hpp" @@ -40,7 +39,7 @@ namespace Bloom::Widgets void expand(); void setAllRegistersVisible(bool visible); - void filterRegisters(const std::string& keyword); + void filterRegisters(const QString& keyword); private: QVBoxLayout* layout = new QVBoxLayout(this); diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.cpp index 703d4a56..225c64ba 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.cpp @@ -18,7 +18,14 @@ RegisterWidget::RegisterWidget( TargetRegisterDescriptor descriptor, InsightWorker& insightWorker, QWidget *parent -): ItemWidget(parent), descriptor(std::move(descriptor)), insightWorker(insightWorker) { +) + : ItemWidget(parent) + , descriptor(std::move(descriptor)) + , searchKeywords(QString::fromStdString( + this->descriptor.name.value_or("") + this->descriptor.description.value_or("") + ).toLower()) + , insightWorker(insightWorker) +{ this->setObjectName("register-item"); this->setFixedHeight(25); diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.hpp index 918869c3..e360089a 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/RegisterWidget.hpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "ItemWidget.hpp" #include "src/Insight/InsightWorker/InsightWorker.hpp" @@ -23,6 +24,7 @@ namespace Bloom::Widgets public: Targets::TargetRegisterDescriptor descriptor; + QString searchKeywords; std::optional currentRegister; RegisterWidget( diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/TargetRegistersPaneWidget.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/TargetRegistersPaneWidget.cpp index 616ba44e..4a0161a0 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/TargetRegistersPaneWidget.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegistersPane/TargetRegistersPaneWidget.cpp @@ -124,8 +124,6 @@ TargetRegistersPaneWidget::TargetRegistersPaneWidget( } void TargetRegistersPaneWidget::filterRegisters(const QString& keyword) { - auto stdKeyword = keyword.toLower().toStdString(); - for (const auto& registerGroupWidget : this->registerGroupWidgets) { // If the group name matches the keyword, then don't bother iterating through all the register widgets if (keyword.isEmpty() || registerGroupWidget->name.contains(keyword, Qt::CaseInsensitive)) { @@ -140,7 +138,7 @@ void TargetRegistersPaneWidget::filterRegisters(const QString& keyword) { } } else { - registerGroupWidget->filterRegisters(stdKeyword); + registerGroupWidget->filterRegisters(keyword); } } }