diff --git a/src/calibre/gui2/actions/__init__.py b/src/calibre/gui2/actions/__init__.py index 4f42a1d2bc..7b07cdf732 100644 --- a/src/calibre/gui2/actions/__init__.py +++ b/src/calibre/gui2/actions/__init__.py @@ -15,6 +15,8 @@ from calibre import prints from calibre.gui2 import Dispatcher from calibre.gui2.keyboard import NameConflict +def menu_action_unique_name(plugin, unique_name): + return u'%s : menu action : %s'%(plugin.unique_name, unique_name) class InterfaceAction(QObject): @@ -214,7 +216,7 @@ class InterfaceAction(QObject): if shortcut is not None and shortcut is not False: keys = ((shortcut,) if isinstance(shortcut, basestring) else tuple(shortcut)) - unique_name = '%s : menu action : %s'%(self.unique_name, unique_name) + unique_name = menu_action_unique_name(self, unique_name) if description is not None: ac.setToolTip(description) ac.setStatusTip(description) diff --git a/src/calibre/gui2/keyboard.py b/src/calibre/gui2/keyboard.py index 6413b216ce..9b0b1d8f69 100644 --- a/src/calibre/gui2/keyboard.py +++ b/src/calibre/gui2/keyboard.py @@ -116,6 +116,11 @@ class Manager(QObject): # {{{ done unregistering. ''' self.shortcuts.pop(unique_name, None) + for group in self.groups.itervalues(): + try: + group.remove(unique_name) + except ValueError: + pass def finalize(self): custom_keys_map = {un:tuple(keys) for un, keys in self.config.get(