diff --git a/pyqtgraph/GraphicsScene/GraphicsScene.py b/pyqtgraph/GraphicsScene/GraphicsScene.py
index 8729d08554df1e9c0762e4e25aaac63337170787..6850371a3fd5c42d5cf9bac20c35d95ea7377453 100644
--- a/pyqtgraph/GraphicsScene/GraphicsScene.py
+++ b/pyqtgraph/GraphicsScene/GraphicsScene.py
@@ -489,7 +489,7 @@ class GraphicsScene(QtGui.QGraphicsScene):
                     #return v
         #else:
             #return widget
-        
+
     def addParentContextMenus(self, item, menu, event):
         """
         Can be called by any item in the scene to expand its context menu to include parent context menus.
@@ -519,30 +519,21 @@ class GraphicsScene(QtGui.QGraphicsScene):
         event           The original event that triggered the menu to appear.
         ==============  ==================================================
         """
-        
-        #items = self.itemsNearEvent(ev)
+
         menusToAdd = []
         while item is not self:
             item = item.parentItem()
-            
             if item is None:
                 item = self
-                
-            if not hasattr(item, "getContextMenus"):
-                continue
-            
-            subMenus = item.getContextMenus(event)
-            if subMenus is None:
-                continue
-            if type(subMenus) is not list: ## so that some items (like FlowchartViewBox) can return multiple menus
-                subMenus = [subMenus]
-            
-            for sm in subMenus:
-                menusToAdd.append(sm)
-        
-        if len(menusToAdd) > 0:
+            subMenus = item.getContextMenus(event) or []
+            if isinstance(subMenus, list): ## so that some items (like FlowchartViewBox) can return multiple menus
+                menusToAdd.extend(subMenus)
+            else:
+                menusToAdd.append(subMenus)
+
+        if menusToAdd:
             menu.addSeparator()
-            
+
         for m in menusToAdd:
             if isinstance(m, QtGui.QMenu):
                 menu.addMenu(m)
diff --git a/pyqtgraph/flowchart/Node.py b/pyqtgraph/flowchart/Node.py
index cd73b42ba149cd0f6552864e4c63d808c74dfd8f..f1de40d665fe2c0b1b977ca41e48f5988a2b8664 100644
--- a/pyqtgraph/flowchart/Node.py
+++ b/pyqtgraph/flowchart/Node.py
@@ -617,9 +617,6 @@ class NodeGraphicsItem(GraphicsObject):
 
     def getMenu(self):
         return self.menu
-
-    def getContextMenus(self, event):
-        return [self.menu]
     
     def raiseContextMenu(self, ev):
         menu = self.scene().addParentContextMenus(self, self.getMenu(), ev)
diff --git a/pyqtgraph/flowchart/Terminal.py b/pyqtgraph/flowchart/Terminal.py
index 45805cd87edaaac853659a1b2fd2d84834470a5b..fea60dee367e44e87e510b0e6d518ca16866ebe3 100644
--- a/pyqtgraph/flowchart/Terminal.py
+++ b/pyqtgraph/flowchart/Terminal.py
@@ -436,10 +436,6 @@ class TerminalGraphicsItem(GraphicsObject):
     def toggleMulti(self):
         multi = self.menu.multiAct.isChecked()
         self.term.setMultiValue(multi)
-        
-    ## probably never need this
-    #def getContextMenus(self, ev):
-        #return [self.getMenu()]
     
     def removeSelf(self):
         self.term.node().removeTerminal(self.term)
diff --git a/pyqtgraph/graphicsItems/GraphicsItem.py b/pyqtgraph/graphicsItems/GraphicsItem.py
index a129436ea871093279e18ec83ff13fc93c6545f6..19cddd8a146124da81efc086b002aeabaef4a804 100644
--- a/pyqtgraph/graphicsItems/GraphicsItem.py
+++ b/pyqtgraph/graphicsItems/GraphicsItem.py
@@ -585,3 +585,6 @@ class GraphicsItem(object):
     #def update(self):
         #self._qtBaseClass.update(self)
         #print "Update:", self
+
+    def getContextMenus(self, event):
+        return [self.getMenu()] if hasattr(self, "getMenu") else []
diff --git a/pyqtgraph/graphicsItems/ROI.py b/pyqtgraph/graphicsItems/ROI.py
index f6ce468006b7c0560b1cff787d155ff117ca5a41..cb5f4f3064ca78cc59aaee72555ac08822cd0565 100644
--- a/pyqtgraph/graphicsItems/ROI.py
+++ b/pyqtgraph/graphicsItems/ROI.py
@@ -1202,11 +1202,7 @@ class Handle(UIGraphicsItem):
         
     def getMenu(self):
         return self.menu
-                
-            
-    def getContextMenus(self, event):
-        return [self.menu]
-    
+
     def raiseContextMenu(self, ev):
         menu = self.scene().addParentContextMenus(self, self.getMenu(), ev)
         
diff --git a/pyqtgraph/graphicsItems/ViewBox/ViewBox.py b/pyqtgraph/graphicsItems/ViewBox/ViewBox.py
index 6e0a20d2addef1d5da4fbc9d3d1402cf4ae56bc2..c60923b087636fe3ada118792e851da861dab8bf 100644
--- a/pyqtgraph/graphicsItems/ViewBox/ViewBox.py
+++ b/pyqtgraph/graphicsItems/ViewBox/ViewBox.py
@@ -1064,12 +1064,7 @@ class ViewBox(GraphicsWidget):
         return self.menu
 
     def getContextMenus(self, event):
-        if self.menuEnabled():
-            return self.menu.subMenus()
-        else:
-            return None
-        #return [self.getMenu(event)]
-        
+        return self.menu.actions() if self.menuEnabled() else []
 
     def mouseDragEvent(self, ev, axis=None):
         ## if axis is specified, event will only affect that axis.
diff --git a/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py b/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py
index 99c3c3fb19267372274212facaaa5d32b93bb0d5..15d0be069357b82d222eefdf366106fe97098cf5 100644
--- a/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py
+++ b/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py
@@ -88,22 +88,6 @@ class ViewBoxMenu(QtGui.QMenu):
         
         self.updateState()
 
-    #def copy(self):
-        #m = QtGui.QMenu()
-        #for sm in self.subMenus():
-            #if isinstance(sm, QtGui.QMenu):
-                #m.addMenu(sm)
-            #else:
-                #m.addAction(sm)
-        #m.setTitle(self.title())
-        #return m
-
-    def subMenus(self):
-        if not self.valid:
-            self.updateState()
-        return [self.viewAll] + self.axes + [self.leftMenu]
-
-
     def setExportMethods(self, methods):
         self.exportMethods = methods
         self.export.clear()