Closed
Bug 172896
Opened 22 years ago
Closed 22 years ago
remove NS_BLOCK_WRAP_SIZE
Categories
(Core :: Layout: Block and Inline, defect, P1)
Core
Layout: Block and Inline
Tracking
()
RESOLVED
FIXED
mozilla1.3beta
People
(Reporter: bernd_mozilla, Assigned: dbaron)
References
()
Details
(Keywords: testcase, topembed+, Whiteboard: [patch] [adt2] [ETA Needed])
Attachments
(9 files, 3 obsolete files)
(deleted),
text/html
|
Details | |
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
text/html
|
Details | |
(deleted),
text/html
|
Details | |
(deleted),
text/html
|
Details | |
(deleted),
text/html
|
Details | |
(deleted),
text/plain
|
Details | |
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
roc
:
review+
roc
:
superreview+
|
Details | Diff | Splinter Review |
see attached testcase and the debug log.
especially the last lines
text 026D3A84 d=3030,285 me=3030
caption 026D3BB0 d=3480,1200 me=1788
where the strange MES reduction takes place.
VP 026CF040 d=9180,4470
VP 026CF040 r=1 a=9180,4470 c=9180,4470 cnt=851
block 026D3490 r=1 a=9180,UC c=8940,UC cnt=856
text 026D3678 r=0 a=8940,UC c=UC,UC cnt=857
text 026D3678 d=0,0
tblO 026D37C8 r=0 a=8940,UC c=0,0 cnt=858
caption 026D3BB0 r=0 a=UC,UC c=UC,UC cnt=859
text 026D3A84 r=0 a=UC,UC c=UC,UC cnt=860
text 026D3A84 d=3030,285 me=3030
caption 026D3BB0 d=3930,1200 me=3930
tbl 026D3994 r=0 a=8940,UC c=UC,UC cnt=861
rowG 026D3D54 r=0 a=UC,UC c=UC,UC cnt=862
row 026D3EE0 r=0 a=UC,UC c=UC,UC cnt=863
cell 026D40B4 r=0 a=UC,UC c=UC,UC cnt=864
block 026D4114 r=0 a=UC,UC c=UC,UC cnt=865
text 026D4254 r=0 a=UC,UC c=UC,UC cnt=866
text 026D4254 d=795,285 me=435
block 026D4114 d=795,300 me=435
cell 026D40B4 d=825,330 me=465
row 026D3EE0 d=UC,330
rowG 026D3D54 d=UC,330
colG 026D4380 r=0 a=UC,UC c=UC,UC cnt=867
col 026D44A8 r=0 a=0,0 c=UC,UC cnt=868
col 026D44A8 d=0,0
colG 026D4380 d=0,0
rowG 026D3D54 r=2 a=885,UC c=885,UC cnt=869
row 026D3EE0 r=2 a=885,UC c=885,UC cnt=870
cell 026D40B4 r=2 a=825,UC c=795,UC cnt=871
block 026D4114 r=2 a=795,UC c=795,UC cnt=872
block 026D4114 d=795,300
cell 026D40B4 d=825,330
row 026D3EE0 d=885,330
rowG 026D3D54 d=885,330
colG 026D4380 r=2 a=885,UC c=885,UC cnt=873
col 026D44A8 r=0 a=0,0 c=UC,UC cnt=874
col 026D44A8 d=0,0
colG 026D4380 d=0,0
tbl 026D3994 d=975,480
caption 026D3BB0 r=0 a=3930,UC c=UC,UC cnt=875
text 026D3A84 r=2 a=3030,UC c=UC,UC cnt=876
text 026D3A84 d=3030,285
caption 026D3BB0 d=3930,1200
tblO 026D37C8 d=3930,1680
text 026D4500 r=0 a=8940,UC c=UC,UC cnt=877
text 026D4500 d=0,0
block 026D3490 d=8940,1680
VP 026CF040 d=9180,4470
VP 026CF040 r=1 a=9180,4470 c=9180,4470 cnt=878
block 026D3490 r=1 a=9180,UC c=8940,UC cnt=883
tblO 026D37C8 r=1 a=8940,UC c=0,0 cnt=884
caption 026D3BB0 r=1 a=3930,UC c=888,UC cnt=885
VALUE 888 is not a whole pixel
text 026D3A84 r=3 a=888,UC c=UC,UC cnt=886
VALUE 888 is not a whole pixel
text 026D3A84 d=3030,285 me=3030
caption 026D3BB0 d=3480,1200 me=1788
VALUE 1788 is not a whole pixel
tblO 026D37C8 d=3480,1680
block 026D3490 d=8940,1680
VP 026CF040 d=9180,4470
Assignee | ||
Comment 2•22 years ago
|
||
It looks perfectly fine to me. It's returning the right MES the first time, and
then when the DOM sets style="width: 20%", it's returning that width. The text
is supposed to overflow.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → INVALID
>The text is supposed to overflow.
NO, it is not, because the NS_BLOCK_WRAP_SIZE flag is set. And this means the
block can't shrink below the MES of the text inside.
Status: RESOLVED → REOPENED
Resolution: INVALID → ---
Assignee | ||
Comment 5•22 years ago
|
||
I disagree. Strongly.
Assignee | ||
Comment 6•22 years ago
|
||
Why in the world do we have an incorrect answer this close to being the final
result?
David, due to my limited knowledge of english I don't get the complete
understanding what you mean.
>I disagree. Strongly.
I understand that you disagree, I dont understand, why.
1) If we have a NS_BLOCK_WRAP_SIZE set should the text overflow the box?
2) If the box is not allowed to be shrinked below the text-MES why should we not
report a MES back that includes the text-MES and borderpadding?
>Why in the world do we have an incorrect answer this close to being the final
result?
3) Do you mean the patch fixes at the wrong place, this can easily be true I
would not argue against, it was more intended as a demonstration what looks
wrong to me.
4)But this is block and line layout and you are the expert. The only thing I see
as a consumer of the block code is that it reports back wrong sizes.
Or my understanding of the meanings of the flags is wrong (remember my
missunderstanding of unit_null).
I gathered my knowledge from
http://www.mozilla.org/newlayout/doc/block-and-line.html
NS_BLOCK_WRAP_SIZE
When this flag is set, the frame is supposed to ``wrap around'' all its
in-flow children. This means that we may need to enlarge it to fit around any
frames that stick outside its box after ... ?
This is set by default for select frames, area frames, and table cell inner
frames when the frame is created.
Assignee | ||
Comment 8•22 years ago
|
||
A width is a width. It can't be expanded. In other words, I think
NS_BLOCK_WRAP_SIZE shouldn't exist as something separate from
NS_BLOCK_SHRINK_WRAP. (Can you find the reason they were added as separate
things? Are there testcases on the bug?)
Assignee | ||
Comment 9•22 years ago
|
||
(My suspicion was that it was added because, in a case in the block code where
we are correct and MSIE is buggy, someone decided that blocks inside tables
should be buggy like MSIE (for lack of reading/understanding the standards,
perhaps?) so we had to have a separate way of handling blocks inside of tables.)
Reporter | ||
Comment 10•22 years ago
|
||
Reporter | ||
Comment 11•22 years ago
|
||
The code at
http://lxr.mozilla.org/seamonkey/source/layout/html/base/src/nsBlockFrame.cpp#1500
is indeed evil, removing the stuff fixes bug 46983 .
Agreed, it is evil. We must change it to not rely on the overflow area. It may
be as simple as ditching the X case and fixing the Y case to just include the
floater bottom edge.
Reporter | ||
Comment 13•22 years ago
|
||
I think I would prefer to see the cases that actually rely on this behaviour by
placing a assertion and running the regression tests. My plan would be to remove
the NS_BLOCK_WRAP_SIZE from the inner table cell frame and caption frame. Once
this is done successfully I would leave it for David to kill this stuff entirely.
Assignee | ||
Comment 14•22 years ago
|
||
Retitling bug to reflect what I think it now means. Retitle again if you
disagree. (Changing from "nsBlockFrame::ComputeFinalSize returns wrong MES" to
"remove NS_BLOCK_WRAP_SIZE".)
Status: REOPENED → ASSIGNED
Priority: -- → P2
Summary: nsBlockFrame::ComputeFinalSize returns wrong MES → remove NS_BLOCK_WRAP_SIZE
Target Milestone: --- → Future
Reporter | ||
Comment 15•22 years ago
|
||
Reporter | ||
Comment 16•22 years ago
|
||
Assignee | ||
Comment 17•22 years ago
|
||
This removes the implementation of NS_BLOCK_WRAP_SIZE and replaces it with what
I think should be there. I haven't tested it, and I can't find where Bernd
pointed out a testcase that broke with the more simple removal...
Assignee | ||
Updated•22 years ago
|
Whiteboard: [patch]
Target Milestone: Future → mozilla1.3alpha
Attachment #102717 -
Attachment description: testcases that use NS_BLOCK_WRAP_SIZE → list of testcases that invoke NS_BLOCK_WRAP_SIZE
Assignee | ||
Updated•22 years ago
|
Component: Layout → Layout: Block & Inline
Assignee | ||
Comment 18•22 years ago
|
||
The patch causes problems with this testcase (simplified from
layout/html/tests/table/bugs/bug4520.html). It also seems to cause a very
slight reduction in table height in certain cases, although the only visible
changes involve HRs at the end of table cells. I'm not quite sure I understand
that and there's a possibility it could be some form of common noise on the
regression tests.
Assignee | ||
Comment 19•22 years ago
|
||
The problems may be related to the case where |okToAddRectRgn| is false in
nsBlockReflowState::FlowAndPlaceFloater. I think it would be nice if that did
the x-offset calculation more the way nsBlockReflowContext::ReflowBlock does it
for what seems at first glance to be the same thing. (Why do we need both
pieces of code? What's the difference?) That is, attachment 99893 [details] [diff] [review] might help
(see bug 159363).
Assignee | ||
Comment 20•22 years ago
|
||
(This would be so much easier if we didn't attempt to do min-width, pref-width,
and final layout in the same functions.)
Comment 21•22 years ago
|
||
*** Bug 145141 has been marked as a duplicate of this bug. ***
Comment 22•22 years ago
|
||
Re: comment #20, why don't we separate those computations? Is there a bug for
that design flaw fix?
/be
Comment 23•22 years ago
|
||
carrying over keyword foo and url from bug 145141.
Whiteboard: [patch] → [patch] [adt2] [ETA Needed]
Assignee | ||
Comment 24•22 years ago
|
||
Re comment 22: When I refer to something such as "cleaning up reflow", that's
what I mean. It's probably a multiple people on a branch for a few weeks/months
type of job unless we can find a way to do it incrementally, and either way we'd
need to have a good bit of design discussion beforehand.
Assignee | ||
Updated•22 years ago
|
Severity: normal → major
OS: Windows 98 → All
Priority: P2 → P1
Hardware: PC → All
Assignee | ||
Comment 25•22 years ago
|
||
I suspect what I need to fix is the right floater code in
nsBlockFrame::PlaceLine (perhaps in addition to what I mentioned in comment 19).
Assignee | ||
Comment 26•22 years ago
|
||
Attachment #103511 -
Attachment is obsolete: true
Assignee | ||
Comment 27•22 years ago
|
||
Assignee | ||
Comment 28•22 years ago
|
||
Well, there seem to be two problems:
1) in ComputeFinalSize, the code that adds in the bottom padding to the
autoHeight is before the code that accounts for floats. Switching them helps
many of the problems above.
2) This patch makes it so right floats aren't accounted for in the height
calculation for one of the many shrinkwrapping concepts.
Assignee | ||
Comment 29•22 years ago
|
||
This patch is only failing one test that I don't think it should be failing.
(I modified it a bit since I last ran the tests to avoid some asserts on the
failing test, but I don't think those modifications should have changed the
behavior on the other tests.) The one test is:
http://lxr.mozilla.org/mozilla/source/layout/html/tests/table/bugs/bug7113.html
and the problem only occurs on the first layout (not reflows caused by text
zoom).
Attachment #109297 -
Attachment is obsolete: true
Assignee | ||
Comment 30•22 years ago
|
||
Attachment #109321 -
Attachment is obsolete: true
Assignee | ||
Comment 31•22 years ago
|
||
Assignee | ||
Comment 32•22 years ago
|
||
Regression test changes are the following:
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/block/bugs/28811.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug131020.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug131020-2.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug137388-1.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug137388-2.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug137388-3.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug4576.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug6674.html
Inner table cell frame (block) narrower, but the table and the content
of the cell are the same size. (Case of horizontal overflow from
cell.) In other words, no visible changes.
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/block/bugs/81776.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug16252.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug17548.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug33137.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug60992.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/printing/bug138349-1.html
Table cell containing HR is slightly shorter (less space below HR, due
to weird vertical alignment on generated content "\n").
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/block/bugs/87543.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/block/bugs/169620.htmlhttp://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug1055-2.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug12012.xul
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug32205-2.html
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug83786.html
Table supposedly slightly shorter, but nothing visible.
http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/bugs/bug7113.html
Slight increase in table width on initial load, fixing an incremental
reflow bug.
*http://lxr.mozilla.org/seamonkey/source/layout/html/tests/table/printing/bug92215.html
Alternative patch #1 breaks this one, by causing the lower float to
have its left edge adjacent with the right edge of the upper float,
instead of its right edge.
(I forgot to check if the problem goes away on text zoom.)
*http://lxr.mozilla.org/seamonkey/source/layout/html/tests/block/printing/163614.html
Alternative patch #2 breaks this one (and causes an incremental reflow
bug), by making the table wider (since at large widths the image near
the bottom could overlap the floating images).
I prefer alternative patch #2 since it should make right floats affect things
the same way left floats do. Each alternative causes one regression in the
regression tests. I'm not too concerned about taking either since I'm hoping we
can rewrite all the min/max width stuff soon anyway (so that it doesn't get
computed within |Reflow|).
Assignee | ||
Updated•22 years ago
|
Attachment #109592 -
Flags: superreview?(roc+moz)
Comment on attachment 109592 [details] [diff] [review]
patch, alternative #2
r+sr=roc+moz
I really like this approach to handling right floaters. The old approach always
made me queasy. "infinity - x" ... ugh.
Attachment #109592 -
Flags: superreview?(roc+moz)
Attachment #109592 -
Flags: superreview+
Attachment #109592 -
Flags: review+
Assignee | ||
Comment 34•22 years ago
|
||
Fix checked in to trunk, 2002-12-18 16:11/12 PDT.
Status: ASSIGNED → RESOLVED
Closed: 22 years ago → 22 years ago
Resolution: --- → FIXED
Assignee | ||
Updated•22 years ago
|
Target Milestone: mozilla1.3alpha → mozilla1.3beta
Assignee | ||
Comment 35•21 years ago
|
||
*** Bug 111720 has been marked as a duplicate of this bug. ***
You need to log in
before you can comment on or make changes to this bug.
Description
•