aboutsummaryrefslogtreecommitdiffstats
path: root/sb_builder/packages.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-20 11:39:21 +0200
committerDanilo M. <danix@danix.xyz>2026-10-20 11:39:21 +0200
commit48cbd81a2c674b7d65a82f986ed7ad12e2f6869f (patch)
tree818fbfb1bfe628d9b06c9a9a98a7aec257ddf94f /sb_builder/packages.py
parent867e21f99361c0c566b268006b558ab08256824b (diff)
downloadsb-builder-48cbd81a2c674b7d65a82f986ed7ad12e2f6869f.tar.gz
sb-builder-48cbd81a2c674b7d65a82f986ed7ad12e2f6869f.zip
Packages tab: a click anywhere on a row ticks or unticks it
Same as the Hints tab: the box is no longer user-checkable on its own and one clicked handler toggles the row, so no click counts twice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'sb_builder/packages.py')
-rw-r--r--sb_builder/packages.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/sb_builder/packages.py b/sb_builder/packages.py
index 3ccbf40..72b5f93 100644
--- a/sb_builder/packages.py
+++ b/sb_builder/packages.py
@@ -117,8 +117,8 @@ class Model(QAbstractTableModel):
return None
def flags(self, index):
- f = Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable
- return f | Qt.ItemFlag.ItemIsUserCheckable if index.column() == 0 else f
+ # not user-checkable: PackagesTab._toggle owns every click, the box's included
+ return Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable
def data(self, index, role=Qt.ItemDataRole.DisplayRole):
row, col = self.rows[index.row()], index.column()
@@ -243,6 +243,7 @@ class PackagesTab(QWidget):
for col, width in enumerate((28, 220, 110, 120, 120, 80)):
self.table.setColumnWidth(col, width)
self.table.selectionModel().currentRowChanged.connect(self.show_detail)
+ self.table.clicked.connect(self._toggle)
self.detail = QLabel(textFormat=Qt.TextFormat.RichText, wordWrap=True,
alignment=Qt.AlignmentFlag.AlignTop)
self.detail.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)
@@ -317,6 +318,13 @@ class PackagesTab(QWidget):
def update_count(self):
self.count.setText(f"{self.proxy.rowCount():,} shown · {len(self.model.checked)} selected")
+ def _toggle(self, index):
+ """A click anywhere on a row ticks or unticks it."""
+ box = index.siblingAtColumn(0)
+ on = box.data(Qt.ItemDataRole.CheckStateRole) == Qt.CheckState.Checked
+ self.proxy.setData(box, Qt.CheckState.Unchecked if on else Qt.CheckState.Checked,
+ Qt.ItemDataRole.CheckStateRole)
+
def select_visible(self):
for i in range(self.proxy.rowCount()):
self.model.checked.add(self.proxy.index(i, 0).data(Qt.ItemDataRole.UserRole)["name"])