summaryrefslogtreecommitdiffstats
path: root/pkg/gui/list_context.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-08-22 09:01:14 +1000
committerJesse Duffield <jessedduffield@gmail.com>2020-08-23 14:29:18 +1000
commit0ac402792bd184965441b6ac60d054ae7d0afd7b (patch)
tree6f41ef089c81ed2aeaab7e5824c11cc2f5defbbb /pkg/gui/list_context.go
parent974c6510b8fbda23b79f365efb18f2091cd757a6 (diff)
allow getting the current item generically
Diffstat (limited to 'pkg/gui/list_context.go')
-rw-r--r--pkg/gui/list_context.go50
1 files changed, 21 insertions, 29 deletions
diff --git a/pkg/gui/list_context.go b/pkg/gui/list_context.go
index e152affd1..344cee86b 100644
--- a/pkg/gui/list_context.go
+++ b/pkg/gui/list_context.go
@@ -21,7 +21,7 @@ type ListContext struct {
OnFocus func() error
OnFocusLost func() error
OnClickSelectedItem func() error
- GetItems func() []ListItem
+ GetSelectedItem func() ListItem
GetPanelState func() IListPanelState
Gui *Gui
@@ -63,24 +63,6 @@ func (lc *ListContext) GetParentContext() Context {
return lc.ParentContext
}
-func (lc *ListContext) GetSelectedItem() ListItem {
- items := lc.GetItems()
-
- if len(items) == 0 {
- return nil
- }
-
- selectedLineIdx := lc.GetPanelState().GetSelectedLineIdx()
-
- if selectedLineIdx > len(items)-1 {
- return nil
- }
-
- item := items[selectedLineIdx]
-
- return item
-}
-
func (lc *ListContext) GetSelectedItemId() string {
item := lc.GetSelectedItem()
@@ -287,7 +269,8 @@ func (gui *Gui) filesListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetFileListDisplayStrings(gui.State.Files, gui.State.Diff.Ref)
},
- Contains: CONTAINS_NOTHING,
+ Contains: CONTAINS_NOTHING,
+ GetSelectedItem: func() ListItem { return gui.getSelectedFile() },
}
}
@@ -304,7 +287,8 @@ func (gui *Gui) branchesListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetBranchListDisplayStrings(gui.State.Branches, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Diff.Ref)
},
- Contains: CONTAINS_COMMITS,
+ Contains: CONTAINS_COMMITS,
+ GetSelectedItem: func() ListItem { return gui.getSelectedBranch() },
}
}
@@ -322,7 +306,8 @@ func (gui *Gui) remotesListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetRemoteListDisplayStrings(gui.State.Remotes, gui.State.Diff.Ref)
},
- Contains: CONTAINS_BRANCHES,
+ Contains: CONTAINS_BRANCHES,
+ GetSelectedItem: func() ListItem { return gui.getSelectedRemote() },
}
}
@@ -339,7 +324,8 @@ func (gui *Gui) remoteBranchesListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetRemoteBranchListDisplayStrings(gui.State.RemoteBranches, gui.State.Diff.Ref)
},
- Contains: CONTAINS_COMMITS,
+ Contains: CONTAINS_COMMITS,
+ GetSelectedItem: func() ListItem { return gui.getSelectedRemoteBranch() },
}
}
@@ -356,7 +342,8 @@ func (gui *Gui) tagsListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetTagListDisplayStrings(gui.State.Tags, gui.State.Diff.Ref)
},
- Contains: CONTAINS_COMMITS,
+ Contains: CONTAINS_COMMITS,
+ GetSelectedItem: func() ListItem { return gui.getSelectedTag() },
}
}
@@ -374,7 +361,8 @@ func (gui *Gui) branchCommitsListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetCommitListDisplayStrings(gui.State.Commits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Diff.Ref)
},
- Contains: CONTAINS_FILES,
+ Contains: CONTAINS_FILES,
+ GetSelectedItem: func() ListItem { return gui.getSelectedCommit() },
}
}
@@ -391,7 +379,8 @@ func (gui *Gui) reflogCommitsListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetReflogCommitListDisplayStrings(gui.State.FilteredReflogCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Diff.Ref)
},
- Contains: CONTAINS_FILES,
+ Contains: CONTAINS_FILES,
+ GetSelectedItem: func() ListItem { return gui.getSelectedReflogCommit() },
}
}
@@ -408,7 +397,8 @@ func (gui *Gui) subCommitsListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetCommitListDisplayStrings(gui.State.SubCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Diff.Ref)
},
- Contains: CONTAINS_COMMITS,
+ Contains: CONTAINS_COMMITS,
+ GetSelectedItem: func() ListItem { return gui.getSelectedSubCommit() },
}
}
@@ -425,7 +415,8 @@ func (gui *Gui) stashListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetStashEntryListDisplayStrings(gui.State.StashEntries, gui.State.Diff.Ref)
},
- Contains: CONTAINS_FILES,
+ Contains: CONTAINS_FILES,
+ GetSelectedItem: func() ListItem { return gui.getSelectedStashEntry() },
}
}
@@ -443,7 +434,8 @@ func (gui *Gui) commitFilesListContext() *ListContext {
GetDisplayStrings: func() [][]string {
return presentation.GetCommitFileListDisplayStrings(gui.State.CommitFiles, gui.State.Diff.Ref)
},
- Contains: CONTAINS_NOTHING,
+ Contains: CONTAINS_NOTHING,
+ GetSelectedItem: func() ListItem { return gui.getSelectedCommitFile() },
}
}