From 34b3987ded73f18ab2cd0aab2f687d6107ce2a4a Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Mon, 14 Aug 2023 18:02:39 +0200 Subject: [PATCH] Added error handling to micron parser mouse event translator. Fixes #32. --- nomadnet/ui/textui/MicronParser.py | 68 ++++++++++++++++-------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/nomadnet/ui/textui/MicronParser.py b/nomadnet/ui/textui/MicronParser.py index f549509..3885a15 100644 --- a/nomadnet/ui/textui/MicronParser.py +++ b/nomadnet/ui/textui/MicronParser.py @@ -751,41 +751,45 @@ class LinkableText(urwid.Text): return x, y def mouse_event(self, size, event, button, x, y, focus): - if button != 1 or not is_mouse_press(event): - return False - else: - (maxcol,) = size - translation = self.get_line_translation(maxcol) - line_offset = 0 - - if self.align == "center": - line_offset = translation[y][1][1]-translation[y][0][0] - if x < translation[y][0][0]: - x = translation[y][0][0] - - if x > translation[y][1][0]+translation[y][0][0]: - x = translation[y][1][0]+translation[y][0][0] - - elif self.align == "right": - line_offset = translation[y][1][1]-translation[y][0][0] - if x < translation[y][0][0]: - x = translation[y][0][0] - + try: + if button != 1 or not is_mouse_press(event): + return False else: - line_offset = translation[y][0][1] - if x > translation[y][0][0]: - x = translation[y][0][0] + (maxcol,) = size + translation = self.get_line_translation(maxcol) + line_offset = 0 - pos = line_offset+x + if self.align == "center": + line_offset = translation[y][1][1]-translation[y][0][0] + if x < translation[y][0][0]: + x = translation[y][0][0] - self._cursor_position = pos - item = self.find_item_at_pos(self._cursor_position) + if x > translation[y][1][0]+translation[y][0][0]: + x = translation[y][1][0]+translation[y][0][0] - if item != None: - if isinstance(item, LinkSpec): - self.handle_link(item.link_target, item.link_fields) + elif self.align == "right": + line_offset = translation[y][1][1]-translation[y][0][0] + if x < translation[y][0][0]: + x = translation[y][0][0] - self._invalidate() - self._emit("change") + else: + line_offset = translation[y][0][1] + if x > translation[y][0][0]: + x = translation[y][0][0] + + pos = line_offset+x + + self._cursor_position = pos + item = self.find_item_at_pos(self._cursor_position) + + if item != None: + if isinstance(item, LinkSpec): + self.handle_link(item.link_target, item.link_fields) + + self._invalidate() + self._emit("change") + + return True - return True \ No newline at end of file + except Exception as e: + return False \ No newline at end of file