Bug 53836

Summary: Webkit is ignoring fractional point values when using units in CSS
Product: WebKit Reporter: Rik Cabanier <cabanier>
Component: CSSAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: OS X 10.5   
Attachments:
Description Flags
zip with HTML sample
none
correct zip with html. Please ignore the first one none

Rik Cabanier
Reported 2011-02-04 19:39:58 PST
The webkit parser casts units to integer instead of keeping them as double or float. This causes imprecise placing of objects if they use webkit-transforms with transform(px, px) notation. In order to fix this, I think we need to fix CSSStyleSelector.cpp line 3051-3052 from: } else if (CSSPrimitiveValue::isUnitTypeLength(type)) l = Length(primitiveValue->computeLengthIntForLength(style, rootStyle, multiplier), Fixed); to: } else if (CSSPrimitiveValue::isUnitTypeLength(type)) l = Length(primitiveValue->computeLengthFloat(style, rootStyle, multiplier, false), Fixed); Attached is a iip file that contains a page that uses transforms with px notation.
Attachments
zip with HTML sample (18.58 KB, application/octet-stream)
2011-02-04 19:41 PST, Rik Cabanier
no flags
correct zip with html. Please ignore the first one (18.57 KB, application/octet-stream)
2011-02-04 20:24 PST, Rik Cabanier
no flags
Rik Cabanier
Comment 1 2011-02-04 19:41:15 PST
Created attachment 81339 [details] zip with HTML sample
Rik Cabanier
Comment 2 2011-02-04 20:24:31 PST
Created attachment 81343 [details] correct zip with html. Please ignore the first one
Rik Cabanier
Comment 3 2011-02-04 20:25:29 PST
(In reply to comment #0) > The webkit parser casts units to integer instead of keeping them as double or float. > This causes imprecise placing of objects if they use webkit-transforms with transform(px, px) notation. > > In order to fix this, I think we need to fix CSSStyleSelector.cpp line 3051-3052 > from: > } else if (CSSPrimitiveValue::isUnitTypeLength(type)) > l = Length(primitiveValue->computeLengthIntForLength(style, rootStyle, multiplier), Fixed); > to: > } else if (CSSPrimitiveValue::isUnitTypeLength(type)) > l = Length(primitiveValue->computeLengthFloat(style, rootStyle, multiplier, false), Fixed); > > Attached is a iip file that contains a page that uses transforms with px notation. My proposal doesn't work because length always wants to be an integer. It seems that it needs to be expanded to accept a float...
Rik Cabanier
Comment 4 2011-02-08 09:07:14 PST
*** This bug has been marked as a duplicate of bug 52699 ***
Note You need to log in before you can comment on or make changes to this bug.