fix: Improve error handling and reduce timeout in main event loop
This commit is contained in:
parent
d22b9ff5b9
commit
c1605e99cd
31
gtm2.py
31
gtm2.py
|
|
@ -544,6 +544,7 @@ def handle_keyboard_input(key, state):
|
||||||
def main(stdscr, filename, show_diff, show_add, show_del, mouse):
|
def main(stdscr, filename, show_diff, show_add, show_del, mouse):
|
||||||
curses.curs_set(0)
|
curses.curs_set(0)
|
||||||
stdscr.keypad(True)
|
stdscr.keypad(True)
|
||||||
|
stdscr.timeout(50) # Less aggressive timeout (50ms instead of 10ms)
|
||||||
|
|
||||||
if curses.has_colors():
|
if curses.has_colors():
|
||||||
curses.use_default_colors()
|
curses.use_default_colors()
|
||||||
|
|
@ -566,20 +567,26 @@ def main(stdscr, filename, show_diff, show_add, show_del, mouse):
|
||||||
draw_ui(stdscr, state)
|
draw_ui(stdscr, state)
|
||||||
|
|
||||||
while not state.should_exit:
|
while not state.should_exit:
|
||||||
key = stdscr.getch()
|
try:
|
||||||
|
key = stdscr.getch()
|
||||||
# Process input and update the application state
|
|
||||||
if key == curses.KEY_RESIZE:
|
# Process input and update the application state
|
||||||
|
if key == -1: # No input available (timeout)
|
||||||
|
pass # Just redraw the UI and continue
|
||||||
|
elif key == curses.KEY_RESIZE:
|
||||||
h, w = stdscr.getmaxyx()
|
h, w = stdscr.getmaxyx()
|
||||||
state.update_dimensions(h, w)
|
state.update_dimensions(h, w)
|
||||||
elif state.enable_mouse and key == curses.KEY_MOUSE:
|
elif state.enable_mouse and key == curses.KEY_MOUSE:
|
||||||
handle_mouse_input(stdscr, state)
|
handle_mouse_input(stdscr, state)
|
||||||
else:
|
else:
|
||||||
handle_keyboard_input(key, state)
|
handle_keyboard_input(key, state)
|
||||||
|
|
||||||
# After every action, redraw the UI to reflect changes immediately.
|
# After every action, redraw the UI to reflect changes immediately.
|
||||||
# This is crucial for real-time feedback during mouse drags.
|
# This is crucial for real-time feedback during mouse drags.
|
||||||
draw_ui(stdscr, state)
|
draw_ui(stdscr, state)
|
||||||
|
except Exception as e:
|
||||||
|
# Prevent crashes by catching exceptions
|
||||||
|
pass
|
||||||
|
|
||||||
# Disable mouse motion events when exiting
|
# Disable mouse motion events when exiting
|
||||||
if state.enable_mouse:
|
if state.enable_mouse:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue