From 400dbba81df40bac321dfec5f86f180977583da9 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 17:24:04 +0000 Subject: [PATCH] Add native support for radial gradients in CSS compiler Enabled `RoundRectBorder` to utilize native Codename One gradient support when the CSS background is a valid CN1 gradient (e.g. `radial-gradient`). Fixed parsing logic for `radial-gradient` position coordinates to correctly map to CN1 relative X/Y values (removing inverted coordinate calculation). Ensured safety when casting style properties in `canBeAchievedWithRoundRectBorder`. --- .../src/com/codename1/designer/css/CSSTheme.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/CodenameOneDesigner/src/com/codename1/designer/css/CSSTheme.java b/CodenameOneDesigner/src/com/codename1/designer/css/CSSTheme.java index bb43da6cbc..4d868ae9ce 100644 --- a/CodenameOneDesigner/src/com/codename1/designer/css/CSSTheme.java +++ b/CodenameOneDesigner/src/com/codename1/designer/css/CSSTheme.java @@ -489,8 +489,8 @@ private void parseRadialGradient(ScaledUnit background) { } type = Style.BACKGROUND_GRADIENT_RADIAL; - gradientX = 1-(float)relX; - gradientY = 1-(float)relY; + gradientX = (float)relX; + gradientY = (float)relY; this.bgTransparency = (byte)alpha; this.startColor = color1; this.endColor = color2; @@ -2920,7 +2920,17 @@ public boolean canBeAchievedWithCSSBorder(Map styles) { } public boolean canBeAchievedWithRoundRectBorder(Map styles) { - if (hasUnequalBorders() || this.hasGradient() || !isBorderLineOrNone() || !isNone(backgroundImageUrl) || hasBoxShadow() || hasBorderImage()) { + boolean supportedGradient = false; + if (this.hasGradient()) { + LexicalUnit backgroundLU = styles.get("background"); + if (backgroundLU instanceof ScaledUnit) { + ScaledUnit background = (ScaledUnit)backgroundLU; + if (background != null && background.isCN1Gradient()) { + supportedGradient = true; + } + } + } + if (hasUnequalBorders() || (this.hasGradient() && !supportedGradient) || !isBorderLineOrNone() || !isNone(backgroundImageUrl) || hasBoxShadow() || hasBorderImage()) { return false; }