theme/cupertino/dropdown.go
Functions
func PaintMenu
func (p DropdownPainter) PaintMenu(canvas widget.Canvas, st *dropdown.MenuPaintState) {
if st.Bounds.IsEmpty() {
return
}
colors := st.ColorScheme
if colors == (dropdown.DropdownColorScheme{}) {
colors = p.resolveColors()
}
// Menu background with rounded corners (iOS popover).
canvas.DrawRoundRect(st.Bounds, colors.MenuBg, cupDDMenuRadius)
canvas.StrokeRoundRect(st.Bounds, colors.MenuBorder, cupDDMenuRadius, cupDDBorderWidth)
canvas.PushClip(st.Bounds)
defer canvas.PopClip()
endIndex := st.ScrollOffset + st.VisibleCount
if endIndex > len(st.Items) {
endIndex = len(st.Items)
}
for i := st.ScrollOffset; i < endIndex; i++ {
item := st.Items[i]
row := i - st.ScrollOffset
itemRect := geometry.Rect{
Min: geometry.Pt(st.Bounds.Min.X, st.Bounds.Min.Y+float32(row)*st.ItemHeight),
Max: geometry.Pt(st.Bounds.Max.X, st.Bounds.Min.Y+float32(row+1)*st.ItemHeight),
}
cupDDPaintMenuItem(canvas, itemRect, item, i, st.HighlightedIndex, st.SelectedIndex, colors)
}
}
func PaintTrigger
PaintTrigger renders a dropdown trigger according to Apple HIG specifications.
func (p DropdownPainter) PaintTrigger(canvas widget.Canvas, st *dropdown.TriggerPaintState) {
if st.Bounds.IsEmpty() {
return
}
colors := st.ColorScheme
if colors == (dropdown.DropdownColorScheme{}) {
colors = p.resolveColors()
}
cupDDPaintTriggerBg(canvas, st, colors)
cupDDPaintTriggerBorder(canvas, st, colors)
cupDDPaintTriggerText(canvas, st, colors)
cupDDPaintTriggerChevron(canvas, st, colors)
if st.Focused && !st.Disabled {
cupDDDrawFocusRing(canvas, st.Bounds, colors)
}
}
Structs
type DropdownPainter struct
DropdownPainter renders dropdowns using Apple HIG design tokens.
Cupertino dropdowns use rounded popover menus with subtle shadows
and a chevron indicator following iOS picker conventions.
If Theme is nil, DropdownPainter falls back to the default system blue palette.
type DropdownPainter struct {
Theme *Theme // nil uses default system blue fallback
}
PaintMenu renders a dropdown menu according to Apple HIG specifications.