MCPcopy Create free account
hub / github.com/Vector35/debugger / onDoubleClicked

Method onDoubleClicked

ui/threadframes.cpp:674–745  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

672
673
674void ThreadFramesWidget::onDoubleClicked()
675{
676 QModelIndexList sel = selectionModel()->selectedIndexes();
677 if (sel.empty())
678 return;
679
680 auto column = sel[0].column();
681
682 if (column == ThreadFrameModel::FrameIndexColumn || column == ThreadFrameModel::ModuleColumn)
683 return;
684
685 FrameItem* frameItem = static_cast<FrameItem*>(sel[0].internalPointer());
686 if (!frameItem)
687 return;
688
689 if (!frameItem->isFrame() && column > ThreadFrameModel::ThreadColumn)
690 return;
691
692 if (frameItem->isFrame() && column <= ThreadFrameModel::ThreadColumn)
693 return;
694
695 // Double clicking on thread column changes active thread
696 if (!frameItem->isFrame() && column == ThreadFrameModel::ThreadColumn)
697 {
698 uint32_t tid = frameItem->tid();
699 uint32_t currentTid = m_debugger->GetActiveThread().m_tid;
700
701 if (tid != currentTid && !m_debugger->IsRunning())
702 m_debugger->SetActiveThread(tid);
703
704 return;
705 }
706
707 // double clicking on state column toggles thread state
708 if (!frameItem->isFrame() && column == ThreadFrameModel::StateColumn)
709 {
710 if (frameItem->isFrozen())
711 m_debugger->ResumeThread(frameItem->tid());
712 else
713 m_debugger->SuspendThread(frameItem->tid());
714
715 return;
716 }
717
718 uint64_t addrToJump = 0;
719 switch (column)
720 {
721 case ThreadFrameModel::FunctionColumn:
722 case ThreadFrameModel::PcColumn:
723 addrToJump = frameItem->framePc();
724 break;
725 case ThreadFrameModel::SpColumn:
726 addrToJump = frameItem->sp();
727 break;
728 case ThreadFrameModel::FpColumn:
729 addrToJump = frameItem->fp();
730 break;
731 }

Callers

nothing calls this directly

Calls 13

isFrameMethod · 0.80
tidMethod · 0.80
isFrozenMethod · 0.80
framePcMethod · 0.80
spMethod · 0.80
fpMethod · 0.80
GetActiveThreadMethod · 0.45
IsRunningMethod · 0.45
SetActiveThreadMethod · 0.45
ResumeThreadMethod · 0.45
SuspendThreadMethod · 0.45
GetLiveViewMethod · 0.45

Tested by

no test coverage detected