diff options
| author | citrons <citrons@mondecitronne.com> | 2025-06-07 15:58:35 -0500 |
|---|---|---|
| committer | citrons <citrons@mondecitronne.com> | 2025-06-07 16:02:18 -0500 |
| commit | 4fd84671877754ae3b66acb8a8af8cf0935a53c9 (patch) | |
| tree | 4d7b6de81bd28e0c1184037f236e1a0e3701b646 /tui/layout.go | |
| parent | 4067adfc361e87bc4e73e31fdfc4933802f05413 (diff) | |
context menus
Diffstat (limited to 'tui/layout.go')
| -rw-r--r-- | tui/layout.go | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tui/layout.go b/tui/layout.go index ede0fa6..039ce52 100644 --- a/tui/layout.go +++ b/tui/layout.go @@ -24,6 +24,7 @@ type Box struct { computedRect rect isOverflow bool mouseEvent MouseEvent + contextMenu []string } type BoxSize int @@ -439,6 +440,9 @@ func (b *Box) mouseEvents(ev MouseEvent) { bev.Pressed = ev.Pressed bev.Released = ev.Released bev.Scroll = ev.Scroll + if ev.Pressed && ev.Button == 2 && len(b.contextMenu) > 0 { + openContextMenu(ev.X, ev.Y, b) + } } b.mouseEvent = bev for _, c := range b.children { @@ -470,5 +474,14 @@ func DrawLayout() { b.drawComputed(parentRect, DefaultStyle) ev := getLastEvent() - b.mouseEvents(ev.Mouse) + if menuState.open { + processContextMenu(ev.Mouse) + var releaseEvent MouseEvent + releaseEvent.Button = ev.Mouse.Button + releaseEvent.ReleasedAnywhere = ev.Mouse.ReleasedAnywhere + b.mouseEvents(releaseEvent) + } else { + b.mouseEvents(ev.Mouse) + } + drawContextMenu() } |
