[GH-ISSUE #195] Grid within grid #151

Closed
opened 2026-03-04 01:02:26 +03:00 by kerem · 1 comment
Owner

Originally created by @delaneyj on GitHub (Nov 26, 2018).
Original GitHub issue: https://github.com/rivo/tview/issues/195

package main

import (
	"github.com/rivo/tview"
)

func main() {
	newPrimitive := func(text string) tview.Primitive {
		return tview.NewTextView().
			SetTextAlign(tview.AlignCenter).
			SetText(text)
	}
	menu := newPrimitive("Menu")
	sideBar := newPrimitive("Side Bar")

	grid := tview.NewGrid().
		SetRows(3, 0, 3).
		SetColumns(30, 0, 30).
		SetBorders(true).
		AddItem(newPrimitive("Header"), 0, 0, 1, 3, 0, 0, false).
		AddItem(newPrimitive("Footer"), 2, 0, 1, 3, 0, 0, false)

	innerGrid := tview.NewGrid().
		SetColumns(30, 0, 30).
		SetBorders(true).
		AddItem(newPrimitive("Inner Menu"), 0, 0, 1, 1, 0, 0, false).
		AddItem(newPrimitive("Inner Main"), 0, 1, 1, 1, 0, 0, false).
		AddItem(newPrimitive("Inner Sidebar"), 0, 2, 1, 1, 0, 0, false)

	grid.AddItem(menu, 1, 0, 1, 1, 0, 0, false).
		AddItem(innerGrid, 1, 1, 1, 1, 0, 0, false).
		AddItem(sideBar, 1, 2, 1, 1, 0, 0, false)

	if err := tview.NewApplication().SetRoot(grid, true).SetFocus(grid).Run(); err != nil {
		panic(err)
	}
}

Produces an offset inner grid.

image

Originally created by @delaneyj on GitHub (Nov 26, 2018). Original GitHub issue: https://github.com/rivo/tview/issues/195 ```Go package main import ( "github.com/rivo/tview" ) func main() { newPrimitive := func(text string) tview.Primitive { return tview.NewTextView(). SetTextAlign(tview.AlignCenter). SetText(text) } menu := newPrimitive("Menu") sideBar := newPrimitive("Side Bar") grid := tview.NewGrid(). SetRows(3, 0, 3). SetColumns(30, 0, 30). SetBorders(true). AddItem(newPrimitive("Header"), 0, 0, 1, 3, 0, 0, false). AddItem(newPrimitive("Footer"), 2, 0, 1, 3, 0, 0, false) innerGrid := tview.NewGrid(). SetColumns(30, 0, 30). SetBorders(true). AddItem(newPrimitive("Inner Menu"), 0, 0, 1, 1, 0, 0, false). AddItem(newPrimitive("Inner Main"), 0, 1, 1, 1, 0, 0, false). AddItem(newPrimitive("Inner Sidebar"), 0, 2, 1, 1, 0, 0, false) grid.AddItem(menu, 1, 0, 1, 1, 0, 0, false). AddItem(innerGrid, 1, 1, 1, 1, 0, 0, false). AddItem(sideBar, 1, 2, 1, 1, 0, 0, false) if err := tview.NewApplication().SetRoot(grid, true).SetFocus(grid).Run(); err != nil { panic(err) } } ``` Produces an offset inner grid. ![image](https://user-images.githubusercontent.com/438252/49033688-af027e80-f164-11e8-8164-9970b975e0e1.png)
kerem closed this issue 2026-03-04 01:02:26 +03:00
Author
Owner

@rivo commented on GitHub (Dec 3, 2018):

Thanks for catching this. The latest commit fixes this.

<!-- gh-comment-id:443642347 --> @rivo commented on GitHub (Dec 3, 2018): Thanks for catching this. The latest commit fixes this.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/tview#151
No description provided.