Change logic for selection-based context menus

This commit is contained in:
DarkPhoenix
2019-04-23 15:58:42 +03:00
parent 53fe3242b9
commit 0679a0af0f

View File

@@ -296,8 +296,8 @@ class ContextMenuSingle(ContextMenu, metaclass=ABCMeta):
class ContextMenuSelection(ContextMenu, metaclass=ABCMeta):
"""
Should be used for context menus which depend on
which items are selected, but not which clicked.
Should be used for context menus which depend on which items are
selected. Item clicked is used as fallback if no selection provided.
"""
@abstractmethod
@@ -318,20 +318,30 @@ class ContextMenuSelection(ContextMenu, metaclass=ABCMeta):
return
def _baseDisplay(self, context, mainItem, selection):
selection = self.__getSelection(selection, mainItem)
return self.display(context, selection)
def _baseGetBitmap(self, context, mainItem, selection):
selection = self.__getSelection(selection, mainItem)
return self.getBitmap(context, selection)
def _baseGetText(self, context, mainItem, selection):
selection = self.__getSelection(selection, mainItem)
return self.getText(context, selection)
def _baseGetSubMenu(self, context, mainItem, selection, rootMenu, i, pitem):
selection = self.__getSelection(selection, mainItem)
return self.getSubMenu(context, selection, rootMenu, i, pitem)
def _baseActivate(self, fullContext, mainItem, selection, i):
selection = self.__getSelection(selection, mainItem)
return self.activate(fullContext, selection, i)
def __getSelection(self, selection, mainItem):
if len(selection) > 0:
return selection
return (mainItem,)
class ContextMenuCombined(ContextMenu, metaclass=ABCMeta):
"""