diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.cpp index 671061d9..ee27328e 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.cpp @@ -84,7 +84,6 @@ namespace Bloom::Widgets this->focusedMemoryRegions, this->excludedMemoryRegions, this->settings, - this->hoveredAddressLabel, this->container ); @@ -181,6 +180,14 @@ namespace Bloom::Widgets this, [this] { this->byteItemGraphicsScene = this->byteItemGraphicsView->getScene(); + + QObject::connect( + this->byteItemGraphicsScene, + &ItemGraphicsScene::hoveredAddress, + this, + &HexViewerWidget::onHoveredAddress + ); + this->loadingHexViewerLabel->hide(); this->byteItemGraphicsView->show(); @@ -288,4 +295,26 @@ namespace Bloom::Widgets this->byteItemGraphicsScene->selectByteItems({}); } + + void HexViewerWidget::onHoveredAddress(const std::optional& address) { + if (!address.has_value()) { + this->hoveredAddressLabel->setText("Relative address / Absolute address:"); + return; + } + + const auto addressHex = "0x" + QString::number( + *address, + 16 + ).rightJustified(8, '0').toUpper(); + + const auto relativeAddress = *address - this->targetMemoryDescriptor.addressRange.startAddress; + const auto relativeAddressHex = "0x" + QString::number( + relativeAddress, + 16 + ).rightJustified(8, '0').toUpper(); + + this->hoveredAddressLabel->setText( + "Relative address / Absolute address: " + relativeAddressHex + " / " + addressHex + ); + } } diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.hpp index abaa5f26..55d0f028 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/HexViewerWidget.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "src/Targets/TargetMemory.hpp" #include "src/Targets/TargetState.hpp" @@ -82,5 +83,6 @@ namespace Bloom::Widgets void setAnnotationsEnabled(bool enabled); void setDisplayAsciiEnabled(bool enabled); void onGoToAddressInputChanged(); + void onHoveredAddress(const std::optional& address); }; } diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.cpp index f3e93a8f..6cc89f1e 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.cpp @@ -19,7 +19,6 @@ namespace Bloom::Widgets std::vector& focusedMemoryRegions, std::vector& excludedMemoryRegions, HexViewerWidgetSettings& settings, - Label* hoveredAddressLabel, QGraphicsView* parent ) : state( @@ -31,7 +30,6 @@ namespace Bloom::Widgets ) , focusedMemoryRegions(focusedMemoryRegions) , excludedMemoryRegions(excludedMemoryRegions) - , hoveredAddressLabel(hoveredAddressLabel) , parent(parent) , QGraphicsScene(parent) { @@ -602,21 +600,6 @@ namespace Bloom::Widgets this->state.hoveredByteItem = &byteItem; - const auto addressHex = "0x" + QString::number( - byteItem.startAddress, - 16 - ).rightJustified(8, '0').toUpper(); - - const auto relativeAddress = byteItem.startAddress - this->state.memoryDescriptor.addressRange.startAddress; - const auto relativeAddressHex = "0x" + QString::number( - relativeAddress, - 16 - ).rightJustified(8, '0').toUpper(); - - this->hoveredAddressLabel->setText( - "Relative Address / Absolute Address: " + relativeAddressHex + " / " + addressHex - ); - if (this->state.settings.highlightHoveredRowAndCol) { const auto byteItemScenePos = byteItem.position(); this->hoverRectX->setPos(0, byteItemScenePos.y()); @@ -630,6 +613,7 @@ namespace Bloom::Widgets } this->update(); + emit this->hoveredAddress(byteItem.startAddress); } void ItemGraphicsScene::onByteItemLeave() { @@ -637,11 +621,11 @@ namespace Bloom::Widgets this->state.hoveredByteItem = nullptr; } - this->hoveredAddressLabel->setText("Relative Address / Absolute Address:"); - this->hoverRectX->setVisible(false); this->hoverRectY->setVisible(false); this->update(); + + emit this->hoveredAddress(std::nullopt); } void ItemGraphicsScene::clearSelectionRectItem() { diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.hpp index dbc71ccc..93261418 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsScene.hpp @@ -48,7 +48,6 @@ namespace Bloom::Widgets std::vector& focusedMemoryRegions, std::vector& excludedMemoryRegions, HexViewerWidgetSettings& settings, - Label* hoveredAddressLabel, QGraphicsView* parent ); @@ -64,6 +63,7 @@ namespace Bloom::Widgets signals: void ready(); + void hoveredAddress(const std::optional& address); protected: bool event(QEvent* event) override; @@ -96,7 +96,6 @@ namespace Bloom::Widgets Targets::TargetState targetState = Targets::TargetState::UNKNOWN; QGraphicsView* parent = nullptr; - Label* hoveredAddressLabel = nullptr; ByteAddressContainer* byteAddressContainer = nullptr; diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.cpp index 6eb35438..745d6a89 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.cpp @@ -12,7 +12,6 @@ namespace Bloom::Widgets std::vector& focusedMemoryRegions, std::vector& excludedMemoryRegions, HexViewerWidgetSettings& settings, - Label* hoveredAddressLabel, QWidget* parent ) : QGraphicsView(parent) @@ -34,7 +33,6 @@ namespace Bloom::Widgets focusedMemoryRegions, excludedMemoryRegions, settings, - hoveredAddressLabel, this ); diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.hpp index 88a90302..62452651 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/ItemGraphicsView.hpp @@ -23,7 +23,6 @@ namespace Bloom::Widgets std::vector& focusedMemoryRegions, std::vector& excludedMemoryRegions, HexViewerWidgetSettings& settings, - Label* hoveredAddressLabel, QWidget* parent ); diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/UiFiles/HexViewerWidget.ui b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/UiFiles/HexViewerWidget.ui index eaa43bd3..67bd58c3 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/UiFiles/HexViewerWidget.ui +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetMemoryInspectionPane/HexViewerWidget/UiFiles/HexViewerWidget.ui @@ -207,7 +207,7 @@ - 3 + 0 0 @@ -215,7 +215,7 @@ - Relative Address / Absolute Address: + Relative address / Absolute address: