Closed
Bug 423130
Opened 16 years ago
Closed 16 years ago
Inconsistent layout with padding, removing RLM
Categories
(Core :: Layout: Text and Fonts, defect, P1)
Tracking
()
VERIFIED
FIXED
mozilla1.9beta5
People
(Reporter: jruderman, Assigned: uriber)
References
Details
(Keywords: testcase)
Attachments
(5 files)
364 bytes,
text/html
|
Details | |
210 bytes,
text/html
|
Details | |
2.47 KB,
patch
|
smontagu
:
review+
dbaron
:
superreview+
|
Details | Diff | Splinter Review |
3.33 KB,
patch
|
damons
:
approval1.9b5+
|
Details | Diff | Splinter Review |
3.62 KB,
patch
|
Details | Diff | Splinter Review |
The testcase and reference have the same final DOM, but the testcase is displayed with the rectangle taller. This bug report was brought to you by refdyn and layout/reftests/bugs/421419-1.html.
Reporter | ||
Comment 1•16 years ago
|
||
Reporter | ||
Comment 2•16 years ago
|
||
Assignee | ||
Comment 3•16 years ago
|
||
This is actually a bit worrying. It appears that inline bidi continuations don't get deleted when their content is deleted.
Blocks: 299065
Flags: blocking1.9?
Assignee | ||
Comment 4•16 years ago
|
||
In nsBidiPresUtils::Resolve(), there's an asymmetry between the way we split ancestor frames into bidi continuations, and the way we "join" them (i.e., convert bidi continuations into fluid continuations). Splitting ancestor frames (implemented by SplitInlineAncestors) happens whenever we reach an end of run (regardless of the type of the leaf frame we're looking at). "Joining" ancestors, on the other hand, happens as part of RemoveBidiContinuation(), which is only called when we encounter a text node that needs to be "joined". So the case we're failing on is when the joining should only start at the parent level (because the leaves aren't all text nodes). What complicates things further is that RemoveBidiContinuation() does joining "in batch" for all remaining leaf frames belonging to the same content. So it's not clear that it could just be replaced by something like JoinInlineAncestors() (which would be invoked similarly to the way SplitInlineAncestors() is). My current thinking is that we might need a JoinInlineAncestors() on top of the joining we currently have. All of this makes my head spin (which is why I'm writing it down). I'll see if I can find time to work on this, but I expect to be pretty busy this week.
Assignee | ||
Comment 5•16 years ago
|
||
What I said in the previous comment. This might not be the most elegant way to do this, but I think it's the safest at this point.
Assignee: nobody → uriber
Status: NEW → ASSIGNED
Attachment #309674 -
Flags: superreview?(dbaron)
Attachment #309674 -
Flags: review?(smontagu)
Assignee | ||
Updated•16 years ago
|
Attachment #309674 -
Attachment is patch: true
Attachment #309674 -
Attachment mime type: application/octet-stream → text/plain
Assignee | ||
Comment 6•16 years ago
|
||
Oops, ignore that added 'const' on the last changed line.
Flags: blocking1.9? → blocking1.9+
Priority: -- → P1
Updated•16 years ago
|
Target Milestone: --- → mozilla1.9beta5
Comment on attachment 309674 [details] [diff] [review] like this sr=dbaron assuming smontagu's review; hopefully he understands this better than I do. One comment is that you could convert: if (frame && fragmentLength <= 0 && runLength <= 0) { // existing code } else if (frame && fragmentLength <= 0 && runLength > 0) { // your new code } to be: if (frame && fragmentLength <= 0) { if (runLength <= 0) { // existing code } else { // your new code } } ... assuming you also update/move the comments accordingly. Also, it seems like JoinInlineAncestors should either find frames to join all the way up, or not find any. (Or can the latter case ever happen?) Is that the case? If so, I wonder if it should break out of the loop if (!next).
Attachment #309674 -
Flags: superreview?(dbaron) → superreview+
Assignee | ||
Comment 8•16 years ago
|
||
(In reply to comment #7) > Also, it seems like JoinInlineAncestors should either find frames to join all > the way up, or not find any. (Or can the latter case ever happen?) Is that > the case? If so, I wonder if it should break out of the loop if (!next). > It could start finding them somewhere in the middle, for a case like: <b><i>ltr</i><i>RTL</i></b>. There's nothing to join in the <i>s' level, but the <b> continuation should be joined.
Comment 9•16 years ago
|
||
Comment on attachment 309674 [details] [diff] [review] like this r=me, assuming that it passes reftests, and passes crashtests with no new assertions (probably more important in this case).
Attachment #309674 -
Flags: review?(smontagu) → review+
Comment 10•16 years ago
|
||
Is this checked in? If not, ready to request approval for beta5?
Assignee | ||
Comment 11•16 years ago
|
||
Not checked in yet, as I haven't had time to run all the tests yet as Simon requested.
Assignee | ||
Comment 12•16 years ago
|
||
Includes the change suggested by David, and a reftest.
Attachment #310860 -
Flags: approval1.9b5?
Assignee | ||
Comment 13•16 years ago
|
||
Comment 14•16 years ago
|
||
Comment on attachment 310860 [details] [diff] [review] patch for checkin a1.9b5+=damons
Attachment #310860 -
Flags: approval1.9b5? → approval1.9b5+
Comment 15•16 years ago
|
||
Beltzner, status on this is Uri is running tests to make sure there are no assertions. It's 1:30am his time, so he might wait until morning his time to check in due to the fact it's a long running process.
Assignee | ||
Comment 16•16 years ago
|
||
Tests found no regressions, and I'm ready to submit, but tree is orange now. So I'll go have some sleep and try submitting in the morning. If someone wants to submit attachment 310860 [details] [diff] [review] for me that's fine, but you might want to leave out the reftest (the other patch), as the reftest.list part of it is corrupt.
Assignee | ||
Comment 17•16 years ago
|
||
Checked in: Checking in mozilla/layout/base/nsBidiPresUtils.cpp; /cvsroot/mozilla/layout/base/nsBidiPresUtils.cpp,v <-- nsBidiPresUtils.cpp new revision: 1.113; previous revision: 1.112 done Checking in mozilla/layout/reftests/bugs/reftest.list; /cvsroot/mozilla/layout/reftests/bugs/reftest.list,v <-- reftest.list new revision: 1.406; previous revision: 1.405 done RCS file: /cvsroot/mozilla/layout/reftests/bugs/423130-1.html,v done Checking in mozilla/layout/reftests/bugs/423130-1.html; /cvsroot/mozilla/layout/reftests/bugs/423130-1.html,v <-- 423130-1.html initial revision: 1.1 done RCS file: /cvsroot/mozilla/layout/reftests/bugs/423130-1-ref.html,v done Checking in mozilla/layout/reftests/bugs/423130-1-ref.html; /cvsroot/mozilla/layout/reftests/bugs/423130-1-ref.html,v <-- 423130-1-ref.html initial revision: 1.1 done
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Assignee | ||
Updated•16 years ago
|
Flags: in-testsuite+
Comment 18•16 years ago
|
||
verified fixed using Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9pre) Gecko/2008050621 Firefox/3.0pre and the testcases from this bug --> Verified fixed
Status: RESOLVED → VERIFIED
Component: Layout: BiDi Hebrew & Arabic → Layout: Text
QA Contact: layout.bidi → layout.fonts-and-text
You need to log in
before you can comment on or make changes to this bug.
Description
•