From 06496ccd17d0e6f88c3b4eceba814c6269e9c571 Mon Sep 17 00:00:00 2001 From: AzraelSec Date: Wed, 5 Jun 2024 02:52:11 +0200 Subject: [PATCH] feat: let the staging secondary panel change view mode --- .../helpers/window_arrangement_helper.go | 11 ++++- .../tests/staging/diff_change_screen_mode.go | 47 +++++++++++++++++++ pkg/integration/tests/test_list.go | 1 + 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 pkg/integration/tests/staging/diff_change_screen_mode.go diff --git a/pkg/gui/controllers/helpers/window_arrangement_helper.go b/pkg/gui/controllers/helpers/window_arrangement_helper.go index 5c17083f7..0eb7cdb4a 100644 --- a/pkg/gui/controllers/helpers/window_arrangement_helper.go +++ b/pkg/gui/controllers/helpers/window_arrangement_helper.go @@ -216,6 +216,15 @@ func mainSectionChildren(args WindowArrangementArgs) []*boxlayout.Box { } } + if args.CurrentWindow == "secondary" && args.ScreenMode == types.SCREEN_FULL { + return []*boxlayout.Box{ + { + Window: "secondary", + Weight: 1, + }, + } + } + return []*boxlayout.Box{ { Window: "main", @@ -239,7 +248,7 @@ func getMidSectionWeights(args WindowArrangementArgs) (int, int) { mainSectionWeight = 5 // need to shrink side panel to make way for main panels if side-by-side } - if args.CurrentWindow == "main" { + if args.CurrentWindow == "main" || args.CurrentWindow == "secondary" { if args.ScreenMode == types.SCREEN_HALF || args.ScreenMode == types.SCREEN_FULL { sideSectionWeight = 0 } diff --git a/pkg/integration/tests/staging/diff_change_screen_mode.go b/pkg/integration/tests/staging/diff_change_screen_mode.go new file mode 100644 index 000000000..b42439cc8 --- /dev/null +++ b/pkg/integration/tests/staging/diff_change_screen_mode.go @@ -0,0 +1,47 @@ +package staging + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var DiffChangeScreenMode = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Change the staged changes screen mode", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.CreateFile("file", "first line\nsecond line") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Files(). + Focus(). + PressEnter() + + t.Views().Staging(). + IsFocused(). + PressPrimaryAction(). + Title(Equals("Unstaged changes")). + Content(Contains("+second line").DoesNotContain("+first line")). + PressTab() + + t.Views().StagingSecondary(). + IsFocused(). + Title(Equals("Staged changes")). + Content(Contains("+first line").DoesNotContain("+second line")). + Press(keys.Universal.NextScreenMode). + Tap(func() { + t.Views().AppStatus(). + IsInvisible() + t.Views().Staging(). + IsVisible() + }). + Press(keys.Universal.NextScreenMode). + Tap(func() { + t.Views().AppStatus(). + IsInvisible() + t.Views().Staging(). + IsInvisible() + }) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index c1e153a2b..d4ebd4026 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -245,6 +245,7 @@ var tests = []*components.IntegrationTest{ reflog.DoNotShowBranchMarkersInReflogSubcommits, reflog.Patch, reflog.Reset, + staging.DiffChangeScreenMode, staging.DiffContextChange, staging.DiscardAllChanges, staging.Search,