@@ -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)
747753TTDMemoryWidget::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
825831void 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
0 commit comments