Bug 253427

Summary: left and right arrows don't look right on hover on https://tickets.compagnie-oceane.fr
Product: WebKit Reporter: Antoine Quint <graouts>
Component: AnimationsAssignee: Ahmad Saleem <ahmad.saleem792>
Status: RESOLVED FIXED    
Severity: Normal CC: ahmad.saleem792, dino, graouts, karlcow, webkit-bug-importer
Priority: P2 Keywords: BrowserCompat, InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
URL: https://tickets.compagnie-oceane.fr
Attachments:
Description Flags
Reduction none

Antoine Quint
Reported 2023-03-06 00:45:42 PST
Steps to reproduce: 1. go to https://tickets.compagnie-oceane.fr 2. pick "Quiberon" under "Départ" and "Belle-Île (Le Palais) under "Arrivée" 3. hover over the left or right arrow to the sides of the month on the calendars that appear The arrow jumps around gets clipped in Safari while it smoothly animates to a different color in Chrome and changes to a different color without animation but without jumping in Firefox.
Attachments
Reduction (538 bytes, text/html)
2023-03-06 00:47 PST, Antoine Quint
no flags
Antoine Quint
Comment 1 2023-03-06 00:47:06 PST
Created attachment 465312 [details] Reduction Reduction shows it's an issue animating between two background-image values which are SVG images. This explains the difference in behavior between Chrome and Firefox since Chrome blends between images while Firefox does not (per spec).
Antoine Quint
Comment 2 2023-03-07 08:20:25 PST
I think the issue is that the value returned by SVGImage::containerSize() as we draw each of the images managed by the CrossfadeGeneratedImage is incorrect. I think we might need to reset these in the CrossfadeGeneratedImage constructor.
Radar WebKit Bug Importer
Comment 3 2023-03-13 01:46:14 PDT
Ahmad Saleem
Comment 5 2025-11-26 12:31:11 PST
This fixes it: ``` StyleCrossfadeImage.cpp Function - StyleCrossfadeImage::image Adding below: RefPtr fromImageRef = fromImage; RefPtr toImageRef = toImage; if (fromImage->isSVGImage()) fromImageRef = SVGImageForContainer::create(&downcast<SVGImage>(*fromImage), size, 1, URL()); if (toImage->isSVGImage()) toImageRef = SVGImageForContainer::create(&downcast<SVGImage>(*toImage), size, 1, URL()); return CrossfadeGeneratedImage::create(*fromImageRef, *toImageRef, m_percentage, fixedSize(*renderer), size); ```
Ahmad Saleem
Comment 6 2025-11-26 12:57:08 PST
EWS
Comment 7 2025-11-27 00:09:22 PST
Committed 303593@main (c4cfd9698b72): <https://commits.webkit.org/303593@main> Reviewed commits have been landed. Closing PR #54493 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.