From 4e8bd55acd1f2f3102a4e550bf2311c16b5cb1c9 Mon Sep 17 00:00:00 2001 From: Nav Date: Sat, 11 Mar 2023 16:09:21 +0000 Subject: [PATCH] Fixed bug with FocusedRegionGroupItem not correctly updating the contained byte items --- .../FocusedRegionGroupItem.cpp | 21 +++++++++++++++++++ .../FocusedRegionGroupItem.hpp | 2 ++ .../HexViewerWidget/GroupItem.hpp | 3 ++- .../HexViewerWidget/TopLevelGroupItem.cpp | 1 - 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.cpp index d58abca5..1e055d9e 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.cpp @@ -28,6 +28,27 @@ namespace Bloom::Widgets } } + FocusedRegionGroupItem::~FocusedRegionGroupItem() { + const auto updateChildItems = [] (const decltype(this->items)& items, const auto& updateChildItems) -> void { + for (auto& item : items) { + auto* byteItem = dynamic_cast(item); + + if (byteItem != nullptr) { + byteItem->grouped = false; + continue; + } + + auto* groupItem = dynamic_cast(item); + + if (groupItem != nullptr) { + updateChildItems(groupItem->items, updateChildItems); + } + } + }; + + updateChildItems(this->items, updateChildItems); + } + void FocusedRegionGroupItem::refreshValue(const HexViewerSharedState& hexViewerState) { if (!hexViewerState.data.has_value()) { this->valueLabel = std::nullopt; diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.hpp index 141aaa05..e45f4156 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/FocusedRegionGroupItem.hpp @@ -20,6 +20,8 @@ namespace Bloom::Widgets HexViewerItem* parent ); + ~FocusedRegionGroupItem(); + void refreshValue(const HexViewerSharedState& hexViewerState); void paint( diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/GroupItem.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/GroupItem.hpp index b98f6a3b..c45eca96 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/GroupItem.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/GroupItem.hpp @@ -16,6 +16,8 @@ namespace Bloom::Widgets class GroupItem: public HexViewerItem { public: + std::vector items; + ~GroupItem(); QSize size() const override { @@ -35,7 +37,6 @@ namespace Bloom::Widgets } protected: - std::vector items; QSize groupSize = {}; bool multiLine = false; diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/TopLevelGroupItem.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/TopLevelGroupItem.cpp index f632756b..dd27f3fc 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/TopLevelGroupItem.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/TopLevelGroupItem.cpp @@ -35,7 +35,6 @@ namespace Bloom::Widgets } byteItem.parent = this; - byteItem.grouped = false; this->items.push_back(&byteItem); }