Plugin token navigation callbacks can't override action availability

Open
#8,559 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
52/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
cpp

Research direction

Start by tracing the token activation path for Enter or the Activate Selection action, then compare it with the OnTokenDoubleClicked path and the fixed validity callback described in the report. Done means plugin-provided token navigation handling is reachable consistently through both double-click and activation, including tokens without built-in navigation.

Written by the indexing model from the issue text.

Description

Version and Platform (required):

  • Binary Ninja Version: 6.1.10679
  • Edition: Ultimate
  • OS: macOS
  • OS Version: 27.0
  • CPU Architecture: M5

Bug Description:
Plugins can currently override OnTokenDoubleClicked to perform custom handling of double-clicking tokens. The debugger uses this to provide custom handling of token navigation that is debugger aware. With the unified navigation between double-clicking and pressing Enter on a token, Enter also goes through this path. However, a press of Enter (or any other way of using the Activate Selection action) goes through the validity callback, which is fixed and cannot be overridden by plugins. If the original implementation says a token has associated navigation, it will pass through to a plugin, but one that was not marked as having navigation will never call into the plugin along the action path (double-clicking sidesteps this entire path and works in all cases). As it stands, double-click and Enter are not the same thing when a plugin adds functionality, as some kinds of additional token handling plugins provide may not be reachable using the Enter/Activate Selection path.

Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
4d 13h
Merged PRs (30d)
20

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Vector35/binaryninja-api

All issues in Vector35/binaryninja-api

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.