How do I add individual context menus (shown upon secondary mouse click) to various components of a graphics object without needing to go into edit mode?
Consider the following example:
Graphics[{Style[Disk[{0, 0}],
ContextMenu -> {
MenuItem["Color", KernelExecute[Print[Black]], MenuEvaluator -> Automatic],
MenuItem["Shape", KernelExecute[Print["Circle"]], MenuEvaluator -> Automatic]}],
Red, Style[Disk[{1, 1}],
ContextMenu -> {
MenuItem["Number 1", KernelExecute[Print[1]], MenuEvaluator -> Automatic],
MenuItem["Number 2", KernelExecute[Print[2]], MenuEvaluator -> Automatic]}]}]
Right clicking on the output graphics object does not trigger the appropriate shape-dependent context menu. Instead I get the built-in context menu associated with the whole graphics object:

Instead, I have to go into graphics edit mode by double-clicking before right clicking correctly produces the appropriate context menu.

What do I need to do produce the correct context menu based on the mouse positioned over the appropriate shape without requiring me to go into edit mode? The solution should work when Deploy is applied to the whole Graphics. Further, I need it so that right-clicking outside either shape should not trigger the built-in context menu, and should not produce any menu at all. Undocumented solutions especially involving "EventHandler", FE`Evaluate, ... and friends are welcome.


EventHandler[..., {"MouseClicked", 2}:> (show context menu)], even if this exact approach is unavailable. – QuantumDot Aug 19 '22 at 17:46