jesseduffield.lazygit/pkg/gui
Stefan Haller ec3f681ebf Derive the selection highlight from the context stack
A view drew a selection because something told it to, from four places on
three different schedules: a context being focused, a context losing focus,
a context being activated over another one, and a list being re-rendered.
Whether the flags ended up describing the state of the app depended on
which of those had run last, and the last one to run was often none of
them: a refresh only re-focuses the view that has the focus, so a list
whose contents changed underneath an unfocused panel kept whichever
highlight it happened to have.

Derive both flags instead, in one place, from the two things they mean: a
view shows a selection while its context is on the stack and has something
to select, and the context the user is in shows an active one where the
ones behind it show inactive ones. Nothing else needs to say anything about
highlighting, so nothing else can leave a view saying something untrue
about where the focus is.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-03 21:19:04 +02:00
..
context Derive the selection highlight from the context stack 2026-09-03 21:19:04 +02:00
controllers Re-render the main view without re-focusing the panel beneath it 2026-09-03 21:19:04 +02:00
filetree Drop the menu-specific wording for the filter prompt 2026-08-31 20:41:22 +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 Rework the custom pager config (rename to diff renderer) 2026-07-31 08:42:51 +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 Derive the selection highlight from the context stack 2026-09-03 21:19:04 +02:00
background.go Let OnUIThreadAndWait's error be about the wait, not about f 2026-08-12 11:04:53 +02:00
command_log_panel.go Adapt links 2026-07-31 08:42:51 +02:00
context.go Derive the selection highlight from the context stack 2026-09-03 21:19:04 +02:00
context_config.go Remove some unused code 2025-07-08 15:14:45 +02:00
controllers.go Keep a filtering menu navigable whatever the keybindings are 2026-08-31 20:41:22 +02:00
dummies.go Move NewDummyCommon to pkg/common 2025-05-06 09:43:26 +02:00
editors.go Filter a menu by typing into it 2026-08-31 20:41:22 +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 Filter a menu by typing into it 2026-08-31 20:41:22 +02:00
gui_common.go Remove error return value from functions that always return nil 2026-08-31 20:41:22 +02:00
gui_driver.go Add test helpers for a menu's filter row 2026-08-31 20:41:22 +02:00
information_panel.go Rename ModeStatus.Description to InfoLabel 2025-08-14 17:59:38 +02:00
keybindings.go Remove error return value from functions that always return nil 2026-08-31 20:41:22 +02:00
layout.go Filter a menu by typing into it 2026-08-31 20:41:22 +02:00
layout_test.go Lay out the filter row of a menu that filters as you type 2026-08-31 20:41:22 +02:00
main_panels.go Reset other main views' scroll after copying content, not before 2026-08-15 15:30:27 +02:00
menu_panel.go Lay out the filter row of a menu that filters as you type 2026-08-31 20:41:22 +02:00
options_map.go Cleanup: filter out empty keybindings earlier 2026-05-28 19:26:43 +02:00
pty.go Render async content into an off-screen buffer and swap it in 2026-08-15 15:30:27 +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 Drop FlushStaleCells, which no longer has anything to flush 2026-08-15 15:30:27 +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 Derive the selection highlight from the context stack 2026-09-03 21:19:04 +02:00
views.go Filter a menu by typing into it 2026-08-31 20:41:22 +02:00