diff --git a/src/calibre/gui2/tag_browser/view.py b/src/calibre/gui2/tag_browser/view.py index f35763f122..9dace785e9 100644 --- a/src/calibre/gui2/tag_browser/view.py +++ b/src/calibre/gui2/tag_browser/view.py @@ -782,11 +782,24 @@ class TagsView(QTreeView): # {{{ partial(self.context_menu_handler, action='search', search_state=TAG_SEARCH_STATES['mark_plus'], index=index)) + if add_child_search := (tag.is_hierarchical == '5state' and + len(tag_item.children)): + search_submenu.addAction(self.search_icon, + _('Search for %s and its children')%display_name(tag), + partial(self.context_menu_handler, action='search', + search_state=TAG_SEARCH_STATES['mark_plusplus'], + index=index)) search_submenu.addAction(self.search_icon, _('Search for everything but %s')%display_name(tag), partial(self.context_menu_handler, action='search', search_state=TAG_SEARCH_STATES['mark_minus'], index=index)) + if add_child_search: + search_submenu.addAction(self.search_icon, + _('Search for everything but %s and its children')%display_name(tag), + partial(self.context_menu_handler, action='search', + search_state=TAG_SEARCH_STATES['mark_minusminus'], + index=index)) if key == 'search': search_submenu.addAction(self.search_copy_icon, _('Search using saved search expression'),