Skip to content

Commit 9e488af

Browse files
Rigo Da Silvajonathanslenders
authored andcommitted
Added Mouse Support
Adding mouse support for radio list
1 parent a08fbe7 commit 9e488af

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

prompt_toolkit/widgets/base.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from prompt_toolkit.layout.margins import ScrollbarMargin, NumberedMargin
3333
from prompt_toolkit.layout.processors import PasswordProcessor, ConditionalProcessor, BeforeInput, AppendAutoSuggestion
3434
from prompt_toolkit.lexers import DynamicLexer
35-
from prompt_toolkit.mouse_events import MouseEventType
35+
from prompt_toolkit.mouse_events import MouseEventType, MouseEvent
3636
from prompt_toolkit.utils import get_cwidth
3737
from prompt_toolkit.keys import Keys
3838

@@ -615,7 +615,9 @@ def _(event):
615615
self.control = FormattedTextControl(
616616
self._get_text_fragments,
617617
key_bindings=kb,
618-
focusable=True)
618+
focusable=True,
619+
620+
)
619621

620622
self.window = Window(
621623
content=self.control,
@@ -626,6 +628,12 @@ def _(event):
626628
dont_extend_height=True)
627629

628630
def _get_text_fragments(self):
631+
632+
def mouse_handler(mouse_event: MouseEvent):
633+
if mouse_event.event_type == MouseEventType.MOUSE_UP:
634+
self._selected_index = mouse_event.position.y
635+
self.current_value = self.values[self._selected_index][0]
636+
629637
result = []
630638
for i, value in enumerate(self.values):
631639
checked = (value[0] == self.current_value)
@@ -643,14 +651,14 @@ def _get_text_fragments(self):
643651
result.append(('[SetCursorPosition]', ''))
644652

645653
if checked:
646-
result.append((style, '*'))
654+
result.append((style, '*', mouse_handler))
647655
else:
648-
result.append((style, ' '))
656+
result.append((style, ' ', mouse_handler))
649657

650-
result.append((style, ')'))
651-
result.append(('class:radio', ' '))
658+
result.append((style, ')', mouse_handler))
659+
result.append(('class:radio', ' ', mouse_handler))
652660
result.extend(to_formatted_text(value[1], style='class:radio'))
653-
result.append(('', '\n'))
661+
result.append(('', '\n', mouse_handler))
654662

655663
result.pop() # Remove last newline.
656664
return result

0 commit comments

Comments
 (0)