Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions pkg/gui/controllers/helpers/repos_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ func (self *ReposHelper) EnterSubmodule(submodule *models.SubmoduleConfig) error
}
self.c.State().GetRepoPathStack().Push(wd)

return self.DispatchSwitchToRepo(submodule.FullPath(), context.NO_CONTEXT)
// Preserve the current screen mode when entering submodule
currentScreenMode := self.c.State().GetRepoState().GetScreenMode()
return self.DispatchSwitchToRepoWithScreenMode(submodule.FullPath(), context.NO_CONTEXT, currentScreenMode)
}

func (self *ReposHelper) getCurrentBranch(path string) string {
Expand Down Expand Up @@ -141,10 +143,15 @@ func (self *ReposHelper) CreateRecentReposMenu() error {
}

func (self *ReposHelper) DispatchSwitchToRepo(path string, contextKey types.ContextKey) error {
return self.DispatchSwitchTo(path, self.c.Tr.ErrRepositoryMovedOrDeleted, contextKey)
return self.DispatchSwitchTo(path, self.c.Tr.ErrRepositoryMovedOrDeleted, contextKey, "")
}

func (self *ReposHelper) DispatchSwitchTo(path string, errMsg string, contextKey types.ContextKey) error {
func (self *ReposHelper) DispatchSwitchToRepoWithScreenMode(path string, contextKey types.ContextKey, screenMode types.ScreenMode) error {
screenModeStr := screenModeToString(screenMode)
return self.DispatchSwitchTo(path, self.c.Tr.ErrRepositoryMovedOrDeleted, contextKey, screenModeStr)
}

func (self *ReposHelper) DispatchSwitchTo(path string, errMsg string, contextKey types.ContextKey, screenMode string) error {
return self.c.WithWaitingStatus(self.c.Tr.Switching, func(gocui.Task) error {
env.UnsetGitLocationEnvVars()
originalPath, err := os.Getwd()
Expand Down Expand Up @@ -177,6 +184,17 @@ func (self *ReposHelper) DispatchSwitchTo(path string, errMsg string, contextKey
self.c.Mutexes().RefreshingFilesMutex.Lock()
defer self.c.Mutexes().RefreshingFilesMutex.Unlock()

return self.onNewRepo(appTypes.StartArgs{}, contextKey)
return self.onNewRepo(appTypes.StartArgs{ScreenMode: screenMode}, contextKey)
})
}

func screenModeToString(screenMode types.ScreenMode) string {
switch screenMode {
case types.SCREEN_HALF:
return "half"
case types.SCREEN_FULL:
return "full"
default:
return "normal"
}
}
4 changes: 2 additions & 2 deletions pkg/gui/controllers/helpers/worktree_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo
return err
}

return self.reposHelper.DispatchSwitchTo(opts.Path, self.c.Tr.ErrWorktreeMovedOrRemoved, contextKey)
return self.reposHelper.DispatchSwitchTo(opts.Path, self.c.Tr.ErrWorktreeMovedOrRemoved, contextKey, "")
})
}

Expand Down Expand Up @@ -161,7 +161,7 @@ func (self *WorktreeHelper) Switch(worktree *models.Worktree, contextKey types.C

self.c.LogAction(self.c.Tr.SwitchToWorktree)

return self.reposHelper.DispatchSwitchTo(worktree.Path, self.c.Tr.ErrWorktreeMovedOrRemoved, contextKey)
return self.reposHelper.DispatchSwitchTo(worktree.Path, self.c.Tr.ErrWorktreeMovedOrRemoved, contextKey, "")
}

func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error {
Expand Down
4 changes: 3 additions & 1 deletion pkg/gui/controllers/quit_actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ func (self *QuitActions) Escape() error {

repoPathStack := self.c.State().GetRepoPathStack()
if !repoPathStack.IsEmpty() {
return self.c.Helpers().Repos.DispatchSwitchToRepo(repoPathStack.Pop(), context.NO_CONTEXT)
// Preserve the current screen mode when exiting submodule
currentScreenMode := self.c.State().GetRepoState().GetScreenMode()
return self.c.Helpers().Repos.DispatchSwitchToRepoWithScreenMode(repoPathStack.Pop(), context.NO_CONTEXT, currentScreenMode)
}

if self.c.UserConfig().QuitOnTopLevelReturn {
Expand Down