diff --git a/cmd/soft/browse/browse.go b/cmd/soft/browse/browse.go index 4ab28cb2fb84dc30873241d1cf366fe9d73bed35..ecb3d5302d44aebee5147d5540477bd79d4ba6c6 100644 --- a/cmd/soft/browse/browse.go +++ b/cmd/soft/browse/browse.go @@ -151,7 +151,7 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg := msg.(type) { case tea.WindowSizeMsg: m.SetSize(msg.Width, msg.Height) - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, m.common.KeyMap.Back) && m.error != nil: m.error = nil diff --git a/pkg/ssh/ui.go b/pkg/ssh/ui.go index 89d5ee5f6fe07af8fbd89793319f7d96573e96c8..204b80181e5ea48eefa9a475e9919ad9606367a3 100644 --- a/pkg/ssh/ui.go +++ b/pkg/ssh/ui.go @@ -179,37 +179,34 @@ func (ui *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cmds = append(cmds, cmd) } } - case tea.KeyMsg, tea.MouseMsg: - switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: + switch { + case key.Matches(msg, ui.common.KeyMap.Back) && ui.error != nil: + ui.error = nil + ui.state = readyState + // Always show the footer on error. + ui.showFooter = ui.footer.ShowAll() + case key.Matches(msg, ui.common.KeyMap.Help): + cmds = append(cmds, footer.ToggleFooterCmd) + case key.Matches(msg, ui.common.KeyMap.Quit): + if !ui.IsFiltering() { + // Stop bubblezone background workers. + ui.common.Zone.Close() + return ui, tea.Quit + } + case ui.activePage == repoPage && + ui.pages[ui.activePage].(*repo.Repo).Path() == "" && + key.Matches(msg, ui.common.KeyMap.Back): + ui.activePage = selectionPage + // Always show the footer on selection page. + ui.showFooter = true + } + case tea.MouseClickMsg: + switch msg.Mouse().Button { + case tea.MouseLeft: switch { - case key.Matches(msg, ui.common.KeyMap.Back) && ui.error != nil: - ui.error = nil - ui.state = readyState - // Always show the footer on error. - ui.showFooter = ui.footer.ShowAll() - case key.Matches(msg, ui.common.KeyMap.Help): + case ui.common.Zone.Get("footer").InBounds(msg): cmds = append(cmds, footer.ToggleFooterCmd) - case key.Matches(msg, ui.common.KeyMap.Quit): - if !ui.IsFiltering() { - // Stop bubblezone background workers. - ui.common.Zone.Close() - return ui, tea.Quit - } - case ui.activePage == repoPage && - ui.pages[ui.activePage].(*repo.Repo).Path() == "" && - key.Matches(msg, ui.common.KeyMap.Back): - ui.activePage = selectionPage - // Always show the footer on selection page. - ui.showFooter = true - } - case tea.MouseClickMsg: - switch msg.Mouse().Button { - case tea.MouseLeft: - switch { - case ui.common.Zone.Get("footer").InBounds(msg): - cmds = append(cmds, footer.ToggleFooterCmd) - } } } case footer.ToggleFooterMsg: diff --git a/pkg/ui/components/selector/selector.go b/pkg/ui/components/selector/selector.go index ff43816bb5fd6dd749008fee496b014085b5c8a7..e42ee3507a674a36561ae9255a7b6ea5f2e25c86 100644 --- a/pkg/ui/components/selector/selector.go +++ b/pkg/ui/components/selector/selector.go @@ -252,7 +252,7 @@ func (s *Selector) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } } } - case tea.KeyMsg: + case tea.KeyPressMsg: filterState := s.FilterState() switch { case key.Matches(msg, s.common.KeyMap.Help): diff --git a/pkg/ui/components/tabs/tabs.go b/pkg/ui/components/tabs/tabs.go index 51aec590e5c06da697408cb89ef2ffbb586e5853..36f0a19e85c2bda3dc172e02d8b5bb5b70919ad4 100644 --- a/pkg/ui/components/tabs/tabs.go +++ b/pkg/ui/components/tabs/tabs.go @@ -54,7 +54,7 @@ func (t *Tabs) Init() tea.Cmd { func (t *Tabs) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cmds := make([]tea.Cmd, 0) switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch msg.String() { case "tab": t.activeTab = (t.activeTab + 1) % len(t.tabs) diff --git a/pkg/ui/components/viewport/viewport.go b/pkg/ui/components/viewport/viewport.go index c2355ae76b143eac896bd26ffed00e561bbab73e..ccbd2318488ecefb140a0a8838ae01b273e8ee46 100644 --- a/pkg/ui/components/viewport/viewport.go +++ b/pkg/ui/components/viewport/viewport.go @@ -40,7 +40,7 @@ func (v *Viewport) Init() tea.Cmd { // Update implements tea.Model. func (v *Viewport) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, v.common.KeyMap.GotoTop): v.GotoTop() diff --git a/pkg/ui/pages/repo/files.go b/pkg/ui/pages/repo/files.go index 7a73750b06abe63897a5f2df7688b262be516222..24275396a925976ebcd0d0babe0690bc34dc707d 100644 --- a/pkg/ui/pages/repo/files.go +++ b/pkg/ui/pages/repo/files.go @@ -264,7 +264,7 @@ func (f *Files) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case filesViewFiles, filesViewContent: cmds = append(cmds, f.deselectItemCmd()) } - case tea.KeyMsg: + case tea.KeyPressMsg: switch f.activeView { case filesViewFiles: switch { diff --git a/pkg/ui/pages/repo/filesitem.go b/pkg/ui/pages/repo/filesitem.go index d821eb74d3728f72e04f4cf42245fe76182d4045..5c3e560f13f76796d4352dfa8e01030698d28594 100644 --- a/pkg/ui/pages/repo/filesitem.go +++ b/pkg/ui/pages/repo/filesitem.go @@ -82,7 +82,7 @@ func (d FileItemDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { return nil } switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, d.common.KeyMap.Copy): return copyCmd(item.entry.Name(), fmt.Sprintf("File name %q copied to clipboard", item.entry.Name())) diff --git a/pkg/ui/pages/repo/log.go b/pkg/ui/pages/repo/log.go index bb8caa34c4d4b2d6f915ae0a5411d4388b6f24bf..d58118246f2af89de24ecb4e13be368a1b1828c0 100644 --- a/pkg/ui/pages/repo/log.go +++ b/pkg/ui/pages/repo/log.go @@ -221,11 +221,11 @@ func (l *Log) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if i != nil { l.activeCommit = i.(LogItem).Commit } - case tea.KeyMsg, tea.MouseMsg: + case tea.KeyPressMsg, tea.MouseClickMsg: switch l.activeView { case logViewCommits: switch kmsg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(kmsg, l.common.KeyMap.SelectItem): cmds = append(cmds, l.selector.SelectItemCmd) @@ -248,7 +248,7 @@ func (l *Log) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cmds = append(cmds, cmd) case logViewDiff: switch kmsg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(kmsg, l.common.KeyMap.BackItem): l.goBack() diff --git a/pkg/ui/pages/repo/logitem.go b/pkg/ui/pages/repo/logitem.go index d95fe865bb0987c2ed09f2a6bc1a3f7ff922d71e..1aefd53204ac9288fb6f122efdce0ccd69f81256 100644 --- a/pkg/ui/pages/repo/logitem.go +++ b/pkg/ui/pages/repo/logitem.go @@ -62,7 +62,7 @@ func (d LogItemDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { return nil } switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, d.common.KeyMap.Copy): return copyCmd(item.Hash(), "Commit hash copied to clipboard") diff --git a/pkg/ui/pages/repo/refs.go b/pkg/ui/pages/repo/refs.go index f30f8f735d0496d03aba55d08d670e939674c38c..45a6b18d9cd9b33c9590eeca42c49cef5ec3f84f 100644 --- a/pkg/ui/pages/repo/refs.go +++ b/pkg/ui/pages/repo/refs.go @@ -152,7 +152,7 @@ func (r *Refs) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switchTabCmd(&Files{}), ) } - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, r.common.KeyMap.SelectItem): cmds = append(cmds, r.selector.SelectItemCmd) diff --git a/pkg/ui/pages/repo/refsitem.go b/pkg/ui/pages/repo/refsitem.go index aaed5e7e51afbadf03579074d43670acd6438879..e89015049de9e83834b44c4bebee012c34d7bfd6 100644 --- a/pkg/ui/pages/repo/refsitem.go +++ b/pkg/ui/pages/repo/refsitem.go @@ -83,7 +83,7 @@ func (d RefItemDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { return nil } switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, d.common.KeyMap.Copy): return copyCmd(item.ID(), fmt.Sprintf("Reference %q copied to clipboard", item.ID())) diff --git a/pkg/ui/pages/repo/repo.go b/pkg/ui/pages/repo/repo.go index 5aba643528281850c17a85e8faef09c5b4dd9b6e..fead336729501513ada5c6d456d58281784f1ddc 100644 --- a/pkg/ui/pages/repo/repo.go +++ b/pkg/ui/pages/repo/repo.go @@ -171,7 +171,7 @@ func (r *Repo) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } case tabs.ActiveTabMsg: r.activeTab = int(msg) - case tea.KeyMsg, tea.MouseMsg: + case tea.KeyPressMsg, tea.MouseClickMsg: t, cmd := r.tabs.Update(msg) r.tabs = t.(*tabs.Tabs) if cmd != nil { @@ -200,7 +200,7 @@ func (r *Repo) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } } switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, r.common.KeyMap.Back): cmds = append(cmds, goBackCmd) @@ -271,7 +271,7 @@ func (r *Repo) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // Update the status bar on these events // Must come after we've updated the active tab switch msg.(type) { - case RepoMsg, RefMsg, tabs.ActiveTabMsg, tea.KeyMsg, tea.MouseMsg, + case RepoMsg, RefMsg, tabs.ActiveTabMsg, tea.KeyPressMsg, tea.MouseClickMsg, FileItemsMsg, FileContentMsg, FileBlameMsg, selector.ActiveMsg, LogItemsMsg, GoBackMsg, LogDiffMsg, EmptyRepoMsg, StashListMsg, StashPatchMsg: diff --git a/pkg/ui/pages/repo/stash.go b/pkg/ui/pages/repo/stash.go index 37f8a1a85b5341a56884f0cb71c44e71dcc88c4d..9d0b874884c5f21534326468c07b159304070999 100644 --- a/pkg/ui/pages/repo/stash.go +++ b/pkg/ui/pages/repo/stash.go @@ -165,7 +165,7 @@ func (s *Stash) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cmds = append(cmds, cmd) } } - case tea.KeyMsg: + case tea.KeyPressMsg: switch s.state { case stashStateList: switch { diff --git a/pkg/ui/pages/repo/stashitem.go b/pkg/ui/pages/repo/stashitem.go index 77dd1a9274ff09fabdd1afff63f558236658eed3..a094040f992a9e7e70f565f92aaf70e14cfc7155 100644 --- a/pkg/ui/pages/repo/stashitem.go +++ b/pkg/ui/pages/repo/stashitem.go @@ -65,7 +65,7 @@ func (d StashItemDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { } switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, d.common.KeyMap.Copy): return copyCmd(item.Title(), fmt.Sprintf("Stash message %q copied to clipboard", item.Title())) diff --git a/pkg/ui/pages/selection/item.go b/pkg/ui/pages/selection/item.go index 4b338bda5d68c44bbf1c7e2a11c38dedda0811f0..7b5b82809f16409c28ccf1666104c2bbf59fbe91 100644 --- a/pkg/ui/pages/selection/item.go +++ b/pkg/ui/pages/selection/item.go @@ -135,7 +135,7 @@ func (d *ItemDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { return nil } switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, d.common.KeyMap.Copy): d.copiedIdx = idx diff --git a/pkg/ui/pages/selection/selection.go b/pkg/ui/pages/selection/selection.go index 3ced323a69c692f446d2988ee54347aab9a1c79d..fdabb15137244b36c27df359f4e9acb9cf8d31b7 100644 --- a/pkg/ui/pages/selection/selection.go +++ b/pkg/ui/pages/selection/selection.go @@ -250,9 +250,9 @@ func (s *Selection) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if cmd != nil { cmds = append(cmds, cmd) } - case tea.KeyMsg, tea.MouseMsg: + case tea.KeyPressMsg, tea.MouseMsg: switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch { case key.Matches(msg, s.common.KeyMap.Back): cmds = append(cmds, s.selector.Init())