Align convert footer to single tinted bar with actions

This commit is contained in:
Stu Leak 2025-12-17 05:55:25 -05:00
parent 851230e1ea
commit a63c1154a2

19
main.go
View File

@ -114,8 +114,8 @@ func statusStrip(bar *ui.ConversionStatsBar) fyne.CanvasObject {
return container.NewMax(bg, content) return container.NewMax(bg, content)
} }
// moduleFooter stacks the dark status strip above a tinted action/footer area. // moduleFooter creates a single tinted footer bar with the dark status strip overlaid.
// Pass a content node for module-specific footer controls; use layout.NewSpacer() if empty. // If content is nil, a spacer is used.
func moduleFooter(tint color.Color, content fyne.CanvasObject, bar *ui.ConversionStatsBar) fyne.CanvasObject { func moduleFooter(tint color.Color, content fyne.CanvasObject, bar *ui.ConversionStatsBar) fyne.CanvasObject {
if content == nil { if content == nil {
content = layout.NewSpacer() content = layout.NewSpacer()
@ -123,7 +123,8 @@ func moduleFooter(tint color.Color, content fyne.CanvasObject, bar *ui.Conversio
bg := canvas.NewRectangle(tint) bg := canvas.NewRectangle(tint)
bg.SetMinSize(fyne.NewSize(0, 44)) bg.SetMinSize(fyne.NewSize(0, 44))
tinted := container.NewMax(bg, container.NewPadded(content)) tinted := container.NewMax(bg, container.NewPadded(content))
return container.NewVBox(statusStrip(bar), tinted) // Overlay the status strip above the tinted bar to keep a single bar visual
return container.NewStack(tinted, statusStrip(bar))
} }
// resolveTargetAspect resolves an aspect ratio value or source aspect // resolveTargetAspect resolves an aspect ratio value or source aspect
@ -5998,18 +5999,16 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
// Update stats bar // Update stats bar
state.updateStatsBar() state.updateStatsBar()
// Stack status + snippet + actions tightly to avoid dead air, outside the scroll area. scrollableMain := container.NewVScroll(mainContent)
// Keep snippet/actions above the consistent status bar
scrollableMain := container.NewVScroll(container.NewVBox( footerContent := container.NewVBox(
mainContent,
widget.NewSeparator(),
snippetConfigRow, snippetConfigRow,
snippetRow, snippetRow,
widget.NewSeparator(), widget.NewSeparator(),
actionBar, actionBar,
)) )
return container.NewBorder(backBar, moduleFooter(convertColor, layout.NewSpacer(), state.statsBar), nil, nil, container.NewMax(scrollableMain)) return container.NewBorder(backBar, moduleFooter(convertColor, footerContent, state.statsBar), nil, nil, container.NewMax(scrollableMain))
} }