Edit book: Reports: Fix sorting by name of CSS rules

This commit is contained in:
Kovid Goyal 2025-07-23 10:13:07 +05:30
parent ecf422e450
commit 3b094d798c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -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):