Compare commits

...

3 Commits

Author SHA1 Message Date
17765e484f fix(convert): Fix scrolling and add horizontal padding
- Removed outer VScroll that was scrolling entire content including video player
- Added VScroll to Simple tab (Advanced already had it)
- Only settings panel now scrolls, video/metadata stay fixed
- Changed mainContent to use NewPadded for horizontal spacing
- Improves usability and reduces claustrophobic feeling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 15:48:29 -05:00
079969d375 fix(settings): Fix double scrollbar issue with single scroll container
- Removed individual VScroll containers from each tab
- Added single VScroll around entire tabs container
- Matches convert module pattern of one scroll for main content
- Eliminates overlapping scrollbars and janky scrolling behavior

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 15:38:43 -05:00
2d79b3322d fix(ui): Force white text on all enabled module tiles
- Changed Refresh() to always use TextColor for enabled modules
- Previously was calling getContrastColor() which changed text to black on bright backgrounds
- All module tiles now consistently use white text as intended

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 15:21:42 -05:00
3 changed files with 13 additions and 11 deletions

View File

@ -266,7 +266,7 @@ func (r *moduleTileRenderer) Refresh() {
// Update tile color and text color based on enabled state
if r.tile.enabled {
r.bg.FillColor = r.tile.color
r.label.Color = getContrastColor(r.tile.color)
r.label.Color = TextColor // Always white text for enabled modules
if r.lockIcon != nil {
r.lockIcon.Hide()
}

13
main.go
View File

@ -8479,8 +8479,9 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
// Wrap simple options with settings box at top
simpleWithSettings := container.NewVBox(settingsBox, simpleOptions)
// Keep Simple lightweight; wrap Advanced in its own scroll to avoid bloating MinSize.
simpleScrollBox := simpleWithSettings
// Both Simple and Advanced get their own scrolling
simpleScrollBox := container.NewVScroll(simpleWithSettings)
simpleScrollBox.SetMinSize(fyne.NewSize(0, 0))
advancedScrollBox := container.NewVScroll(advancedOptions)
advancedScrollBox.SetMinSize(fyne.NewSize(0, 0))
@ -8714,8 +8715,8 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
// Split: left side (video + metadata) takes 60% | right side (options) takes 40%
mainSplit := container.New(&fixedHSplitLayout{ratio: 0.6}, leftColumn, optionsPanel)
// Core content now just the split; ancillary controls stack in bottomSection.
mainContent := container.NewMax(mainSplit)
// Add horizontal padding around the split (10px on each side)
mainContent := container.NewPadded(mainSplit)
resetBtn := widget.NewButton("Reset", func() {
if resetConvertDefaults != nil {
@ -9042,8 +9043,6 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
// Update stats bar
state.updateStatsBar()
scrollableMain := container.NewVScroll(mainContent)
// Build footer sections
footerSections := []fyne.CanvasObject{
snippetRow,
@ -9058,7 +9057,7 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
nil,
container.NewVBox(footerSections...),
nil, nil,
container.NewMax(scrollableMain),
mainContent,
)
return container.NewBorder(backBar, moduleFooter(convertColor, actionBar, state.statsBar), nil, nil, mainWithFooter)

View File

@ -165,7 +165,10 @@ func buildSettingsView(state *appState) fyne.CanvasObject {
)
tabs.SetTabLocation(container.TabLocationTop)
return container.NewBorder(topBar, bottomBar, nil, nil, tabs)
// Single scroll container for entire tabs area
scrollableTabs := container.NewVScroll(tabs)
return container.NewBorder(topBar, bottomBar, nil, nil, scrollableTabs)
}
func buildDependenciesTab(state *appState) fyne.CanvasObject {
@ -266,7 +269,7 @@ func buildDependenciesTab(state *appState) fyne.CanvasObject {
})
content.Add(refreshBtn)
return container.NewVScroll(content)
return content
}
func buildPreferencesTab(state *appState) fyne.CanvasObject {
@ -283,7 +286,7 @@ func buildPreferencesTab(state *appState) fyne.CanvasObject {
content.Add(widget.NewLabel("• UI theme preferences"))
content.Add(widget.NewLabel("• Automatic updates"))
return container.NewVScroll(content)
return content
}
func (s *appState) showSettingsView() {