From c6fc76172a5e2b8d21eae5f15d508de999fe2f17 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Sun, 18 Jun 2023 16:49:02 -0700 Subject: [PATCH] fallback to default Supersonic theme before falling back to Fyne theme --- ui/theme/theme.go | 53 ++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/ui/theme/theme.go b/ui/theme/theme.go index 4c81700..8a02bd3 100644 --- a/ui/theme/theme.go +++ b/ui/theme/theme.go @@ -74,63 +74,68 @@ func (m *MyTheme) Color(name fyne.ThemeColorName, _ fyne.ThemeVariant) color.Col thFile = m.defaultThemeFile } colors := thFile.DarkColors + defColors := m.defaultThemeFile.DarkColors if variant == theme.VariantLight { colors = thFile.LightColors + defColors = m.defaultThemeFile.LightColors } switch name { case ColorNamePageBackground: - return colorOrDefault(colors.PageBackground, name, variant) + return colorOrDefault(colors.PageBackground, defColors.PageBackground, name, variant) case theme.ColorNameBackground: - return colorOrDefault(colors.Background, name, variant) + return colorOrDefault(colors.Background, defColors.Background, name, variant) case theme.ColorNameButton: - return colorOrDefault(colors.Button, name, variant) + return colorOrDefault(colors.Button, defColors.Button, name, variant) case theme.ColorNameDisabled: - return colorOrDefault(colors.Disabled, name, variant) + return colorOrDefault(colors.Disabled, defColors.Disabled, name, variant) case theme.ColorNameDisabledButton: - return colorOrDefault(colors.DisabledButton, name, variant) + return colorOrDefault(colors.DisabledButton, defColors.DisabledButton, name, variant) case theme.ColorNameError: - return colorOrDefault(colors.Error, name, variant) + return colorOrDefault(colors.Error, defColors.Error, name, variant) case theme.ColorNameFocus: - return colorOrDefault(colors.Focus, name, variant) + return colorOrDefault(colors.Focus, defColors.Focus, name, variant) case theme.ColorNameForeground: - return colorOrDefault(colors.Foreground, name, variant) + return colorOrDefault(colors.Foreground, defColors.Foreground, name, variant) case theme.ColorNameHover: - return colorOrDefault(colors.Hover, name, variant) + return colorOrDefault(colors.Hover, defColors.Hover, name, variant) case theme.ColorNameInputBackground: - return colorOrDefault(colors.InputBackground, name, variant) + return colorOrDefault(colors.InputBackground, defColors.InputBackground, name, variant) case theme.ColorNameInputBorder: - return colorOrDefault(colors.InputBorder, name, variant) + return colorOrDefault(colors.InputBorder, defColors.InputBorder, name, variant) case theme.ColorNameMenuBackground: - return colorOrDefault(colors.MenuBackground, name, variant) + return colorOrDefault(colors.MenuBackground, defColors.MenuBackground, name, variant) case theme.ColorNameOverlayBackground: - return colorOrDefault(colors.OverlayBackground, name, variant) + return colorOrDefault(colors.OverlayBackground, defColors.OverlayBackground, name, variant) case theme.ColorNamePlaceHolder: - return colorOrDefault(colors.Placeholder, name, variant) + return colorOrDefault(colors.Placeholder, defColors.Placeholder, name, variant) case theme.ColorNamePressed: - return colorOrDefault(colors.Pressed, name, variant) + return colorOrDefault(colors.Pressed, defColors.Pressed, name, variant) case theme.ColorNamePrimary: - return colorOrDefault(colors.Primary, name, variant) + return colorOrDefault(colors.Primary, defColors.Primary, name, variant) case theme.ColorNameScrollBar: - return colorOrDefault(colors.ScrollBar, name, variant) + return colorOrDefault(colors.ScrollBar, defColors.ScrollBar, name, variant) case theme.ColorNameSelection: - return colorOrDefault(colors.Selection, name, variant) + return colorOrDefault(colors.Selection, defColors.Selection, name, variant) case theme.ColorNameSeparator: - return colorOrDefault(colors.Separator, name, variant) + return colorOrDefault(colors.Separator, defColors.Separator, name, variant) case theme.ColorNameShadow: - return colorOrDefault(colors.Shadow, name, variant) + return colorOrDefault(colors.Shadow, defColors.Shadow, name, variant) case theme.ColorNameSuccess: - return colorOrDefault(colors.Success, name, variant) + return colorOrDefault(colors.Success, defColors.Success, name, variant) case theme.ColorNameWarning: - return colorOrDefault(colors.Warning, name, variant) + return colorOrDefault(colors.Warning, defColors.Warning, name, variant) default: - return colorOrDefault("", name, variant) + return colorOrDefault("", "", name, variant) } } -func colorOrDefault(colorStr string, name fyne.ThemeColorName, variant fyne.ThemeVariant) color.Color { +func colorOrDefault(colorStr, defColorStr string, name fyne.ThemeColorName, variant fyne.ThemeVariant) color.Color { if c, err := ColorStringToColor(colorStr); err == nil { return c } + if c, err := ColorStringToColor(defColorStr); err == nil { + return c + } return theme.DefaultTheme().Color(name, variant) }