jesseduffield.lazygit/pkg/gui/controllers
Stefan Haller fce4816a0d Fix branch selection jumping back on background fetch
When refreshing the branches list, we have code to keep the same branch selected
even when the refresh changes the sort order; this code remembers the selected
branch before the refresh, and then tries to select it again afterwards (looking
it up by name) if it is still there.

However, we stored the previously selected branch too early, before even
obtaining the branches list; if the user moved the selection between that point
and the end of the refresh, it would jump back. Fix this by remembering the
previous selection only at the last moment, right before assigning the new
branches slice.

We still have a race condition here between the UI code that manages the
selection as the user presses arrow keys, and the background thread doing the
refresh that reads and restores the selection; however, the race was there
before, and we make it neither better nor worse with this PR. It doesn't seem to
be a problem in practice.
2025-05-29 14:41:59 +02:00
..
helpers Fix branch selection jumping back on background fetch 2025-05-29 14:41:59 +02:00
attach.go Allow clicking in focused main view to go to staging 2025-04-21 18:03:24 +02:00
base_controller.go Allow clicking in focused main view to go to staging 2025-04-21 18:03:24 +02:00
basic_commits_controller.go Make Commit.Hash a getter for an unexported hash field 2025-04-29 14:57:15 +02:00
bisect_controller.go Make Commit.Hash a getter for an unexported hash field 2025-04-29 14:57:15 +02:00
branches_controller.go Add new command "Move commits to new branch" 2025-04-21 18:12:50 +02:00
command_log_controller.go Remove return value of Focus-related functions 2024-09-06 08:45:48 +02:00
commit_description_controller.go Add an alternate keybinding (default <c-s>) for ConfirmInEditor 2025-05-11 13:59:22 +02:00
commit_message_controller.go Show "hooks disabled" in title bar of commit message editor 2025-04-10 08:57:32 +02:00
commits_files_controller.go Disallow creating custom patches when the diff context size is 0 2025-04-29 10:21:18 +02:00
common.go lots of changes 2023-04-30 13:19:53 +10:00
confirmation_controller.go Remove return value of IContextMgr.Push/Pop et. al. 2024-09-06 08:45:48 +02:00
context_lines_controller.go Add ContextMgr.NextInStack and use it to access side panel of focused main view 2025-05-22 14:38:40 +02:00
custom_patch_options_menu_action.go Add custom patch command "Move patch into new commit before the original commit" 2025-05-10 18:57:28 +02:00
diffing_menu_action.go Remove return value of Alert/Confirm/Prompt 2024-09-06 08:45:48 +02:00
files_controller.go Add config for auto-forwarding branches after fetching 2025-04-21 18:06:09 +02:00
filter_controller.go Introduce filtered list view model 2023-07-03 12:54:13 +10:00
filtering_menu_action.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
git_flow_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00
global_controller.go Add DisabledReason for rebase options when not rebasing or merging 2025-04-20 15:53:17 +02:00
jump_to_side_window_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
list_controller.go Make '>' first jump to the beginning of the branch, and only then to the first commit 2025-05-11 13:55:43 +02:00
list_controller_trait.go Remove ErrorMsg 2024-04-18 10:10:30 +02:00
local_commits_controller.go Remove unused keybinding handler 2025-05-11 13:55:43 +02:00
local_commits_controller_test.go Keep the same line selected after squashing fixup commits 2024-03-09 07:55:22 +01:00
main_view_controller.go Add ContextMgr.NextInStack and use it to access side panel of focused main view 2025-05-22 14:38:40 +02:00
menu_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00
merge_conflicts_controller.go Remove return value of IContextMgr.Push/Pop et. al. 2024-09-06 08:45:48 +02:00
options_menu_action.go Disable KeybindingsMenu using a DisabledReason when a panel is open 2025-01-03 10:09:42 +01:00
patch_building_controller.go Adjust line number for working copy when editing a line 2025-01-07 17:46:51 +01:00
patch_explorer_controller.go Strip the '+' and '-' characters when copying parts of a diff to the clipboard 2025-04-29 11:33:47 +02:00
patch_explorer_controller_test.go Strip the '+' and '-' characters when copying parts of a diff to the clipboard 2025-04-29 11:33:47 +02:00
quit_actions.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
reflog_commits_controller.go Make Commit.Hash a getter for an unexported hash field 2025-04-29 14:57:15 +02:00
remote_branches_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00
remotes_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
rename_similarity_threshold_controller.go Add ContextMgr.NextInStack and use it to access side panel of focused main view 2025-05-22 14:38:40 +02:00
screen_mode_actions.go Standardise on 'screen mode' name 2025-01-11 14:25:48 +11:00
scroll_off_margin.go Replace min/max helpers with built-in min/max 2024-04-07 23:24:10 +08:00
scroll_off_margin_test.go Add tests for scroll-off margin of zero 2023-08-21 08:10:28 +02:00
search_controller.go Introduce filtered list view model 2023-07-03 12:54:13 +10:00
search_prompt_controller.go Enforce single-item selection in various actions 2024-01-19 10:50:49 +11:00
shell_command_action.go Add config os.shellFunctionsFile 2025-04-07 14:35:40 +02:00
side_window_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
snake_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
staging_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
stash_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
status_controller.go Split behavior of rendering allBranchesLogCmd and switching to next cmd 2025-05-21 08:17:09 +02:00
sub_commits_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00
submodules_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
suggestions_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00
switch_to_diff_files_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
switch_to_focused_main_view_controller.go Add ContextMgr.NextInStack and use it to access side panel of focused main view 2025-05-22 14:38:40 +02:00
switch_to_sub_commits_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00
sync_controller.go Fix checking out a different branch while pushing a branch for the first time 2025-01-26 10:22:19 +01:00
tags_controller.go Cleanup: get rid of the variadic parameter of ContextMgr.Push 2025-04-08 16:08:25 +02:00
toggle_whitespace_action.go Remove return value of Focus-related functions 2024-09-06 08:45:48 +02:00
undo_controller.go Make Commit.Hash a getter for an unexported hash field 2025-04-29 14:57:15 +02:00
vertical_scroll_controller.go Add IGuiCommon.GetViewBufferManagerForView 2025-04-21 18:03:18 +02:00
view_selection_controller.go Read all lines from task when jumping to bottom 2025-04-21 18:03:19 +02:00
workspace_reset_controller.go Bump gocui and adapt lazygit code 2024-12-01 10:40:08 +01:00
worktree_options_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00
worktrees_controller.go Remove unnecessary type arguments 2025-03-03 21:24:49 +01:00