@@ -300,43 +300,6 @@ void TTDMemoryQueryWidget::updateColumnVisibility()
300300 }
301301}
302302
303- TTDMemoryQueryWidget::LogicalColumn TTDMemoryQueryWidget::getLogicalColumnFromVisual (int visualColumn) const
304- {
305- if (visualColumn < 0 || visualColumn >= m_resultsTable->columnCount ())
306- return static_cast <LogicalColumn>(-1 ); // Invalid
307-
308- int currentVisualIndex = 0 ;
309- for (int logicalIndex = 0 ; logicalIndex < m_columnVisibility.size (); ++logicalIndex)
310- {
311- if (m_columnVisibility[logicalIndex]) // Column is visible
312- {
313- if (currentVisualIndex == visualColumn)
314- return static_cast <LogicalColumn>(logicalIndex);
315- currentVisualIndex++;
316- }
317- }
318-
319- return static_cast <LogicalColumn>(-1 ); // Not found
320- }
321-
322- int TTDMemoryQueryWidget::getVisualColumnFromLogical (LogicalColumn logicalColumn) const
323- {
324- if (logicalColumn < 0 || logicalColumn >= m_columnVisibility.size ())
325- return -1 ; // Invalid
326-
327- if (!m_columnVisibility[logicalColumn])
328- return -1 ; // Column is hidden
329-
330- int visualIndex = 0 ;
331- for (int i = 0 ; i < logicalColumn; ++i)
332- {
333- if (m_columnVisibility[i]) // Column is visible
334- visualIndex++;
335- }
336-
337- return visualIndex;
338- }
339-
340303void TTDMemoryQueryWidget::performQuery ()
341304{
342305 if (!m_controller || !m_controller->IsTTD ())
@@ -458,15 +421,11 @@ void TTDMemoryQueryWidget::onCellDoubleClicked(int row, int column)
458421 // Handle double-click events - navigate to address or position
459422 if (row < 0 || row >= m_resultsTable->rowCount ())
460423 return ;
461-
462- // Get the logical column type from the visual column index
463- LogicalColumn logicalColumn = getLogicalColumnFromVisual (column);
464-
465- if (logicalColumn == TimeStartColumn)
424+
425+ if (column == TimeStartColumn || column == TimeEndColumn)
466426 {
467427 // Parse position and navigate to it
468- int timeStartVisualColumn = getVisualColumnFromLogical (TimeStartColumn);
469- QTableWidgetItem* posItem = m_resultsTable->item (row, timeStartVisualColumn);
428+ QTableWidgetItem* posItem = m_resultsTable->item (row, column);
470429 if (posItem && m_controller)
471430 {
472431 QString posStr = posItem->text ();
@@ -482,25 +441,20 @@ void TTDMemoryQueryWidget::onCellDoubleClicked(int row, int column)
482441 TTDPosition pos (sequence, step);
483442 if (m_controller->SetTTDPosition (pos))
484443 {
485- // After time traveling, also navigate to the instruction pointer
486- int ipVisualColumn = getVisualColumnFromLogical (IPColumn);
487- if (ipVisualColumn >= 0 )
444+ QTableWidgetItem* ipItem = m_resultsTable->item (row, IPColumn);
445+ if (ipItem && m_data)
488446 {
489- QTableWidgetItem* ipItem = m_resultsTable-> item (row, ipVisualColumn );
490- if (ipItem && m_data )
447+ QString ipStr = ipItem-> text ( );
448+ if (ipStr. startsWith ( " 0x " , Qt::CaseInsensitive) )
491449 {
492- QString ipStr = ipItem->text ();
493- if (ipStr.startsWith (" 0x" , Qt::CaseInsensitive))
450+ bool ok;
451+ uint64_t ipAddress = ipStr.mid (2 ).toULongLong (&ok, 16 );
452+ if (ok)
494453 {
495- bool ok;
496- uint64_t ipAddress = ipStr.mid (2 ).toULongLong (&ok, 16 );
497- if (ok)
454+ ViewFrame* frame = ViewFrame::viewFrameForWidget (this );
455+ if (frame)
498456 {
499- ViewFrame* frame = ViewFrame::viewFrameForWidget (this );
500- if (frame)
501- {
502- frame->navigate (m_data, ipAddress);
503- }
457+ frame->navigate (m_data, ipAddress);
504458 }
505459 }
506460 }
@@ -515,7 +469,7 @@ void TTDMemoryQueryWidget::onCellDoubleClicked(int row, int column)
515469 }
516470 }
517471 }
518- else if (logicalColumn == AddressColumn || logicalColumn == IPColumn)
472+ else if (column == AddressColumn || column == IPColumn)
519473 {
520474 // Navigate to address in disassembly view
521475 QTableWidgetItem* addrItem = m_resultsTable->item (row, column);
0 commit comments