Closed Bug 5110 Opened 26 years ago Closed 25 years ago

frame displayed out of order after editing

Categories

(Core :: Layout, defect, P2)

x86
Windows NT
defect

Tracking

()

VERIFIED FIXED

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 > > > > > > > >
Status: NEW → ASSIGNED
Priority: P3 → P2
Target Milestone: M5
Severity: normal → major
bumped up priority, it would be extremely good if this were fixed for M5.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
I just checked in fixes for this. It turns out that some code in the frame construction code was the culprit.
Status: RESOLVED → VERIFIED
Fixed in April 25th Win 32 Build.
*** Bug 4752 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.