[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/khtml-paged
From: Allan Sandfeld Jensen <kde () carewolf ! com>
Date: 2005-08-31 20:17:22
Message-ID: 1125519442.905458.14498.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 455549 by carewolf:
Do all page-breaks at once in layoutBlockChildren as well.
Fix renderTable hack.
M +1 -3 khtml_part.cpp
M +1 -2 khtmlview.cpp
M +11 -24 rendering/render_block.cpp
M +0 -5 rendering/render_box.cpp
M +0 -1 rendering/render_box.h
M +1 -3 rendering/render_object.h
M +2 -8 rendering/render_table.cpp
--- branches/work/khtml-paged/khtml_part.cpp #455548:455549
@@ -1322,15 +1322,13 @@
{
#ifndef NDEBUG
if ( d->m_doc ) {
- d->m_doc->renderer()->printTree();
-#if 0
+// d->m_doc->renderer()->printTree();
// dump out the contents of the rendering & DOM trees
QString dumps;
QTextStream outputStream(dumps,IO_WriteOnly);
d->m_doc->renderer()->layer()->dump( outputStream );
// kdDebug() << "dump output:" << "\n" + dumps << endl;
qDebug(("dump output:\n" + dumps).latin1());
-#endif
}
#endif
}
--- branches/work/khtml-paged/khtmlview.cpp #455548:455549
@@ -2751,7 +2751,6 @@
m_part->xmlDocImpl()->styleSelector()->computeFontSizes(&metrics, 100);
m_part->xmlDocImpl()->updateStyleSelector();
- m_part->xmlDocImpl()->recalcStyle(NodeImpl::Force);
root->setPrintImages( printer->option("app-khtml-printimages") == "true");
root->makePageBreakAvoidBlocks();
// m_part->slotDebugRenderTree();
@@ -2865,7 +2864,7 @@
root->layoutIfNeeded();
m_part->slotDebugRenderTree();
- root->layer()->paint(p, QRect(0, top, pageWidth+2, pageHeight));
+ root->layer()->paint(p, QRect(0, top-1, pageWidth, pageHeight+2));
// m_part->xmlDocImpl()->renderer()->layer()->paint(p, QRect(0, top, \
pageWidth, pageHeight)); // root->repaint();
// p->flush();
--- branches/work/khtml-paged/rendering/render_block.cpp #455548:455549
@@ -674,11 +674,10 @@
}
if (canvas()->pagedMode()) {
- if (pageBottom() > 0)
- kdDebug(6040) << renderName() << " Page Bottom: " << pageBottom() << \
endl; + kdDebug(6040) << renderName() << " Page Bottom: " << pageTopAfter(0) \
<< endl; kdDebug(6040) << renderName() << " Bottom: " << m_height << endl;
bool needsPageBreak = false;
- if (pageBottom() > 0 && pageBottom() < m_height)
+ if (crossesPageBreak(0, m_height))
needsPageBreak = true;
if (needsPageBreak && !containsPageBreak()) {
setNeedsPageClear(true);
@@ -1281,9 +1280,7 @@
RenderObject* legend = layoutLegend(relayoutChildren);
bool forcePageBreak = false;
- bool isPaged = canvas()->pagedMode();
- int pageBottom = this->pageBottom();
- bool beforeBottom = (pageBottom > 0);
+ int pageBottom = pageTopAfter(0);
RenderObject* child = firstChild();
while( child != 0 )
@@ -1334,8 +1331,8 @@
// If a child have been cleared from the bottom on a earlier page-layout,
// it needs to be placed there again.
- if ( canvas()->pagedMode() && beforeBottom && child->afterPageBreak() ) {
- int top = pageTop(static_cast<RenderBlock*>(child)->firstInPage());
+ if ( canvas()->pagedMode() && child->afterPageBreak() ) {
+ int top = pageTopAfter(yPosEstimate);
yPosEstimate = top;
m_height = top;
}
@@ -1370,7 +1367,7 @@
#endif
// Check for page-breaks
- if (isPaged && beforeBottom) {
+ if (canvas()->pagedMode()) {
int childTop = child->yPos();
int childBottom = child->yPos()+child->height();
kdDebug(6040) << renderName() << " ChildTop: " << childTop << " \
ChildBottom: " << childBottom << endl; @@ -1381,7 +1378,7 @@
{
if (!forcePageBreak && child->containsPageBreak() && \
!child->needsPageClear()) { kdDebug(6040) << "Child contains page-break" << endl;
- // Actually this assumes floating children are breaking
+ // ### Actually this assumes floating children are \
breaking/clearing // nicely as well.
setContainsPageBreak(true);
}
@@ -1404,7 +1401,7 @@
setContainsPageBreak(true);
}
}
- beforeBottom = false;
+ pageBottom = pageTopAfter(pageBottom+1);
}
else
if (child->yPos() >= pageBottom) {
@@ -1421,10 +1418,9 @@
}
if (doBreak) {
// Break between children
- clearPageBreak(child, pageBottom);
setContainsPageBreak(true);
}
- beforeBottom = false;
+ pageBottom = pageTopAfter(pageBottom+1);
}
}
@@ -1550,12 +1546,6 @@
paintLineBoxBackgroundBorder(pI, _tx, _ty);
- if (canvas()->pagedMode())
- if (pI.r.y() < pageBottom() && pI.r.y()+pI.r.height() >= pageBottom()) {
- pI.p->setPen(Qt::red);
- pI.p->drawLine(pI.r.x(), _ty+pageBottom(), pI.r.x()+pI.r.width(), \
_ty+pageBottom());
- }
-
// 2. paint contents
int scrolledX = _tx;
int scrolledY = _ty;
@@ -1766,11 +1756,8 @@
{
int top = y;
int bottom = y + o->height();
- if (top < pageTop() && bottom > pageTop()) {
- y = pageTop();
- } else
- if (top < pageBottom() && bottom > pageBottom()) {
- y = pageBottom();
+ if (crossesPageBreak(top, bottom)) {
+ y = pageTopAfter(top);
}
}
--- branches/work/khtml-paged/rendering/render_box.cpp #455548:455549
@@ -1615,11 +1615,6 @@
return (isRoot()) ? canvas()->pageTop() : parent()->pageTop() - m_y;
}
-int RenderBox::pageTop(int page) const
-{
- return (isRoot()) ? canvas()->pageTop(page) : parent()->pageTop(page) - m_y;
-}
-
int RenderBox::pageTopAfter(int y) const
{
return (isRoot()) ? canvas()->pageTopAfter(y) : parent()->pageTopAfter(y+m_y) - \
m_y;
--- branches/work/khtml-paged/rendering/render_box.h #455548:455549
@@ -117,7 +117,6 @@
virtual int pageTop() const;
virtual int pageBottom() const;
- virtual int pageTop(int page) const;
virtual int pageTopAfter(int y) const;
virtual bool crossesPageBreak(int t, int b) const;
--- branches/work/khtml-paged/rendering/render_object.h #455548:455549
@@ -429,13 +429,11 @@
virtual int pageTop() const { if (parent()) return parent()->pageTop(); else \
return 0; }
virtual int pageBottom() const { if (parent()) return parent()->pageBottom(); \
else return 0; }
-
- virtual int pageTop(int page) const { if (parent()) return \
parent()->pageTop(page); else return 0; }
virtual int pageTopAfter(int x) const { if (parent()) return \
parent()->pageTopAfter(x); else return 0; }
virtual void markForPageLayout(int /*pageTop*/, int /*pageBottom*/) { \
setNeedsLayout(true); } // virtual void markForPageLayout() { \
setNeedsLayout(true); }
- virtual bool crossesPageBreak(int /*y*/, int /*h*/) const { return false; }
+ virtual bool crossesPageBreak(int /*top*/, int /*bottom*/) const { return false; \
}
// Checks if a page-break before child is possible at the given page-break level
// false means the child should attempt the break self.
--- branches/work/khtml-paged/rendering/render_table.cpp #455548:455549
@@ -386,7 +386,7 @@
void RenderTable::paint( PaintInfo& pI, int _tx, int _ty)
{
-// if(needsLayout()) return;
+ if(needsLayout()) return;
_tx += xPos();
_ty += yPos();
@@ -1373,12 +1373,6 @@
cell->setChildNeedsLayout(true, false);
cellChildrenFlex = true;
}
- else
- if (canvas()->pagedMode()) {
- // we need to redo page-break logic
- if (o->yPos() < pageBottom() && o->yPos()+o->height() > \
pageBottom())
- o->setNeedsLayout(true);
- }
o = o->nextSibling();
}
if (cellChildrenFlex) {
@@ -2419,7 +2413,7 @@
kdDebug( 6040 ) << renderName() << "(RenderTableCell)::paint() w/h = (" << \
width() << "/" << height() << ")" << " _y/_h=" << pI.r.y() << "/" << pI.r.height() << \
endl; #endif
-// if (needsLayout()) return;
+ if (needsLayout()) return;
_tx += m_x;
_ty += m_y/* + _topExtra*/;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic