diff --git a/src/calibre/gui2/dialogs/quickview.py b/src/calibre/gui2/dialogs/quickview.py index 97feb46dc5..b9386ba2a7 100644 --- a/src/calibre/gui2/dialogs/quickview.py +++ b/src/calibre/gui2/dialogs/quickview.py @@ -490,7 +490,9 @@ class Quickview(QDialog, Ui_Quickview): self.indicate_no_items() def is_category(self, key): - return key is not None and self.fm[key]['is_category'] + return key is not None and (self.fm[key]['is_category'] or + (self.fm[key]['datatype'] == 'composite' and + self.fm[key]['display'].get('make_category', False))) def _refresh(self, book_id, key): ''' diff --git a/src/calibre/utils/formatter_functions.py b/src/calibre/utils/formatter_functions.py index 720a563f40..e0513c2922 100644 --- a/src/calibre/utils/formatter_functions.py +++ b/src/calibre/utils/formatter_functions.py @@ -1306,16 +1306,9 @@ class BuiltinListUnion(BuiltinFormatterFunction): aliases = ['merge_lists'] def evaluate(self, formatter, kwargs, mi, locals, list1, list2, separator): - res = [l.strip() for l in list1.split(separator) if l.strip()] - l2 = [l.strip() for l in list2.split(separator) if l.strip()] - lcl1 = {icu_lower(l) for l in res} - - for i in l2: - if icu_lower(i) not in lcl1 and i not in res: - res.append(i) - if separator == ',': - return ', '.join(res) - return separator.join(res) + res = {icu_lower(l.strip()): l.strip() for l in list2.split(separator) if l.strip()} + res.update({icu_lower(l.strip()): l.strip() for l in list1.split(separator) if l.strip()}) + return separator.join(res.values()) class BuiltinListDifference(BuiltinFormatterFunction):