Skip to content

Commit 272b1f6

Browse files
Copilotjongalloway
andauthored
Address review feedback: preserve NodeFillColor fallback; fix noGradient for stacked/flat
Co-authored-by: jongalloway <68539+jongalloway@users.noreply.github.com> Agent-Logs-Url: https://github.com/jongalloway/DiagramForge/sessions/aa6d6311-d110-4334-812e-299addc9387b
1 parent 0c50287 commit 272b1f6

3 files changed

Lines changed: 28 additions & 58 deletions

File tree

src/DiagramForge/Layout/DefaultLayoutEngine.TabList.cs

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

tests/DiagramForge.E2ETests/Fixtures/conceptual-tablist-flat-prism.expected.svg

Lines changed: 0 additions & 24 deletions
Loading

tests/DiagramForge.E2ETests/Fixtures/conceptual-tablist-stacked-prism.expected.svg

Lines changed: 0 additions & 24 deletions
Loading

0 commit comments

Comments
 (0)