diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2024-06-12 17:23:42 +0200 |
---|---|---|
committer | Stefan Haller <stefan@haller-berlin.de> | 2024-06-23 12:36:40 +0200 |
commit | 8b8343b8a9f81c3000117ce869c734611cf87b7b (patch) | |
tree | 9fcd3195ade2f1ca173acec34f73d2eb92b4259b /pkg | |
parent | f98da780de98b464085e8608a03539ed239690be (diff) |
Run PTY tasks after layout so that they get the correct view size
This is important when using a pager that draws a horizontal line across the
entire width of the view; when changing from a file or directory that has only
unstaged (or only staged) changes to one that has both, the main view is split
in half, but the PTY task would be run on the view in its old state, so the
horizonal line would be too long and wrap around.
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/gui/gui.go | 9 | ||||
-rw-r--r-- | pkg/gui/gui_common.go | 7 | ||||
-rw-r--r-- | pkg/gui/main_panels.go | 5 |
3 files changed, 14 insertions, 7 deletions
diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 5f2fd55bf..06228e759 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -959,3 +959,12 @@ func (gui *Gui) onWorker(f func(gocui.Task) error) { func (gui *Gui) getWindowDimensions(informationStr string, appStatus string) map[string]boxlayout.Dimensions { return gui.helpers.WindowArrangement.GetWindowDimensions(informationStr, appStatus) } + +func (gui *Gui) afterLayout(f func() error) { + select { + case gui.afterLayoutFuncs <- f: + default: + // hopefully this never happens + gui.c.Log.Error("afterLayoutFuncs channel is full, skipping function") + } +} diff --git a/pkg/gui/gui_common.go b/pkg/gui/gui_common.go index a75aa3658..434f4b38b 100644 --- a/pkg/gui/gui_common.go +++ b/pkg/gui/gui_common.go @@ -189,12 +189,7 @@ func (self *guiCommon) GetInitialKeybindingsWithCustomCommands() ([]*types.Bindi } func (self *guiCommon) AfterLayout(f func() error) { - select { - case self.gui.afterLayoutFuncs <- f: - default: - // hopefully this never happens - self.gui.c.Log.Error("afterLayoutFuncs channel is full, skipping function") - } + self.gui.afterLayout(f) } func (self *guiCommon) RunningIntegrationTest() bool { diff --git a/pkg/gui/main_panels.go b/pkg/gui/main_panels.go index bf30331cd..49d278399 100644 --- a/pkg/gui/main_panels.go +++ b/pkg/gui/main_panels.go @@ -20,7 +20,10 @@ func (gui *Gui) runTaskForView(view *gocui.View, task types.UpdateTask) error { return gui.newCmdTask(view, v.Cmd, v.Prefix) case *types.RunPtyTask: - return gui.newPtyTask(view, v.Cmd, v.Prefix) + gui.afterLayout(func() error { + return gui.newPtyTask(view, v.Cmd, v.Prefix) + }) + return nil } return nil |