1diff --git a/tuivax/ui.go b/tuivax/ui.go
2index a4d25c4..205a348 100644
3--- a/tuivax/ui.go
4+++ b/tuivax/ui.go
5@@ -23,7 +23,6 @@ type UIVx struct {
6 vx *vaxis.Vaxis
7
8 page string
9- quit bool
10 menu list.List
11 }
12
13@@ -38,13 +37,13 @@ func (ui *UIVx) menuPage(win vaxis.Window, ev vaxis.Event) {
14 case vaxis.Key:
15 switch msg.String() {
16 case "Ctrl+c", "q", "Escape":
17- ui.quit = true
18+ ui.vx.PostEvent(Quit{})
19 case "Down", "j":
20 ui.menu.Down()
21 case "Up", "k":
22 ui.menu.Up()
23 case "Enter":
24- ui.page = menuChoices[ui.menu.Index()]
25+ ui.vx.PostEvent(Navigate{To: menuChoices[ui.menu.Index()]})
26 }
27 }
28 ui.menu.Draw(win)
29@@ -55,9 +54,9 @@ func (ui *UIVx) keysPage(win vaxis.Window, ev vaxis.Event) {
30 case vaxis.Key:
31 switch msg.String() {
32 case "Ctrl+c":
33- ui.quit = true
34+ ui.vx.PostEvent(Quit{})
35 case "q", "Escape":
36- ui.page = "menu"
37+ ui.vx.PostEvent(Navigate{To: "menu"})
38 }
39 }
40 win.Print(vaxis.Segment{Text: "Hello, World!"})
41@@ -82,6 +81,13 @@ func NewTui(opts vaxis.Options, shared *common.SharedModel) {
42 win := vx.Window()
43 win.Clear()
44
45+ switch msg := ev.(type) {
46+ case Quit:
47+ return
48+ case Navigate:
49+ ui.page = msg.To
50+ }
51+
52 // header
53 win.Print(vaxis.Segment{
54 Text: fmt.Sprintf("pico.sh • %s", ui.page),
55@@ -98,10 +104,6 @@ func NewTui(opts vaxis.Options, shared *common.SharedModel) {
56 ui.keysPage(pageWin, ev)
57 }
58
59- if ui.quit {
60- return
61- }
62-
63 vx.Render()
64 }
65 }