summaryrefslogtreecommitdiffhomepage
path: root/internal/tui/layout/split.go
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-18 20:17:38 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 13:42:27 +0200
commit333ea6ec4b2abfc2c1a9c3f6b0918ca5d296347f (patch)
treee0d456417368e8716c81ee43b82be3d6ed39c59e /internal/tui/layout/split.go
parent05d0e86f10369fd0e51a924ac88029fb92591499 (diff)
downloadopencode-333ea6ec4b2abfc2c1a9c3f6b0918ca5d296347f.tar.gz
opencode-333ea6ec4b2abfc2c1a9c3f6b0918ca5d296347f.zip
implement patch, update ui, improve rendering
Diffstat (limited to 'internal/tui/layout/split.go')
-rw-r--r--internal/tui/layout/split.go37
1 files changed, 22 insertions, 15 deletions
diff --git a/internal/tui/layout/split.go b/internal/tui/layout/split.go
index bfb616a53..a41df6ab8 100644
--- a/internal/tui/layout/split.go
+++ b/internal/tui/layout/split.go
@@ -11,9 +11,9 @@ type SplitPaneLayout interface {
tea.Model
Sizeable
Bindings
- SetLeftPanel(panel Container)
- SetRightPanel(panel Container)
- SetBottomPanel(panel Container)
+ SetLeftPanel(panel Container) tea.Cmd
+ SetRightPanel(panel Container) tea.Cmd
+ SetBottomPanel(panel Container) tea.Cmd
}
type splitPaneLayout struct {
@@ -53,8 +53,7 @@ func (s *splitPaneLayout) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
var cmds []tea.Cmd
switch msg := msg.(type) {
case tea.WindowSizeMsg:
- s.SetSize(msg.Width, msg.Height)
- return s, nil
+ return s, s.SetSize(msg.Width, msg.Height)
}
if s.rightPanel != nil {
@@ -122,7 +121,7 @@ func (s *splitPaneLayout) View() string {
return finalView
}
-func (s *splitPaneLayout) SetSize(width, height int) {
+func (s *splitPaneLayout) SetSize(width, height int) tea.Cmd {
s.width = width
s.height = height
@@ -147,42 +146,50 @@ func (s *splitPaneLayout) SetSize(width, height int) {
rightWidth = width
}
+ var cmds []tea.Cmd
if s.leftPanel != nil {
- s.leftPanel.SetSize(leftWidth, topHeight)
+ cmd := s.leftPanel.SetSize(leftWidth, topHeight)
+ cmds = append(cmds, cmd)
}
if s.rightPanel != nil {
- s.rightPanel.SetSize(rightWidth, topHeight)
+ cmd := s.rightPanel.SetSize(rightWidth, topHeight)
+ cmds = append(cmds, cmd)
}
if s.bottomPanel != nil {
- s.bottomPanel.SetSize(width, bottomHeight)
+ cmd := s.bottomPanel.SetSize(width, bottomHeight)
+ cmds = append(cmds, cmd)
}
+ return tea.Batch(cmds...)
}
func (s *splitPaneLayout) GetSize() (int, int) {
return s.width, s.height
}
-func (s *splitPaneLayout) SetLeftPanel(panel Container) {
+func (s *splitPaneLayout) SetLeftPanel(panel Container) tea.Cmd {
s.leftPanel = panel
if s.width > 0 && s.height > 0 {
- s.SetSize(s.width, s.height)
+ return s.SetSize(s.width, s.height)
}
+ return nil
}
-func (s *splitPaneLayout) SetRightPanel(panel Container) {
+func (s *splitPaneLayout) SetRightPanel(panel Container) tea.Cmd {
s.rightPanel = panel
if s.width > 0 && s.height > 0 {
- s.SetSize(s.width, s.height)
+ return s.SetSize(s.width, s.height)
}
+ return nil
}
-func (s *splitPaneLayout) SetBottomPanel(panel Container) {
+func (s *splitPaneLayout) SetBottomPanel(panel Container) tea.Cmd {
s.bottomPanel = panel
if s.width > 0 && s.height > 0 {
- s.SetSize(s.width, s.height)
+ return s.SetSize(s.width, s.height)
}
+ return nil
}
func (s *splitPaneLayout) BindingKeys() []key.Binding {