jesseduffield.lazygit/pkg/gui
Stefan Haller 05c7b82a84 Follow the acted-on side to the right pane after staging from the main view
After staging or unstaging from the focused main view, focus stayed on the
pane the user acted in even when the side they were acting on moved to the
other pane. Two cases got it wrong:

- Unstaging the first hunk of an only-staged file splits the diff: the main
  half flips to show the just-unstaged change, and the staged remainder jumps
  to the secondary half — but focus stayed on the main half, away from the
  staged content the user was working through.
- Unstaging the last staged hunk from the secondary half empties the staged
  side and collapses the split, hiding the secondary half — leaving focus
  stranded on a hidden pane.

The rule is the same in both: focus the staged side while it survives. The
stage handler now reports which focused-main pane should hold focus —
the secondary half when unstaging leaves the file split, the main half
otherwise — and the controller re-selects the revealed change in that pane
and focuses it. The split is read from the model, which Refresh has already
updated synchronously by the time the handler returns; the re-render it
queues is what the reveal rides.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-08 12:59:00 +02:00
..
context Follow the acted-on side to the right pane after staging from the main view 2026-08-08 12:59:00 +02:00
controllers Follow the acted-on side to the right pane after staging from the main view 2026-08-08 12:59:00 +02:00
filetree Make the conflict marker size a parameter of our marker matching 2026-08-08 12:43:42 +02:00
mergeconflicts Recognize conflict markers that have no label 2026-08-08 12:43:42 +02:00
modes Make Commit.Hash a getter for an unexported hash field 2025-04-29 14:57:15 +02:00
patch_exploring Recover diff-line identity by parsing the buffer, behind a swappable seam 2026-08-08 12:58:59 +02:00
popup Decouple hiding the working tree state from blocking input 2026-08-05 17:29:20 +02:00
presentation Show a Github PR's combined checks state in branches list and main view 2026-08-02 13:06:21 +02:00
services/custom_commands Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
status Render the app status in a single background render loop 2026-07-17 15:55:01 +02:00
style Modernize all codes 2025-11-15 10:46:23 +01:00
types Follow the acted-on side to the right pane after staging from the main view 2026-08-08 12:59:00 +02:00
background.go Read the gui's per-repo pointers on the UI thread in background routines 2026-07-20 17:07:39 +02:00
command_log_panel.go Adapt links 2026-07-31 08:42:51 +02:00
context.go Bump gocui (and tcell) 2025-12-23 16:49:16 +01:00
context_config.go Remove some unused code 2025-07-08 15:14:45 +02:00
controllers.go Fold ViewSelectionController into MainViewController 2026-08-08 12:58:59 +02:00
dummies.go Move NewDummyCommon to pkg/common 2025-05-06 09:43:26 +02:00
editors.go Capture suggestions inputs on the UI thread 2026-07-17 12:35:54 +02:00
extras_panel.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
global_handlers.go Read lines based on scroll position instead of a fixed per-notch delta 2026-07-09 09:32:35 +02:00
gui.go Replace gui.showSelectionInFocusedMainView config with on-demand selection 2026-08-08 12:58:59 +02:00
gui_common.go Let the post-stage reveal target a different pane than the one acted on 2026-08-08 12:59:00 +02:00
gui_driver.go Keep the destination visible while commits move 2026-07-31 08:37:28 +02:00
information_panel.go Rename ModeStatus.Description to InfoLabel 2025-08-14 17:59:38 +02:00
keybindings.go Fold remaining alt bindings into their main fields 2026-05-25 15:32:47 +02:00
layout.go Don't scroll a view up to fill blank space while its content is loading 2026-08-08 12:58:59 +02:00
main_panels.go Reset other main views' scroll after copying content, not before 2026-08-08 12:58:59 +02:00
menu_panel.go Fold remaining alt bindings into their main fields 2026-05-25 15:32:47 +02:00
options_map.go Cleanup: filter out empty keybindings earlier 2026-05-28 19:26:43 +02:00
pty.go Rename the diff-line-metadata OSC from 456 to 1717 2026-08-08 12:58:59 +02:00
pty_test.go Prevent stale index.lock files from diffs rendered through a pty on Windows 2026-08-04 06:53:53 +02:00
recent_repos_panel.go Remove unused field gui.IsNewRepo 2024-12-01 10:44:26 +01:00
side_panels.go Assign the transient contexts' initial windows from the side panel config 2026-07-17 12:07:24 +02:00
side_panels_test.go Assign the transient contexts' initial windows from the side panel config 2026-07-17 12:07:24 +02:00
tasks_adapter.go Reset the scroll to the top at first paint, not when the task starts 2026-08-08 12:58:59 +02:00
tasks_adapter_test.go Never hand NewCmdTask a nil reader when a command fails to start 2026-07-23 17:31:26 +02:00
test_mode.go Dump goroutine stacks when the test watchdog fires 2026-07-20 14:26:25 +02:00
test_timeout_norace.go Scale the integration test watchdog up under the race detector 2026-07-20 14:26:25 +02:00
test_timeout_race.go Scale the integration test watchdog up under the race detector 2026-07-20 14:26:25 +02:00
view_helpers.go Restore the focused main view by patch identity on escape 2026-08-08 12:58:59 +02:00
views.go Clear tab strips on views that are no longer tabs 2026-06-23 14:15:18 +02:00