@@ -110,8 +110,18 @@ private static void LayoutTabListCards(
110110 theme . NodePadding * 2.5 + maxItemCount * descLineHeight + theme . NodePadding ) ;
111111 double rowGap = Math . Max ( theme . NodePadding * 1.6 , 16 ) ;
112112
113- var effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
114- bool useFallbackPalette = ! ReferenceEquals ( effectivePalette , theme . NodePalette ) ;
113+ IReadOnlyList < string > effectivePalette ;
114+ bool useFallbackPalette ;
115+ if ( theme . NodePalette is { Count : > 0 } )
116+ {
117+ effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
118+ useFallbackPalette = ! ReferenceEquals ( effectivePalette , theme . NodePalette ) ;
119+ }
120+ else
121+ {
122+ effectivePalette = [ theme . NodeFillColor ] ;
123+ useFallbackPalette = false ;
124+ }
115125
116126 for ( int i = 0 ; i < titleNodes . Count ; i ++ )
117127 {
@@ -214,8 +224,11 @@ private static void LayoutTabListStacked(
214224 theme . NodePadding * 2 + titleFontSize * 1.3 + maxItemCount * descLineHeight + theme . NodePadding ) ;
215225 double rowGap = 6 ; // Narrow gap for stacked infographic feel
216226
217- var effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
218- bool useFallbackPalette = ! ReferenceEquals ( effectivePalette , theme . NodePalette ) ;
227+ IReadOnlyList < string > effectivePalette ;
228+ if ( theme . NodePalette is { Count : > 0 } )
229+ effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
230+ else
231+ effectivePalette = [ theme . NodeFillColor ] ;
219232
220233 for ( int i = 0 ; i < titleNodes . Count ; i ++ )
221234 {
@@ -244,8 +257,9 @@ private static void LayoutTabListStacked(
244257 titleNode . Label . FontSize = numberFontSize ;
245258 titleNode . Label . FontWeight = "bold" ;
246259 titleNode . Label . Color = tabTextColor ;
247- if ( ! useFallbackPalette )
248- titleNode . Metadata [ "render:noGradient" ] = true ;
260+ // Stacked renderer uses tablist:tabStroke/contentStroke directly; node-level
261+ // gradient stroke is not consumed, so always suppress gradient generation.
262+ titleNode . Metadata [ "render:noGradient" ] = true ;
249263 titleNode . Metadata [ "tablist:band" ] = true ;
250264 titleNode . Metadata [ "tablist:layout" ] = "stacked" ;
251265 titleNode . Metadata [ "tablist:accentWidth" ] = tabWidth ;
@@ -324,8 +338,11 @@ private static void LayoutTabListFlat(
324338 double totalWidth = accentLineWidth + accentLineGap + barWidth ;
325339 double categoryGap = theme . NodePadding * 1.2 ;
326340
327- var effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
328- bool useFallbackPalette = ! ReferenceEquals ( effectivePalette , theme . NodePalette ) ;
341+ IReadOnlyList < string > effectivePalette ;
342+ if ( theme . NodePalette is { Count : > 0 } )
343+ effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
344+ else
345+ effectivePalette = [ theme . NodeFillColor ] ;
329346
330347 double curY = pad + titleOffset ;
331348
@@ -353,8 +370,9 @@ private static void LayoutTabListFlat(
353370 titleNode . Label . FontSize = titleFontSize ;
354371 titleNode . Label . FontWeight = "bold" ;
355372 titleNode . Label . Color = titleBarTextColor ;
356- if ( ! useFallbackPalette )
357- titleNode . Metadata [ "render:noGradient" ] = true ;
373+ // Flat renderer uses tablist:accentColor and StrokeColor="none" directly;
374+ // node-level gradient stroke is not consumed, so always suppress gradient generation.
375+ titleNode . Metadata [ "render:noGradient" ] = true ;
358376 titleNode . Metadata [ "tablist:band" ] = true ;
359377 titleNode . Metadata [ "tablist:layout" ] = "flat" ;
360378 titleNode . Metadata [ "tablist:accentLineWidth" ] = accentLineWidth ;
0 commit comments