def _on_item_selection_changed()

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)