diff --git a/elements/basic/button.go b/elements/basic/button.go index 1e57cc9..ed72826 100644 --- a/elements/basic/button.go +++ b/elements/basic/button.go @@ -156,7 +156,6 @@ func (element *Button) updateMinimumSize () { minimumSize = element.drawer.LayoutBounds() } - minimumSize = padding.Inverse().Apply(minimumSize) minimumSize = minimumSize.Sub(minimumSize.Min) if element.hasIcon { @@ -172,6 +171,8 @@ func (element *Button) updateMinimumSize () { } } } + + minimumSize = padding.Inverse().Apply(minimumSize) element.core.SetMinimumSize(minimumSize.Dx(), minimumSize.Dy()) } @@ -210,14 +211,15 @@ func (element *Button) drawText () { foreground := element.theme.Color(theme.ColorForeground, state) sink := element.theme.Sink(theme.PatternButton) margin := element.theme.Margin(theme.PatternButton) - var offset image.Point + + offset := image.Pt ( + bounds.Dx() / 2, + bounds.Dy() / 2).Add(bounds.Min) if element.showText { textBounds := element.drawer.LayoutBounds() - offset = image.Point { - X: bounds.Min.X + (bounds.Dx() - textBounds.Dx()) / 2, - Y: bounds.Min.Y + (bounds.Dy() - textBounds.Dy()) / 2, - } + offset.X -= textBounds.Dx() / 2 + offset.Y -= textBounds.Dy() / 2 offset.Y -= textBounds.Min.Y offset.X -= textBounds.Min.X @@ -231,25 +233,27 @@ func (element *Button) drawText () { if icon != nil { iconBounds := icon.Bounds() addedWidth := iconBounds.Dx() + iconOffset := offset if element.showText { addedWidth += margin.X } - iconOffset := offset iconOffset.X -= addedWidth / 2 iconOffset.Y = bounds.Min.Y + (bounds.Dy() - iconBounds.Dy()) / 2 if element.pressed { - iconOffset.Y += sink.Y + iconOffset = iconOffset.Add(sink) } offset.X += addedWidth / 2 icon.Draw(element.core, foreground, iconOffset) } } - - element.drawer.Draw(element.core, foreground, offset) + + if element.showText { + element.drawer.Draw(element.core, foreground, offset) + } } diff --git a/examples/icons/main.go b/examples/icons/main.go index 7b50b69..133e97e 100644 --- a/examples/icons/main.go +++ b/examples/icons/main.go @@ -22,6 +22,12 @@ func run () { container.Adopt(icons(theme.IconHome, theme.IconRepositories), true) container.Adopt(icons(theme.IconFile, theme.IconCD), true) container.Adopt(icons(theme.IconOpen, theme.IconRemoveBookmark), true) + + closeButton := basicElements.NewButton("Ok") + closeButton.SetIcon(theme.IconYes) + closeButton.ShowText(false) + closeButton.OnClick(tomo.Stop) + container.Adopt(closeButton, false) window.OnClose(tomo.Stop) window.Show()