def point_to_row(self, p: QPointF) -> int | None:
        """
        Return index of row containing point `p`, or None if the point is not contained.
        """
        row = int(p.y() / self.row_height)
        return row if row < self.num_rows else None

        Return index of row containing point `p`, or None if the point is not contained.
        
angrmanagement/ui/views/hex_view.py