Summary: | [test case] khtml doesn't render tr with display: inline (regression) | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Pedro Celestino Reis Rodrigues <reis> |
Component: | khtml renderer | Assignee: | Konqueror Developers <konq-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
A complete example
test case |
Description
Pedro Celestino Reis Rodrigues
2004-01-26 23:18:07 UTC
Created attachment 4368 [details]
A complete example
It works fine in kde 3.1.3 confirmed with a few days old head Created attachment 4741 [details]
test case
it's already way too complicated.
Interesting side note: safari got the same regression
CVS commit by coolo: fixing #73573 (reviewed by Dirk - suggested by Dave and Germain) CCMAIL: 73573-done@bugs.kde.org M +5 -0 ChangeLog 1.214 M +4 -15 rendering/render_inline.cpp 1.6 --- kdelibs/khtml/ChangeLog #1.213:1.214 @@ -1,2 +1,7 @@ +2004-02-23 Stephan Kulow <coolo@kde.org> + + * rendering/render_inline.cpp: check if the containingBlock is displayed + as block before using it as continuation (#73573) + 2004-02-22 Frerich Raabe <raabe@kde.org> --- kdelibs/khtml/rendering/render_inline.cpp #1.5:1.6 @@ -197,9 +197,8 @@ void RenderInline::splitFlow(RenderObjec RenderObject* newChild, RenderFlow* oldCont) { - RenderBlock *pre = 0; - RenderStyle* newStyle = 0; + RenderBlock* pre = 0; RenderBlock* block = containingBlock(); bool madeNewBeforeBlock = false; - if (block->isAnonymous()) { + if (block->isAnonymous() && block->style()->display() == BLOCK) { // We can reuse this block and make it the preBlock of the next continuation. pre = block; @@ -208,19 +207,9 @@ void RenderInline::splitFlow(RenderObjec else { // No anonymous block available for use. Make one. - newStyle = new RenderStyle(); - newStyle->inheritFrom(block->style()); - newStyle->setDisplay(BLOCK); - pre = new (renderArena()) RenderBlock(document() /* anonymous */); - pre->setStyle(newStyle); - pre->setChildrenInline(true); + pre = block->createAnonymousBlock(); madeNewBeforeBlock = true; } - newStyle = new RenderStyle(); - newStyle->inheritFrom(block->style()); - newStyle->setDisplay(BLOCK); - RenderBlock *post = new (renderArena()) RenderBlock(document() /* anonymous */); - post->setStyle(newStyle); - post->setChildrenInline(true); + RenderBlock* post = block->createAnonymousBlock(); RenderObject* boxFirst = madeNewBeforeBlock ? block->firstChild() : pre->nextSibling(); |