mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:42:45 +00:00 
			
		
		
		
	LibWeb: Do not abort interpolation if the StyleValue types differ
This can be perfectly valid, and depends on the property being animated. For example, interpolating between the StyleValue "none" (an identifier) and a TransformationStyleValue is perfectly defined.
This commit is contained in:
		
							parent
							
								
									15942b4262
								
							
						
					
					
						commit
						892f407d75
					
				
					 1 changed files with 3 additions and 6 deletions
				
			
		|  | @ -760,6 +760,9 @@ static ErrorOr<void> cascade_custom_properties(DOM::Element& element, Optional<C | ||||||
| 
 | 
 | ||||||
| static ErrorOr<NonnullRefPtr<StyleValue const>> interpolate_value(StyleValue const& from, StyleValue const& to, float delta) | static ErrorOr<NonnullRefPtr<StyleValue const>> interpolate_value(StyleValue const& from, StyleValue const& to, float delta) | ||||||
| { | { | ||||||
|  |     if (from.type() != to.type()) | ||||||
|  |         return delta >= 0.5f ? to : from; | ||||||
|  | 
 | ||||||
|     auto interpolate_raw = [delta = static_cast<double>(delta)](auto from, auto to) { |     auto interpolate_raw = [delta = static_cast<double>(delta)](auto from, auto to) { | ||||||
|         return static_cast<RemoveCVReference<decltype(from)>>(static_cast<double>(from) + static_cast<double>(to - from) * delta); |         return static_cast<RemoveCVReference<decltype(from)>>(static_cast<double>(from) + static_cast<double>(to - from) * delta); | ||||||
|     }; |     }; | ||||||
|  | @ -833,12 +836,6 @@ static ErrorOr<NonnullRefPtr<StyleValue const>> interpolate_value(StyleValue con | ||||||
| 
 | 
 | ||||||
| static ErrorOr<ValueComparingNonnullRefPtr<StyleValue const>> interpolate_property(PropertyID property_id, StyleValue const& from, StyleValue const& to, float delta) | static ErrorOr<ValueComparingNonnullRefPtr<StyleValue const>> interpolate_property(PropertyID property_id, StyleValue const& from, StyleValue const& to, float delta) | ||||||
| { | { | ||||||
|     if (from.type() != to.type()) { |  | ||||||
|         if (delta > 0.999f) |  | ||||||
|             return to; |  | ||||||
|         return from; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     auto animation_type = animation_type_from_longhand_property(property_id); |     auto animation_type = animation_type_from_longhand_property(property_id); | ||||||
|     switch (animation_type) { |     switch (animation_type) { | ||||||
|     case AnimationType::ByComputedValue: |     case AnimationType::ByComputedValue: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Matthew Olsson
						Matthew Olsson