From 95d0d163d77ae9eb4dcf95c14a2be378f7201c9f Mon Sep 17 00:00:00 2001 From: miskatul-anwar Date: Mon, 24 Aug 2026 00:51:38 +0600 Subject: [PATCH 1/2] fix(picker): prevent marking disabled options in mark_index --- src/pick/__init__.py | 3 +++ tests/test_pick.py | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/pick/__init__.py b/src/pick/__init__.py index d9535a8..6858644 100644 --- a/src/pick/__init__.py +++ b/src/pick/__init__.py @@ -104,6 +104,9 @@ def move_down(self) -> None: def mark_index(self) -> None: if self.multiselect: + option = self.options[self.index] + if isinstance(option, Option) and not option.enabled: + return if self.index in self.selected_indexes: self.selected_indexes.remove(self.index) else: diff --git a/tests/test_pick.py b/tests/test_pick.py index acec4c3..1da2f8a 100644 --- a/tests/test_pick.py +++ b/tests/test_pick.py @@ -77,3 +77,12 @@ def test_disabled_option(): assert picker.get_selected() == (Option("option1"), 0) picker.move_down() assert picker.get_selected() == (Option("option3"), 2) + + +def test_mark_index_disabled_option(): + options = [Option("option1"), Option("option2", enabled=False), Option("option3")] + picker = Picker(options, multiselect=True) + picker.index = 1 # Point directly to disabled option2 + picker.mark_index() + assert picker.get_selected() == [] # Disabled option should NOT be marked + From c4a52795e400f2dfc3b4bfacecc08aff5e5dfcc8 Mon Sep 17 00:00:00 2001 From: miskatul-anwar Date: Sat, 29 Aug 2026 17:37:30 +0600 Subject: [PATCH 2/2] style(tests): remove trailing newline at EOF in test_pick.py --- tests/test_pick.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_pick.py b/tests/test_pick.py index 1da2f8a..759d086 100644 --- a/tests/test_pick.py +++ b/tests/test_pick.py @@ -85,4 +85,3 @@ def test_mark_index_disabled_option(): picker.index = 1 # Point directly to disabled option2 picker.mark_index() assert picker.get_selected() == [] # Disabled option should NOT be marked -