Version: 4.3.4 (KDE 4.3.4) (using 4.3.4 (KDE 4.3.4), Gentoo) Compiler: x86_64-pc-linux-gnu-gcc OS: Linux (x86_64) release 2.6.31-gentoo-r6 http://ktorrent.org/forum/viewtopic.php?f=1&t=94 is an example (every page in ktorrent's forums seem to appear the same). Basically, the table-looking bit is off the window to the right, instead of being directly below the "New Topic/Post reply" buttons as they are in other browsers (I just tried Chromium). I'll attach a screen shot.
Created attachment 40227 [details] Screen shot of funky layout
Created attachment 40232 [details] test case
SVN commit 1081435 by ggarand: rework the behaviour of flowing-around-floats objects /wrt floats, to match the general evolution of CSS engines. We used to match mostly Gecko 1.8, but the behaviour has changed a lot in the 1.9 serie. Notably, the clearing of floats by those objects is now allowed even in auto-width containers, and generally uses the computed width. WebCore has some similar logic in recent trunk though the algorithm is a bit wasteful and not so compatible in some aspects, so I only followed part of it. All in all, we agree the most with Opera/MSIE 7+ now (especially considering the table-with-align-attribute behaviour). BUG: 224228 M +26 -10 render_block.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1081435
I took your patch, applied it to my 4.3.5 kdelibs, and the site works fine now. Thanks!
Patch seems not to be applicable to 4.4 - it causes khtml to freeze (likely infinite loop) on some pages here - https://bugs.gentoo.org for instance. Apparently exit conditions within "while (true) { ... }" are not met.
if (!childw || needsRecalc) { int oy = child->yPos(); int ow = child->width(); child->setPos(child->xPos(), cury); child->calcWidth(); childw = child->width(); child->setPos(child->xPos(), oy); child->setWidth(ow); } I don't know the code, but looks like needsRecalc should be set to false before leaving this conditional block: if (!childw || needsRecalc) { [...] childw = child->width(); child->setPos(child->xPos(), oy); child->setWidth(ow); needsRecalc = false; }