jesseduffield.lazygit/pkg/integration/components
Stefan Haller 252a26cbc4 Hide the focused main view's selection when there's no diff to act on
The focused main view always showed a selection while it held focus, even when
its content was a placeholder ("No changed files", a merge-conflict message)
rather than a diff — so pressing a navigation key conjured a highlighted line
over "No changed files", and discarding the last change (or changes vanishing
outside lazygit) left a stale selection behind.

A selection should only show when there are change lines to act on. Two
moments establish or change the content:

- Focus: showInitialDiffSelection now leaves the selection off when the view
  has no change lines (ViewHasChangeLines), rather than highlighting a stray
  line at the top.
- Render: the side panel's render-to-main is where it decides between a diff
  and a placeholder, so that's where the selection's visibility is set —
  updateFocusedMainViewSelectionVisibility shows it only on the focused pane
  and only when a diff is being rendered. This covers the refresh cases that
  focus can't: discarding the last change, and changes disappearing or
  reappearing outside lazygit, all hide or restore the selection on the next
  refresh. (Focusing reuses the already-rendered content rather than
  re-rendering, which is why focus needs its own check.)

Wired into the files panel, where placeholders occur; the commit panels always
render a diff. Adds a SelectionIsShown/SelectionIsHidden test assertion.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-08 12:59:00 +02:00
..
alert_driver.go Support matchers on integers in integration tests 2023-06-03 15:32:23 +10:00
assertion_helper.go Auto-scroll when dragging to create range selection in staging view 2026-07-31 08:26:35 +02:00
commit_description_panel_driver.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
commit_message_panel_driver.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
common.go Only prompt to continue a rebase/merge if we started it 2026-07-03 18:28:07 +02:00
confirmation_driver.go Add demo for amending old commit 2023-08-02 22:32:51 +10:00
env.go Disable gh telemetry when running integration tests 2026-05-05 18:42:28 +02:00
file_system.go Allow chaining of FileSystem methods 2025-04-09 10:27:57 +02:00
git.go Add integration test that accesses commit properties in a custom command 2024-04-12 08:33:47 +02:00
int_matcher.go Add integration tests for searching/filtering 2023-07-03 12:54:14 +10:00
matcher.go Support matchers on integers in integration tests 2023-06-03 15:32:23 +10:00
menu_driver.go Add separate keybindings for confirmMenu and confirmSuggestion 2025-09-05 10:42:04 +02:00
paths.go Rename test/results to test/_results 2023-09-15 18:04:20 +02:00
popup.go Refactor: add a separate Prompt view 2025-09-05 10:42:03 +02:00
prompt_driver.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
random.go Add commit graph demo 2023-08-12 16:16:03 +10:00
runner.go Don't let a broken fixture take down the whole test binary 2026-08-05 17:02:06 +02:00
search_driver.go Change keybinding syntax to spell out full modifier names, and use + instead of - 2026-04-30 22:38:53 +02:00
shell.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
test.go Refactor repo_paths.go to use git rev-parse 2024-01-24 08:40:01 +01:00
test_driver.go Add ViewDriver methods for mouse drag gestures in integration tests 2026-07-31 08:26:35 +02:00
test_test.go Don't let a broken fixture take down the whole test binary 2026-08-05 17:02:06 +02:00
text_matcher.go [DATALAD RUNCMD] run codespell throughout fixing typos automagically 2024-08-27 18:03:00 +02:00
view_driver.go Hide the focused main view's selection when there's no diff to act on 2026-08-08 12:59:00 +02:00
views.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00