From 3b094d798c7e6633ebc12e2ec236b3a21a04fbf1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 23 Jul 2025 10:13:07 +0530 Subject: [PATCH] Edit book: Reports: Fix sorting by name of CSS rules --- src/calibre/gui2/tweak_book/reports.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/tweak_book/reports.py b/src/calibre/gui2/tweak_book/reports.py index b1122b73d8..f99a607892 100644 --- a/src/calibre/gui2/tweak_book/reports.py +++ b/src/calibre/gui2/tweak_book/reports.py @@ -1018,12 +1018,14 @@ class CSSRulesModel(QAbstractItemModel): return 1 def data(self, index, role=Qt.ItemDataRole.DisplayRole): + if index.column() != 0: + return if role == SORT_ROLE: entry = self.index_to_entry(index) if isinstance(entry, CSSEntry): - return entry.count if self.sort_on_count else entry.sort_key + return entry.count if self.sort_on_count else QByteArray(entry.sort_key) if isinstance(entry, CSSFileMatch): - return len(entry.locations) if self.sort_on_count else entry.sort_key + return len(entry.locations) if self.sort_on_count else QByteArray(entry.sort_key) if isinstance(entry, MatchLocation): return entry.sourceline elif role == Qt.ItemDataRole.DisplayRole: @@ -1099,6 +1101,7 @@ class CSSWidget(QWidget): e.setClearButtonEnabled(True) self.model = m = self.MODEL(self) self.proxy = p = self.PROXY(self) + m.sort_on_count = self.read_state('sort-on-counts', True) p.setSourceModel(m) self.view = f = QTreeView(self) f.setAlternatingRowColors(True) @@ -1111,10 +1114,10 @@ class CSSWidget(QWidget): l.addLayout(h) h.addWidget(QLabel(_('Sort by:'))) self.counts_button = b = QRadioButton(_('&Counts'), self) - b.setChecked(self.read_state('sort-on-counts', True)) + b.setChecked(m.sort_on_count) h.addWidget(b) self.name_button = b = QRadioButton(_('&Name'), self) - b.setChecked(not self.read_state('sort-on-counts', True)) + b.setChecked(not m.sort_on_count) h.addWidget(b) b.toggled.connect(self.resort) h.addStrut(20) @@ -1241,9 +1244,9 @@ class ClassesModel(CSSRulesModel): if role == SORT_ROLE: entry = self.index_to_entry(index) if isinstance(entry, ClassEntry): - return entry.num_of_matches if self.sort_on_count else entry.sort_key + return entry.num_of_matches if self.sort_on_count else QByteArray(entry.sort_key) if isinstance(entry, ClassFileMatch): - return len(entry.class_elements) if self.sort_on_count else entry.sort_key + return len(entry.class_elements) if self.sort_on_count else QByteArray(entry.sort_key) if isinstance(entry, ClassElement): return entry.line_number if isinstance(entry, CSSRule):