mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	more refactoring
This commit is contained in:
		| @@ -257,7 +257,7 @@ func (gui *Gui) handleToggleCommitFileDirCollapsed() error { | ||||
| func (gui *Gui) switchToCommitFilesContext(refName string, canRebase bool, context Context, windowName string) error { | ||||
| 	// sometimes the commitFiles view is already shown in another window, so we need to ensure that window | ||||
| 	// no longer considers the commitFiles view as its main view. | ||||
| 	gui.resetWindowForView("commitFiles") | ||||
| 	gui.resetWindowForView(gui.Views.CommitFiles) | ||||
|  | ||||
| 	gui.State.Panels.CommitFiles.SelectedLineIdx = 0 | ||||
| 	gui.State.Panels.CommitFiles.refName = refName | ||||
| @@ -287,14 +287,11 @@ func (gui *Gui) handleToggleCommitFileTreeView() error { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// TODO: pretty sure this view only ever has this context. Is this if condition necessary? | ||||
| 	if gui.Views.CommitFiles.Context == COMMIT_FILES_CONTEXT_KEY { | ||||
| 		if err := gui.State.Contexts.CommitFiles.HandleRender(); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		if err := gui.State.Contexts.CommitFiles.HandleFocus(); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	if err := gui.State.Contexts.CommitFiles.HandleRender(); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if err := gui.State.Contexts.CommitFiles.HandleFocus(); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -19,27 +19,27 @@ type ContextKey string | ||||
|  | ||||
| const ( | ||||
| 	STATUS_CONTEXT_KEY              ContextKey = "status" | ||||
| 	FILES_CONTEXT_KEY                          = "files" | ||||
| 	LOCAL_BRANCHES_CONTEXT_KEY                 = "localBranches" | ||||
| 	REMOTES_CONTEXT_KEY                        = "remotes" | ||||
| 	REMOTE_BRANCHES_CONTEXT_KEY                = "remoteBranches" | ||||
| 	TAGS_CONTEXT_KEY                           = "tags" | ||||
| 	BRANCH_COMMITS_CONTEXT_KEY                 = "commits" | ||||
| 	REFLOG_COMMITS_CONTEXT_KEY                 = "reflogCommits" | ||||
| 	SUB_COMMITS_CONTEXT_KEY                    = "subCommits" | ||||
| 	COMMIT_FILES_CONTEXT_KEY                   = "commitFiles" | ||||
| 	STASH_CONTEXT_KEY                          = "stash" | ||||
| 	MAIN_NORMAL_CONTEXT_KEY                    = "normal" | ||||
| 	MAIN_MERGING_CONTEXT_KEY                   = "merging" | ||||
| 	MAIN_PATCH_BUILDING_CONTEXT_KEY            = "patchBuilding" | ||||
| 	MAIN_STAGING_CONTEXT_KEY                   = "staging" | ||||
| 	MENU_CONTEXT_KEY                           = "menu" | ||||
| 	CREDENTIALS_CONTEXT_KEY                    = "credentials" | ||||
| 	CONFIRMATION_CONTEXT_KEY                   = "confirmation" | ||||
| 	SEARCH_CONTEXT_KEY                         = "search" | ||||
| 	COMMIT_MESSAGE_CONTEXT_KEY                 = "commitMessage" | ||||
| 	SUBMODULES_CONTEXT_KEY                     = "submodules" | ||||
| 	SUGGESTIONS_CONTEXT_KEY                    = "suggestions" | ||||
| 	FILES_CONTEXT_KEY               ContextKey = "files" | ||||
| 	LOCAL_BRANCHES_CONTEXT_KEY      ContextKey = "localBranches" | ||||
| 	REMOTES_CONTEXT_KEY             ContextKey = "remotes" | ||||
| 	REMOTE_BRANCHES_CONTEXT_KEY     ContextKey = "remoteBranches" | ||||
| 	TAGS_CONTEXT_KEY                ContextKey = "tags" | ||||
| 	BRANCH_COMMITS_CONTEXT_KEY      ContextKey = "commits" | ||||
| 	REFLOG_COMMITS_CONTEXT_KEY      ContextKey = "reflogCommits" | ||||
| 	SUB_COMMITS_CONTEXT_KEY         ContextKey = "subCommits" | ||||
| 	COMMIT_FILES_CONTEXT_KEY        ContextKey = "commitFiles" | ||||
| 	STASH_CONTEXT_KEY               ContextKey = "stash" | ||||
| 	MAIN_NORMAL_CONTEXT_KEY         ContextKey = "normal" | ||||
| 	MAIN_MERGING_CONTEXT_KEY        ContextKey = "merging" | ||||
| 	MAIN_PATCH_BUILDING_CONTEXT_KEY ContextKey = "patchBuilding" | ||||
| 	MAIN_STAGING_CONTEXT_KEY        ContextKey = "staging" | ||||
| 	MENU_CONTEXT_KEY                ContextKey = "menu" | ||||
| 	CREDENTIALS_CONTEXT_KEY         ContextKey = "credentials" | ||||
| 	CONFIRMATION_CONTEXT_KEY        ContextKey = "confirmation" | ||||
| 	SEARCH_CONTEXT_KEY              ContextKey = "search" | ||||
| 	COMMIT_MESSAGE_CONTEXT_KEY      ContextKey = "commitMessage" | ||||
| 	SUBMODULES_CONTEXT_KEY          ContextKey = "submodules" | ||||
| 	SUGGESTIONS_CONTEXT_KEY         ContextKey = "suggestions" | ||||
| ) | ||||
|  | ||||
| var allContextKeys = []ContextKey{ | ||||
| @@ -512,7 +512,7 @@ func (gui *Gui) activateContext(c Context) error { | ||||
| 	originalViewContextKey := ContextKey(v.Context) | ||||
|  | ||||
| 	// ensure that any other window for which this view was active is now set to the default for that window. | ||||
| 	gui.setViewAsActiveForWindow(viewName) | ||||
| 	gui.setViewAsActiveForWindow(v) | ||||
|  | ||||
| 	if viewName == "main" { | ||||
| 		gui.changeMainViewsContext(c.GetKey()) | ||||
| @@ -677,7 +677,7 @@ func (gui *Gui) onViewFocusLost(oldView *gocui.View, newView *gocui.View) error | ||||
| 	} | ||||
|  | ||||
| 	if oldView == gui.Views.CommitFiles && newView != gui.Views.Main && newView != gui.Views.Secondary && newView != gui.Views.Search { | ||||
| 		gui.resetWindowForView("commitFiles") | ||||
| 		gui.resetWindowForView(gui.Views.CommitFiles) | ||||
| 		if err := gui.deactivateContext(gui.State.Contexts.CommitFiles); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
|   | ||||
| @@ -117,14 +117,14 @@ func (gui *Gui) refreshFilesAndSubmodules() error { | ||||
| 			gui.Log.Error(err) | ||||
| 		} | ||||
|  | ||||
| 		if gui.Views.Files.Context == FILES_CONTEXT_KEY { | ||||
| 		if ContextKey(gui.Views.Files.Context) == FILES_CONTEXT_KEY { | ||||
| 			// doing this a little custom (as opposed to using gui.postRefreshUpdate) because we handle selecting the file explicitly below | ||||
| 			if err := gui.State.Contexts.Files.HandleRender(); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if gui.currentContext().GetKey() == FILES_CONTEXT_KEY || (g.CurrentView() == gui.Views.Main && g.CurrentView().Context == MAIN_MERGING_CONTEXT_KEY) { | ||||
| 		if gui.currentContext().GetKey() == FILES_CONTEXT_KEY || (g.CurrentView() == gui.Views.Main && ContextKey(g.CurrentView().Context) == MAIN_MERGING_CONTEXT_KEY) { | ||||
| 			newSelectedPath := gui.getSelectedPath() | ||||
| 			alreadySelected := selectedPath != "" && newSelectedPath == selectedPath | ||||
| 			if err := gui.selectFile(alreadySelected); err != nil { | ||||
| @@ -856,7 +856,7 @@ func (gui *Gui) handleToggleFileTreeView() error { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if gui.Views.Files.Context == FILES_CONTEXT_KEY { | ||||
| 	if ContextKey(gui.Views.Files.Context) == FILES_CONTEXT_KEY { | ||||
| 		if err := gui.State.Contexts.Files.HandleRender(); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
|   | ||||
| @@ -148,13 +148,13 @@ func (gui *Gui) handleMouseDownMain() error { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	switch gui.g.CurrentView().Name() { | ||||
| 	case "files": | ||||
| 	switch gui.g.CurrentView() { | ||||
| 	case gui.Views.Files: | ||||
| 		// set filename, set primary/secondary selected, set line number, then switch context | ||||
| 		// I'll need to know it was changed though. | ||||
| 		// Could I pass something along to the context change? | ||||
| 		return gui.enterFile(false, gui.Views.Main.SelectedLineIdx()) | ||||
| 	case "commitFiles": | ||||
| 	case gui.Views.CommitFiles: | ||||
| 		return gui.enterCommitFile(gui.Views.Main.SelectedLineIdx()) | ||||
| 	} | ||||
|  | ||||
| @@ -166,8 +166,8 @@ func (gui *Gui) handleMouseDownSecondary() error { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	switch gui.g.CurrentView().Name() { | ||||
| 	case "files": | ||||
| 	switch gui.g.CurrentView() { | ||||
| 	case gui.Views.Files: | ||||
| 		return gui.enterFile(true, gui.Views.Secondary.SelectedLineIdx()) | ||||
| 	} | ||||
|  | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -317,8 +317,8 @@ func (gui *Gui) promptToContinueRebase() error { | ||||
| } | ||||
|  | ||||
| func (gui *Gui) canScrollMergePanel() bool { | ||||
| 	currentViewName := gui.currentViewName() | ||||
| 	if currentViewName != "main" && currentViewName != "files" { | ||||
| 	currentView := gui.g.CurrentView() | ||||
| 	if currentView != gui.Views.Main && currentView != gui.Views.Files { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| package gui | ||||
|  | ||||
| import "github.com/jesseduffield/gocui" | ||||
|  | ||||
| // A window refers to a place on the screen which can hold one or more views. | ||||
| // A view is a box that renders content, and within a window only one view will | ||||
| // appear at a time. When a view appears within a window, it occupies the whole | ||||
| @@ -15,28 +17,28 @@ func (gui *Gui) getViewNameForWindow(window string) string { | ||||
| 	return viewName | ||||
| } | ||||
|  | ||||
| func (gui *Gui) getWindowForViewName(viewName string) string { | ||||
| 	if viewName == "commitFiles" { | ||||
| func (gui *Gui) getWindowForView(view *gocui.View) string { | ||||
| 	if view == gui.Views.CommitFiles { | ||||
| 		return gui.State.Contexts.CommitFiles.GetWindowName() | ||||
| 	} | ||||
|  | ||||
| 	return viewName | ||||
| 	return view.Name() | ||||
| } | ||||
|  | ||||
| func (gui *Gui) setViewAsActiveForWindow(viewName string) { | ||||
| func (gui *Gui) setViewAsActiveForWindow(view *gocui.View) { | ||||
| 	if gui.State.WindowViewNameMap == nil { | ||||
| 		gui.State.WindowViewNameMap = map[string]string{} | ||||
| 	} | ||||
|  | ||||
| 	gui.State.WindowViewNameMap[gui.getWindowForViewName(viewName)] = viewName | ||||
| 	gui.State.WindowViewNameMap[gui.getWindowForView(view)] = view.Name() | ||||
| } | ||||
|  | ||||
| func (gui *Gui) currentWindow() string { | ||||
| 	return gui.getWindowForViewName(gui.currentViewName()) | ||||
| 	return gui.getWindowForView(gui.g.CurrentView()) | ||||
| } | ||||
|  | ||||
| func (gui *Gui) resetWindowForView(viewName string) { | ||||
| 	window := gui.getWindowForViewName(viewName) | ||||
| func (gui *Gui) resetWindowForView(view *gocui.View) { | ||||
| 	window := gui.getWindowForView(view) | ||||
| 	// we assume here that the window contains as its default view a view with the same name as the window | ||||
| 	gui.State.WindowViewNameMap[window] = window | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user