Skip to content

Commit

Permalink
Add Alignment to Select
Browse files Browse the repository at this point in the history
Need to pass it all the way down to menu item. Do so internally for now,
as we don't need to expose alignment of menu items publicly.

Fixes fyne-io#2329
  • Loading branch information
andydotxyz committed Jul 22, 2021
1 parent 3c20a64 commit 8f3d330
Show file tree
Hide file tree
Showing 80 changed files with 282 additions and 244 deletions.
6 changes: 3 additions & 3 deletions container/testdata/doctabs/desktop/tapped_all_tabs.xml
Expand Up @@ -56,13 +56,13 @@
<rectangle fillColor="background" size="74x144"/>
<container pos="0,4" size="74x144">
<widget size="74x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Test1</text>
<text pos="8,4" size="58x21">Test1</text>
</widget>
<widget pos="0,33" size="74x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Test2</text>
<text pos="8,4" size="58x21">Test2</text>
</widget>
<widget pos="0,66" size="74x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Test3</text>
<text pos="8,4" size="58x21">Test3</text>
</widget>
<widget pos="0,99" size="74x29" type="*widget.menuItem">
<text pos="8,4" size="58x21">Another</text>
Expand Down
6 changes: 3 additions & 3 deletions container/testdata/doctabs/mobile/tapped_all_tabs.xml
Expand Up @@ -68,13 +68,13 @@
<rectangle fillColor="background" size="74x144"/>
<container pos="0,4" size="74x144">
<widget size="74x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Test1</text>
<text pos="8,4" size="58x21">Test1</text>
</widget>
<widget pos="0,33" size="74x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Test2</text>
<text pos="8,4" size="58x21">Test2</text>
</widget>
<widget pos="0,66" size="74x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Test3</text>
<text pos="8,4" size="58x21">Test3</text>
</widget>
<widget pos="0,99" size="74x29" type="*widget.menuItem">
<text pos="8,4" size="58x21">Another</text>
Expand Down
Expand Up @@ -46,14 +46,14 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand All @@ -75,14 +75,14 @@
<rectangle fillColor="background" size="76x111"/>
<container pos="0,4" size="76x111">
<widget size="76x29" type="*widget.menuItem">
<text pos="8,4" size="37x21">File 1</text>
<text pos="8,4" size="60x21">File 1</text>
</widget>
<widget pos="0,33" size="76x29" type="*widget.menuItem">
<text pos="8,4" size="37x21">File 2</text>
<text pos="8,4" size="60x21">File 2</text>
</widget>
<widget pos="0,66" size="76x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="76x29"/>
<text pos="8,4" size="40x21">Older</text>
<text pos="8,4" size="60x21">Older</text>
<image pos="56,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,14 +46,14 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,14 +46,14 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand All @@ -76,13 +76,13 @@
<container pos="0,4" size="76x111">
<widget size="76x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="76x29"/>
<text pos="8,4" size="37x21">File 1</text>
<text pos="8,4" size="60x21">File 1</text>
</widget>
<widget pos="0,33" size="76x29" type="*widget.menuItem">
<text pos="8,4" size="37x21">File 2</text>
<text pos="8,4" size="60x21">File 2</text>
</widget>
<widget pos="0,66" size="76x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Older</text>
<text pos="8,4" size="60x21">Older</text>
<image pos="56,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,14 +46,14 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand All @@ -75,14 +75,14 @@
<rectangle fillColor="background" size="76x111"/>
<container pos="0,4" size="76x111">
<widget size="76x29" type="*widget.menuItem">
<text pos="8,4" size="37x21">File 1</text>
<text pos="8,4" size="60x21">File 1</text>
</widget>
<widget pos="0,33" size="76x29" type="*widget.menuItem">
<text pos="8,4" size="37x21">File 2</text>
<text pos="8,4" size="60x21">File 2</text>
</widget>
<widget pos="0,66" size="76x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="76x29"/>
<text pos="8,4" size="40x21">Older</text>
<text pos="8,4" size="60x21">Older</text>
<image pos="56,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,7 +46,7 @@
<rectangle fillColor="background" size="55x78"/>
<container pos="0,4" size="55x78">
<widget size="55x29" type="*widget.menuItem">
<text pos="8,4" size="36x21">Copy</text>
<text pos="8,4" size="39x21">Copy</text>
</widget>
<widget pos="0,33" size="55x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Paste</text>
Expand Down
Expand Up @@ -46,13 +46,13 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,7 +46,7 @@
<rectangle fillColor="background" size="55x78"/>
<container pos="0,4" size="55x78">
<widget size="55x29" type="*widget.menuItem">
<text pos="8,4" size="36x21">Copy</text>
<text pos="8,4" size="39x21">Copy</text>
</widget>
<widget pos="0,33" size="55x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Paste</text>
Expand Down
Expand Up @@ -46,13 +46,13 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -47,13 +47,13 @@
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,14 +46,14 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,14 +46,14 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -46,14 +46,14 @@
<rectangle fillColor="background" size="85x111"/>
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -47,13 +47,13 @@
<container pos="0,4" size="85x111">
<widget size="85x29" type="*widget.menuItem">
<rectangle fillColor="focus" size="85x29"/>
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="69x21">New</text>
</widget>
<widget pos="0,33" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
<text pos="8,4" size="69x21">Open</text>
</widget>
<widget pos="0,66" size="85x29" type="*widget.menuItem">
<text pos="8,4" size="49x21">Recent</text>
<text pos="8,4" size="69x21">Recent</text>
<image pos="65,4" rsc="menuExpandIcon" size="iconInlineSize"/>
</widget>
</container>
Expand Down
Expand Up @@ -40,7 +40,7 @@
<rectangle fillColor="background" size="56x78"/>
<container pos="0,4" size="56x78">
<widget size="56x29" type="*widget.menuItem">
<text pos="8,4" size="33x21">New</text>
<text pos="8,4" size="40x21">New</text>
</widget>
<widget pos="0,33" size="56x29" type="*widget.menuItem">
<text pos="8,4" size="40x21">Open</text>
Expand Down
Expand Up @@ -40,7 +40,7 @@
<rectangle fillColor="background" size="55x78"/>
<container pos="0,4" size="55x78">
<widget size="55x29" type="*widget.menuItem">
<text pos="8,4" size="36x21">Copy</text>
<text pos="8,4" size="39x21">Copy</text>
</widget>
<widget pos="0,33" size="55x29" type="*widget.menuItem">
<text pos="8,4" size="39x21">Paste</text>
Expand Down
8 changes: 8 additions & 0 deletions widget/menu.go
Expand Up @@ -14,6 +14,7 @@ var _ fyne.Tappable = (*Menu)(nil)
// Menu is a widget for displaying a fyne.Menu.
type Menu struct {
widget.Base
alignment fyne.TextAlign
Items []fyne.CanvasObject
OnDismiss func()
activeItem *menuItem
Expand Down Expand Up @@ -241,6 +242,13 @@ func (r *menuRenderer) MinSize() fyne.Size {
func (r *menuRenderer) Refresh() {
r.layoutActiveChild()
r.ShadowingRenderer.RefreshShadow()

for _, i := range r.m.Items {
if txt, ok := i.(*menuItem); ok {
txt.alignment = r.m.alignment
}
}

canvas.Refresh(r.m)
}

Expand Down
8 changes: 6 additions & 2 deletions widget/menu_item.go
Expand Up @@ -16,12 +16,14 @@ type menuItem struct {
Item *fyne.MenuItem
Parent *Menu

child *Menu
alignment fyne.TextAlign
child *Menu
}

// newMenuItem creates a new menuItem.
func newMenuItem(item *fyne.MenuItem, parent *Menu) *menuItem {
i := &menuItem{Item: item, Parent: parent}
i.alignment = parent.alignment
i.ExtendBaseWidget(i)
return i
}
Expand All @@ -43,6 +45,7 @@ func (i *menuItem) CreateRenderer() fyne.WidgetRenderer {
background := canvas.NewRectangle(theme.HoverColor())
background.Hide()
text := canvas.NewText(i.Item.Label, theme.ForegroundColor())
text.Alignment = i.alignment
objects := []fyne.CanvasObject{background, text}
var icon *canvas.Image
if i.Item.ChildMenu != nil {
Expand Down Expand Up @@ -171,7 +174,7 @@ func (r *menuItemRenderer) Layout(size fyne.Size) {

r.text.TextSize = theme.TextSize()
r.text.Color = theme.ForegroundColor()
r.text.Resize(r.text.MinSize())
r.text.Resize(size.Subtract(fyne.NewSize(theme.Padding()*4, theme.Padding()*2)))
r.text.Move(fyne.NewPos(padding.Width/2, padding.Height/2))

if r.icon != nil {
Expand Down Expand Up @@ -205,6 +208,7 @@ func (r *menuItemRenderer) Refresh() {
r.background.Hide()
}
r.background.Refresh()
r.text.Alignment = r.i.alignment
canvas.Refresh(r.i)
}

Expand Down

0 comments on commit 8f3d330

Please sign in to comment.