summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2022-02-07 16:14:09 -0500
committerGlenn Smith <glenn@vector35.com>2022-02-07 16:14:09 -0500
commit077462c083af241bf654d87a8aaa776834f0e3dc (patch)
treec87a20690b42973ded57927beeefb313886b8faa /examples
parent8040830ef060f98801b797c58caba2848e36937c (diff)
Triage view: respect "prefer graph view" setting
Closes #2941
Diffstat (limited to 'examples')
-rw-r--r--examples/triage/exports.cpp8
-rw-r--r--examples/triage/headers.cpp26
-rw-r--r--examples/triage/imports.cpp13
-rw-r--r--examples/triage/view.cpp10
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
{