Closed
Bug 5110
Opened 26 years ago
Closed 25 years ago
frame displayed out of order after editing
Categories
(Core :: Layout, defect, P2)
Tracking
()
VERIFIED
FIXED
M5
People
(Reporter: buster, Assigned: buster)
References
Details
If you follow the steps below, you'll see that a character is displayed out of
order even though the content is correct. Since the editor is only making DOM
calls to change content, I think this is almost certainly an incremental reflow
bug. Bear with me, it takes a while to explain. Steps 1-8 are just to prove
that the editor is working correctly and content and frames are ok.
Steps:
1. Open the test case in viewer in edit mode with the window large enought that
the text all fits on one line.
2. select from 'b' to '1'.
3. Ctrl-B to make bold.
4. Select from 'a' to the space between ':' and '1'
5. Ctrl-I to make italic.
6. notice how all the characters are in the right place with the right
attributes.
7. Dump content, notice the content tree looks correct.
8. Dump frames, notice the frame tree looks correct.
---- now, the bug
9. Undo twice to get back to your starting state, or if you're paranoid restart
the viewer and edit the same document.
10. shrink the window so the content is split across several lines.
11. repeat steps 2-5.
12. now, notice that the '1' character is displayed out of place
13. dump content, notice that the content tree is identical to the content tree
in step 7.
14. dump frame, notice the difference in frame trees.
Test case:
<html><body>
<p>abc def ghi jkl mno pqr stu vwx yz~ !@# $%^ &*( )-_ =+/ ?<> ,.' ";: 123 456
789 0\|
</body></html>
My debug output from the above steps:
// debug output from single-line case
Note: verifyreflow is disabled
Sel. Collapse to 0139048C __moz_text 1
Sel. Extend to 0139048C __moz_text 68
webshell=012E24E0
html 01344E0C refcount=5<
head 01344E7C refcount=2<
>
body 0138272C refcount=3<
Text 0138BA1C refcount=3<\n>
p 0138BB0C refcount=7<
Text 013934CC refcount=4<a>
b 01394EAC refcount=10<
i 0131EECC refcount=7<
Text 0131DE2C refcount=10<bc def ghi jkl mno pqr stu vwx yz~ !@# $%^ &
*( )-_ =+/ ?< ,.' ";: >
>
Text 01393F2C refcount=11<1>
>
Text 0139048C refcount=9<23 456 789 0\|\n>
>
>
>
webshell=012E24E0
Viewport(-1)@013827E0 [view=0137E450] {0,0,9180,4470} [state=00000016]<
Scroll(-1)@01389EB0 [view=0138A120] {0,0,9180,4470} [state=00000004]<
Root(-1)@0138AB00 [view=0138ABB0] {0,0,9180,4470}<
Area(html)(-1)@0138AE40 {0,0,9180,4470} [state=00000014] [flags=c]<
line 0138B520: count=1 state=clean,block[0xa] bm=240 {120,240,9060,285}
ca={120,240,8940,285} <
Block(body)(1)@0138B120 {120,240,8940,285} [state=00000004]<
line 0138BD50: count=1 state=clean,inline[0x8] {0,0,0,0} ca={0,0,0,0
} <
Text(0)@0138BC90[0,0,T][1] {0,0,0,0} [state=00000024]<
"\n"
>
>
line 01390DF0: count=1 state=clean,block[0xa] {0,0,8940,285} ca={0,0
,8940,285} <
Block(p)(1)@01390890 {0,0,8940,285} [state=00020004]<
line 01390C50: count=3 state=clean,inline[0x8] {0,0,8115,285} ca
={0,0,8115,285} <
Text(0)@013937B0[0,0,T][0] {0,0,105,285} [state=00000034]<
"a"
>
Inline(b)(1)@01394160 {105,0,6585,285} [state=00000004]<
Inline(i)(0)@0131E470 {0,0,6465,285} [state=00000004]<
Text(0)@013801C0[0,65,T][8] {0,0,6465,285} [state=0000003
4]<
"bc def ghi jkl mno pqr stu vwx yz~ !@# $%^ &*( )-_ =+/
?< ,.' ";: "
>
>
Text(1)@01394960[0,0,T][0] {6465,0,120,285} [state=00000034
]<
"1"
>
>
Text(2)@01390B30[0,14,T][8] {6690,0,1425,285} [state=00000034
]<
"23 456 789 0\|\n"
>
>
text-runs <
01380370: count=4 <Text(0)@013937B0 Text(0)@013801C0 Text(1)@0
1394960 Text(2)@01390B30 >
>
>
>
text-runs <
013802E0: count=1 <Text(0)@0138BC90 >
>
>
>
>
>
>
>
// starting over with this content again
webshell=012E24E0
html 01344E0C refcount=5<
head 01344E7C refcount=2<
>
body 0138272C refcount=3<
Text 0138BA1C refcount=3<\n>
p 0138BB0C refcount=9<
Text 0139048C refcount=18<abc def ghi jkl mno pqr stu vwx yz~ !@# $%^ &*(
)-_ =+/ ?< ,.' ";: 123 456 789 0\|\n>
>
>
>
// multiple line case that is broken
Sel. Collapse to 0139048C __moz_text 1
Sel. Extend to 0139048C __moz_text 68
webshell=012E24E0
html 01344E0C refcount=4<
head 01344E7C refcount=2<
>
body 0138272C refcount=3<
Text 0138BA1C refcount=3<\n>
p 0138BB0C refcount=14<
Text 013451AC refcount=4<a>
b 012FF1AC refcount=14<
i 0131F3DC refcount=11<
Text 0138074C refcount=14<bc def ghi jkl mno pqr stu vwx yz~ !@# $%^ &
*( )-_ =+/ ?< ,.' ";: >
>
Text 01397D9C refcount=11<1>
>
Text 0139048C refcount=16<23 456 789 0\|\n>
>
>
>
webshell=012E24E0
Viewport(-1)@013827E0 [view=0137E450] {0,0,1935,4200} [state=00000016]<
Scroll(-1)@01389EB0 [view=0138A120] {0,0,1935,4200} [state=00000004]<
Root(-1)@0138AB00 [view=0138ABB0] {0,0,1935,4200}<
Area(html)(-1)@0138AE40 {0,0,1935,4200} [state=00000014] [flags=c]<
line 0138B520: count=1 state=clean,block[0xa] bm=240 {120,240,1815,1710}
ca={120,240,1695,1710} <
Block(body)(1)@0138B120 {120,240,1695,1710} [state=00000004]<
line 0138BD50: count=1 state=clean,inline[0x8] {0,0,0,0} ca={0,0,0,0
} <
Text(0)@0138BC90[0,0,T][1] {0,0,0,0} [state=00000024]<
"\n"
>
>
line 01390DF0: count=1 state=clean,block[0xa] {0,0,1695,1710} ca={0,
0,1695,1710} <
Block(p)(1)@01390890 {0,0,1695,1710} [state=00020014]<
line 01390C50: count=2 state=clean,inline[0x8] {0,0,1575,285} ca
={0,0,1575,285} <
Text(0)@01380250[0,0,T][0] {0,0,105,285} [state=00000034]<
"a"
>
Inline(b)(1)@013005F0 next-in-flow=0131FA70 {105,0,1470,285} [
state=00000004]<
Text(1)@01305550[0,0,T][8] {0,0,120,285} [state=00000034]<
"1"
>
Inline(i)(0)@0131F560 next-in-flow=0131F9A0 {120,0,1350,285}
[state=00000004]<
Text(0)@0131FEF0[0,14,F][8] next-in-flow=0131F440 {0,0,13
50,285} [state=00000024]<
"bc def ghi jkl "
>
>
>
>
line 0131FAE0: count=1 state=clean,inline[0x8] {0,285,1695,285}
ca={0,285,1695,285} <
Inline(b)(1)@0131FA70 prev-in-flow=013005F0 next-in-flow=01380
2D0 {0,285,1695,285} [state=00000004]<
Inline(i)(0)@0131F9A0 prev-in-flow=0131F560 next-in-flow=013
6CFA0 {0,0,1695,285} [state=00000004]<
Text(0)@0131F440[15,30,F][0] prev-in-flow=0131FEF0 next-in
-flow=01344C30 {0,0,1695,285} [state=00000024]<
"mno pqr stu vwx "
>
>
>
>
line 0138D940: count=1 state=clean,inline[0x8] {0,570,1365,285}
ca={0,570,1365,285} <
Inline(b)(1)@013802D0 prev-in-flow=0131FA70 next-in-flow=01390
9A0 {0,570,1365,285} [state=00000004]<
Inline(i)(0)@0136CFA0 prev-in-flow=0131F9A0 next-in-flow=013
907A0 {0,0,1365,285} [state=00000004]<
Text(0)@01344C30[31,42,F][0] prev-in-flow=0131F440 next-in
-flow=0138FCF0 {0,0,1365,285} [state=00000024]<
"yz~ !@# $%^ "
>
>
>
>
line 01390BF0: count=1 state=clean,inline[0x8] {0,855,1650,285}
ca={0,855,1650,285} <
Inline(b)(1)@013909A0 prev-in-flow=013802D0 next-in-flow=01392
EC0 {0,855,1650,285} [state=00000004]<
Inline(i)(0)@013907A0 prev-in-flow=0136CFA0 next-in-flow=013
90FB0 {0,0,1650,285} [state=00000004]<
Text(0)@0138FCF0[43,60,F][0] prev-in-flow=01344C30 next-in
-flow=01390F30 {0,0,1650,285} [state=00000024]<
"&*( )-_ =+/ ?< ,.'"
>
>
>
>
line 01392FB0: count=2 state=clean,inline[0x8] {0,1140,1485,285}
ca={0,1140,1485,285} <
Inline(b)(1)@01392EC0 prev-in-flow=013909A0 {0,1140,345,285} [
state=00000004]<
Inline(i)(0)@01390FB0 prev-in-flow=013907A0 {0,0,345,285} [s
tate=00000004]<
Text(0)@01390F30[61,65,T][1] prev-in-flow=0138FCF0 {0,0,3
45,285} [state=00000024]<
" ";: "
>
>
>
Text(2)@01390B30[0,10,F][0] next-in-flow=01393780 {345,1140,1
140,285} [state=00000034]<
"23 456 789 "
>
>
line 01393940: count=1 state=clean,inline[0x8] {0,1425,285,285}
ca={0,1425,285,285} <
Text(2)@01393780[11,14,T][0] prev-in-flow=01390B30 {0,1425,28
5,285} [state=00000024]<
"0\|\n"
>
>
text-runs <
0131F910: count=4 <Text(0)@01380250 Text(1)@01305550 Text(0)@0
131FEF0 Text(2)@01390B30 >
>
>
>
text-runs <
0131F880: count=1 <Text(0)@0138BC90 >
>
>
>
>
>
>
>
bumped up priority, it would be extremely good if this were fixed for M5.
I just checked in fixes for this. It turns out that some code in the frame
construction code was the culprit.
Updated•25 years ago
|
Status: RESOLVED → VERIFIED
Comment 3•25 years ago
|
||
Fixed in April 25th Win 32 Build.
*** Bug 4752 has been marked as a duplicate of this bug. ***
URL: see test case
You need to log in
before you can comment on or make changes to this bug.
Description
•