in client/securedrop_client/gui/widgets.py [0:0]
def _on_item_selection_changed(self) -> None:
"""
0..n items may be selected. If multiple items are selected, to avoid confusion,
don't preview any individual source conversation, but instead show a contextual message.
"""
logger.debug(f"{len(self.selectedItems())} selected")
selected = []
for item in self.selectedItems():
widget = self.itemWidget(item)
if isinstance(widget, SourceWidget):
selected.append(widget.source)
# Show conversation view if one source selected
if len(selected) == 1:
source = self.get_selected_source()
if source:
self.source_selection_changed.emit(state.SourceId(source.uuid))
else:
self.source_selection_cleared.emit()
# Update listeners (action toolbar) with current selection
self.selected_sources.emit(selected)