diff --git a/main.go b/main.go index c4e686f..88c941e 100644 --- a/main.go +++ b/main.go @@ -5672,10 +5672,7 @@ func (u *ui) syncButtonGroup(gtx layout.Context) layout.Dimensions { menuDims := layout.Inset{Top: unit.Dp(6)}.Layout(menuGTX, u.syncMenu) menuCall := menuOps.Stop() - menuX := rowDims.Size.X - menuDims.Size.X - if menuX < 0 { - menuX = 0 - } + menuX := anchoredMenuX(rowDims.Size.X, menuDims.Size.X) stack := op.Offset(image.Pt(menuX, rowDims.Size.Y)).Push(gtx.Ops) menuCall.Add(gtx.Ops) stack.Pop() @@ -7198,10 +7195,7 @@ func (u *ui) mainMenuButtonGroup(gtx layout.Context) layout.Dimensions { menuDims := layout.Inset{Top: unit.Dp(6)}.Layout(menuGTX, u.mainMenu) menuCall := menuOps.Stop() - menuX := buttonDims.Size.X - menuDims.Size.X - if menuX < 0 { - menuX = 0 - } + menuX := anchoredMenuX(buttonDims.Size.X, menuDims.Size.X) stack := op.Offset(image.Pt(menuX, buttonDims.Size.Y)).Push(gtx.Ops) menuCall.Add(gtx.Ops) stack.Pop() @@ -7224,6 +7218,10 @@ func (u *ui) mainMenuRightAlignsToTrigger() bool { return true } +func anchoredMenuX(triggerWidth, menuWidth int) int { + return triggerWidth - menuWidth +} + func detailLine(th *material.Theme, label, value string) layout.Widget { return func(gtx layout.Context) layout.Dimensions { valueSize := unit.Sp(16) diff --git a/main_test.go b/main_test.go index 3aabdac..cebd319 100644 --- a/main_test.go +++ b/main_test.go @@ -356,6 +356,17 @@ func TestUIMainMenuAnchorsMatchAcrossModes(t *testing.T) { } } +func TestAnchoredMenuXAllowsWiderMenusToExtendLeft(t *testing.T) { + t.Parallel() + + if got := anchoredMenuX(48, 160); got != -112 { + t.Fatalf("anchoredMenuX(48, 160) = %d, want -112", got) + } + if got := anchoredMenuX(160, 48); got != 112 { + t.Fatalf("anchoredMenuX(160, 48) = %d, want 112", got) + } +} + func TestUICurrentVaultSummary(t *testing.T) { t.Parallel()