diff options
| author | Glenn Smith <glenn@vector35.com> | 2022-02-07 16:14:09 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2022-02-07 16:14:09 -0500 |
| commit | 077462c083af241bf654d87a8aaa776834f0e3dc (patch) | |
| tree | c87a20690b42973ded57927beeefb313886b8faa /examples | |
| parent | 8040830ef060f98801b797c58caba2848e36937c (diff) | |
Triage view: respect "prefer graph view" setting
Closes #2941
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/triage/exports.cpp | 8 | ||||
| -rw-r--r-- | examples/triage/headers.cpp | 26 | ||||
| -rw-r--r-- | examples/triage/imports.cpp | 13 | ||||
| -rw-r--r-- | examples/triage/view.cpp | 10 |
4 files changed, 52 insertions, 5 deletions
diff --git a/examples/triage/exports.cpp b/examples/triage/exports.cpp index 5ad63613..7b098dff 100644 --- a/examples/triage/exports.cpp +++ b/examples/triage/exports.cpp @@ -200,10 +200,16 @@ void ExportsTreeView::exportDoubleClicked(const QModelIndex& cur) ViewFrame* viewFrame = ViewFrame::viewFrameForWidget(this); if (viewFrame) { - if (m_data->GetAnalysisFunctionsForAddress(sym->GetAddress()).size() > 0) + if (BinaryNinja::Settings::Instance()->Get<bool>("ui.view.graph.preferred") && + viewFrame->getCurrentBinaryView() && + m_data->GetAnalysisFunctionsForAddress(sym->GetAddress()).size() > 0) + { viewFrame->navigate("Graph:" + viewFrame->getCurrentDataType(), sym->GetAddress()); + } else + { viewFrame->navigate("Linear:" + viewFrame->getCurrentDataType(), sym->GetAddress()); + } } } } diff --git a/examples/triage/headers.cpp b/examples/triage/headers.cpp index e327153e..1bd9d732 100644 --- a/examples/triage/headers.cpp +++ b/examples/triage/headers.cpp @@ -33,7 +33,18 @@ void NavigationAddressLabel::clickEvent() { ViewFrame* viewFrame = ViewFrame::viewFrameForWidget(this); if (viewFrame) - viewFrame->navigate("Linear:" + viewFrame->getCurrentDataType(), m_address); + { + if (BinaryNinja::Settings::Instance()->Get<bool>("ui.view.graph.preferred") && + viewFrame->getCurrentBinaryView() && + viewFrame->getCurrentBinaryView()->GetAnalysisFunctionsForAddress(m_address).size() > 0) + { + viewFrame->navigate("Graph:" + viewFrame->getCurrentDataType(), m_address); + } + else + { + viewFrame->navigate("Linear:" + viewFrame->getCurrentDataType(), m_address); + } + } } @@ -48,7 +59,18 @@ void NavigationCodeLabel::clickEvent() { ViewFrame* viewFrame = ViewFrame::viewFrameForWidget(this); if (viewFrame) - viewFrame->navigate("Graph:" + viewFrame->getCurrentDataType(), m_address); + { + if (BinaryNinja::Settings::Instance()->Get<bool>("ui.view.graph.preferred") && + viewFrame->getCurrentBinaryView() && + viewFrame->getCurrentBinaryView()->GetAnalysisFunctionsForAddress(m_address).size() > 0) + { + viewFrame->navigate("Graph:" + viewFrame->getCurrentDataType(), m_address); + } + else + { + viewFrame->navigate("Linear:" + viewFrame->getCurrentDataType(), m_address); + } + } } diff --git a/examples/triage/imports.cpp b/examples/triage/imports.cpp index 79c1f35e..9102ba27 100644 --- a/examples/triage/imports.cpp +++ b/examples/triage/imports.cpp @@ -221,7 +221,18 @@ void ImportsTreeView::importDoubleClicked(const QModelIndex& cur) { ViewFrame* viewFrame = ViewFrame::viewFrameForWidget(this); if (viewFrame) - viewFrame->navigate("Linear:" + viewFrame->getCurrentDataType(), sym->GetAddress()); + { + if (BinaryNinja::Settings::Instance()->Get<bool>("ui.view.graph.preferred") && + viewFrame->getCurrentBinaryView() && + viewFrame->getCurrentBinaryView()->GetAnalysisFunctionsForAddress(sym->GetAddress()).size() > 0) + { + viewFrame->navigate("Graph:" + viewFrame->getCurrentDataType(), sym->GetAddress()); + } + else + { + viewFrame->navigate("Linear:" + viewFrame->getCurrentDataType(), sym->GetAddress()); + } + } } } diff --git a/examples/triage/view.cpp b/examples/triage/view.cpp index 8a85ba26..f8c3570f 100644 --- a/examples/triage/view.cpp +++ b/examples/triage/view.cpp @@ -185,8 +185,16 @@ void TriageView::navigateToFileOffset(uint64_t offset) return; if (!hasAddr) frame->navigate("Hex:Raw", offset); + else if (BinaryNinja::Settings::Instance()->Get<bool>("ui.view.graph.preferred") && + frame->getCurrentBinaryView() && + frame->getCurrentBinaryView()->GetAnalysisFunctionsForAddress(offset).size() > 0) + { + frame->navigate("Graph:" + frame->getCurrentDataType(), offset); + } else - frame->navigate("Linear:" + frame->getCurrentDataType(), addr); + { + frame->navigate("Linear:" + frame->getCurrentDataType(), offset); + } } else { |
