diff options
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() } |
