Skip to content

Commit 578df22

Browse files
Copilotxusheng6
andcommitted
Fix TTD Memory widget to reuse unused tabs instead of always creating new ones
Co-authored-by: xusheng6 <[email protected]>
1 parent d5c01c8 commit 578df22

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

ui/ttdmemorywidget.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,12 @@ void TTDMemoryQueryWidget::setParametersAndQuery(uint64_t startAddr, uint64_t en
743743
performQuery();
744744
}
745745

746+
bool TTDMemoryQueryWidget::isUnused() const
747+
{
748+
// Consider a tab unused if it has no results
749+
return m_resultsTable->rowCount() == 0;
750+
}
751+
746752
// TTDMemoryWidget implementation (tab container)
747753
TTDMemoryWidget::TTDMemoryWidget(QWidget* parent, BinaryViewRef data)
748754
: QWidget(parent), m_data(data)
@@ -824,12 +830,22 @@ void TTDMemoryWidget::setParametersAndQuery(uint64_t startAddr, uint64_t endAddr
824830

825831
void TTDMemoryWidget::setParametersAndQueryInNewTab(uint64_t startAddr, uint64_t endAddr, TTDMemoryAccessType accessType)
826832
{
827-
// Always create a new tab for context menu actions
828-
createNewTab();
829-
TTDMemoryQueryWidget* queryWidget = qobject_cast<TTDMemoryQueryWidget*>(m_tabWidget->currentWidget());
830-
if (queryWidget)
833+
// Check if the current tab is unused - if so, reuse it instead of creating a new tab
834+
TTDMemoryQueryWidget* currentWidget = qobject_cast<TTDMemoryQueryWidget*>(m_tabWidget->currentWidget());
835+
if (currentWidget && currentWidget->isUnused())
831836
{
832-
queryWidget->setParametersAndQuery(startAddr, endAddr, accessType);
837+
// Reuse the current unused tab
838+
currentWidget->setParametersAndQuery(startAddr, endAddr, accessType);
839+
}
840+
else
841+
{
842+
// Create a new tab since the current one is already in use
843+
createNewTab();
844+
TTDMemoryQueryWidget* queryWidget = qobject_cast<TTDMemoryQueryWidget*>(m_tabWidget->currentWidget());
845+
if (queryWidget)
846+
{
847+
queryWidget->setParametersAndQuery(startAddr, endAddr, accessType);
848+
}
833849
}
834850
}
835851

ui/ttdmemorywidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@ class TTDMemoryQueryWidget : public QWidget
120120

121121
// Method to set parameters and execute query from context menu
122122
void setParametersAndQuery(uint64_t startAddr, uint64_t endAddr, TTDMemoryAccessType accessType);
123+
124+
// Method to check if this tab is unused (no results and default parameters)
125+
bool isUnused() const;
123126

124127
private Q_SLOTS:
125128
void performQuery();

0 commit comments

Comments
 (0)