@@ -51,6 +51,7 @@ class NodeViewer(QtWidgets.QGraphicsView):
5151 node_selection_changed = QtCore .Signal (list , list )
5252 node_double_clicked = QtCore .Signal (str )
5353 data_dropped = QtCore .Signal (QtCore .QMimeData , QtCore .QPoint )
54+ context_menu_prompt = QtCore .Signal (str , object )
5455
5556 def __init__ (self , parent = None , undo_stack = None ):
5657 """
@@ -354,6 +355,8 @@ def contextMenuEvent(self, event):
354355 ctx_menu = None
355356 ctx_menus = self .context_menus ()
356357
358+ prompted_data = None , None
359+
357360 if ctx_menus ['nodes' ].isEnabled ():
358361 pos = self .mapToScene (self ._previous_pos )
359362 items = self ._items_near (pos )
@@ -365,10 +368,17 @@ def contextMenuEvent(self, event):
365368 for action in ctx_menu .actions ():
366369 if not action .menu ():
367370 action .node_id = node .id
371+ prompted_data = 'nodes' , node .id
372+
373+ if not ctx_menu :
374+ ctx_menu = ctx_menus ['graph' ]
375+ prompted_data = 'graph' , None
368376
369- ctx_menu = ctx_menu or ctx_menus ['graph' ]
370377 if len (ctx_menu .actions ()) > 0 :
371378 if ctx_menu .isEnabled ():
379+ self .context_menu_prompt .emit (
380+ prompted_data [0 ], prompted_data [1 ]
381+ )
372382 ctx_menu .exec_ (event .globalPos ())
373383 else :
374384 return super (NodeViewer , self ).contextMenuEvent (event )
0 commit comments