Closed
Bug 52135
Opened 26 years ago
Closed 25 years ago
[FIX]possible rounding error in gfx text control
Categories
(Core :: Layout: Form Controls, defect, P3)
Tracking
()
VERIFIED
FIXED
People
(Reporter: buster, Assigned: rods)
Details
(Whiteboard: [nsbeta3+]Fix in Hand; need engineer input-ckritzer;)
I just fixed a subtle bug in the HR frame where a rounding error was causing an
off-by-one measuring error. On my system, p2t=15.00000 according to the
debugger, but the code:
nscoord(pt2)
returns 14, not 15.
So I replaced
nscoord(p2t)
with
nscoord onePixel = NSIntPixelsToTwips(1, p2t); // get the rounding right
which gives the intended answer of 15 (on my system.)
You may want to inspect nsGfxTextControlFrame2::CalculateSizeStandard(), which
uses the cast rather than the macro. This won't show up on Windows because of
an #ifdef _WIN32
| Assignee | ||
Comment 1•25 years ago
|
||
Yes, I struggled with this, but I thought I got it right, I will take a look.
Thanks
Status: NEW → ASSIGNED
| Assignee | ||
Comment 2•25 years ago
|
||
Yes, it isn't working right, needs to be fixed.
nominating. here is the diff:
Index: nsGfxTextControlFrame2.cpp
===================================================================
RCS file: /cvsroot/mozilla/layout/html/forms/src/nsGfxTextControlFrame2.cpp,v
retrieving revision 1.93
diff -r1.93 nsGfxTextControlFrame2.cpp
1354c1354,1355
< charWidth = nscoord((float(charWidth) / p2t) + 0.5)*nscoord(p2t);
---
> nscoord onePixel = NSIntPixelsToTwips(1, p2t); // get the rounding right
> charWidth = nscoord((float(charWidth) / float(onePixel)) + 0.5)*onePixel;
Keywords: nsbeta3
Whiteboard: Fix in Hand
| Assignee | ||
Updated•25 years ago
|
Summary: possible rounding error in gfx text control → [FIX]possible rounding error in gfx text control
| Assignee | ||
Comment 5•25 years ago
|
||
fixed
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Comment 6•25 years ago
|
||
[buster|rods|mjudge], how would you suggest I verify? Is this something that is
easily viewed in a webdoc? Thanks! -kritzer
Updated•25 years ago
|
Whiteboard: [nsbeta3+]Fix in Hand → [nsbeta3+]Fix in Hand; need engineer input-ckritzer;
nope, this is a code-level fix, and it would take longer to fabricate a specific
test case than it's worth. The test case would depend on your platforms
pixel/twip ratio, crap like that. I'm verifying.
Status: RESOLVED → VERIFIED
| Assignee | ||
Comment 8•25 years ago
|
||
No, just take buster's word on it.
You need to log in
before you can comment on or make changes to this bug.
Description
•