diff --git a/src/calibre/gui2/tag_browser/view.py b/src/calibre/gui2/tag_browser/view.py index 59a1b48b42..5239baf23b 100644 --- a/src/calibre/gui2/tag_browser/view.py +++ b/src/calibre/gui2/tag_browser/view.py @@ -884,12 +884,29 @@ class TagsView(QTreeView): # {{{ partial(self.context_menu_handler, action='delete_user_category', key=key)) self.context_menu.addSeparator() + # Add searches for temporary first letter nodes + if self._model.collapse_model == 'first letter' and \ + tag_item.temporary and not key.startswith('@'): + self.context_menu.addSeparator() + search_submenu = self.context_menu.addMenu(_('Search')) + search_submenu.addAction(self.search_icon, + _('Search for %s')%display_name(tag_item.tag), + partial(self.context_menu_handler, action='search', + search_state=TAG_SEARCH_STATES['mark_plus'], + index=index)) + search_submenu.addAction(self.search_icon, + _('Search for everything but %s')%display_name(tag_item.tag), + partial(self.context_menu_handler, action='search', + search_state=TAG_SEARCH_STATES['mark_minus'], + index=index)) # search by category. Some categories are not searchable, such # as search and news if item.tag.is_searchable: if search_submenu is None: search_submenu = self.context_menu.addMenu(_('Search')) self.context_menu.addSeparator() + else: + search_submenu.addSeparator() search_submenu.addAction(self.search_icon, _('Search for books in category %s')%category, partial(self.context_menu_handler,