summaryrefslogtreecommitdiffstats
path: root/pkg/gui/branches_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-08-22 10:17:09 +1000
committerJesse Duffield <jessedduffield@gmail.com>2020-08-23 14:29:18 +1000
commit134566ed49718b5ff73d74f22a3cc743371c57d6 (patch)
treedd3e0def7241e64caa7184005cc011aa2328a63c /pkg/gui/branches_panel.go
parent8da93fd76287d16156308896ef162e9749fcd27f (diff)
move into more appropriate file
Diffstat (limited to 'pkg/gui/branches_panel.go')
-rw-r--r--pkg/gui/branches_panel.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/pkg/gui/branches_panel.go b/pkg/gui/branches_panel.go
index 358b094e8..7f7748834 100644
--- a/pkg/gui/branches_panel.go
+++ b/pkg/gui/branches_panel.go
@@ -468,3 +468,40 @@ func (gui *Gui) handleClipboardCopyBranch(g *gocui.Gui, v *gocui.View) error {
return gui.OSCommand.CopyToClipboard(branch.Name)
}
+
+func (gui *Gui) handleNewBranchOffCurrentItem() error {
+ context := gui.currentSideContext()
+
+ item := context.GetSelectedItem()
+ if item == nil {
+ return nil
+ }
+
+ message := gui.Tr.TemplateLocalize(
+ "NewBranchNameBranchOff",
+ Teml{
+ "branchName": item.Description(),
+ },
+ )
+
+ return gui.prompt(gui.getCurrentSideView(), message, "", func(response string) error {
+ if err := gui.GitCommand.NewBranch(response, item.ID()); err != nil {
+ return err
+ }
+
+ // if we're currently in the branch commits context then the selected commit
+ // is about to go to the top of the list
+ if context.GetKey() == BRANCH_COMMITS_CONTEXT_KEY {
+ context.GetPanelState().SetSelectedLineIdx(0)
+ }
+
+ if context.GetKey() != gui.Contexts.Branches.Context.GetKey() {
+ if err := gui.switchContext(gui.Contexts.Branches.Context); err != nil {
+ return err
+ }
+ gui.State.Panels.Branches.SelectedLineIdx = 0
+ }
+
+ return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
+ })
+}