fix: Preserve scroll position when navigating commits

This commit is contained in:
n loewen (aider) 2025-06-07 20:22:06 +01:00
parent af9c9f787e
commit bc1c07ba29
1 changed files with 4 additions and 8 deletions

12
gtm
View File

@ -135,7 +135,8 @@ def main(stdscr, filename, show_whole_diff=False, show_additions=False, show_del
scroll_percentage = scroll_offset / max_scroll
# Only fetch file content when commit changes
if key in [curses.KEY_DOWN, curses.KEY_UP, ord('j'), ord('k')] and focus == "left":
if (key in [curses.KEY_DOWN, curses.KEY_UP, ord('j'), ord('k'),
curses.KEY_NPAGE, ord(' '), curses.KEY_PPAGE, 8, 127, curses.KEY_SR]) and focus == "left":
commit_hash = commits[selected_commit].split()[0]
file_lines = get_file_at_commit(commit_hash, filename)
@ -338,20 +339,15 @@ def main(stdscr, filename, show_whole_diff=False, show_additions=False, show_del
if key in [curses.KEY_DOWN, ord('j')]:
if selected_commit < len(commits) - 1:
selected_commit += 1
scroll_offset = 0
elif key in [curses.KEY_UP, ord('k')]:
if selected_commit > 0:
selected_commit -= 1
elif key in [curses.KEY_NPAGE, ord(' ')]:
# Page down in left pane
new_selected = min(selected_commit + height - 1, len(commits) - 1)
if new_selected != selected_commit:
selected_commit = new_selected
selected_commit = min(selected_commit + height - 1, len(commits) - 1)
elif key in [curses.KEY_PPAGE, 8, 127, curses.KEY_SR]:
# Page up in left pane
new_selected = max(0, selected_commit - (height - 1))
if new_selected != selected_commit:
selected_commit = new_selected
selected_commit = max(0, selected_commit - (height - 1))
# Right pane scrolling
elif focus == "right":