Files
wehub-resource-sync c4536f7e05
CI / test (push) Failing after 1s
CI / macOS amd64 (push) Has been cancelled
CI / macOS arm64 (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:30:31 +08:00

42 lines
938 B
Go

package gui
import (
"image/color"
"gioui.org/layout"
"gioui.org/unit"
"gioui.org/widget"
"gioui.org/widget/material"
)
// FocusBorderStyle implements a styling a focused widget.
type FocusBorderStyle struct {
Focused bool
BorderWidth unit.Dp
Color color.NRGBA
}
// FocusBorder creates a focus border for a focused widget.
func FocusBorder(th *material.Theme, focused bool) FocusBorderStyle {
return FocusBorderStyle{
Focused: focused,
BorderWidth: unit.Dp(2),
Color: th.ContrastBg,
}
}
// Layout adds a focus border and styling.
func (focus FocusBorderStyle) Layout(gtx layout.Context, w layout.Widget) layout.Dimensions {
inset := layout.UniformInset(focus.BorderWidth)
if !focus.Focused {
return inset.Layout(gtx, w)
}
return widget.Border{
Color: focus.Color,
Width: focus.BorderWidth,
}.Layout(gtx, func(gtx layout.Context) layout.Dimensions {
return inset.Layout(gtx, w)
})
}